CS143: Database Systems

Fall 2009

Course Description

The goal of CS143 is to introduce students to relational database systems (RDB) and teach them how to use them for applications. Through the class, students will learn the RDB model and the SQL language. SQL is the standard language for the creation, query and modification of relational databases. In addition to the practical knowledge of RDB, students will learn the theoretical aspect of RDB including relational algebra, relational design principles (functional dependency and normal forms), and the entity-relationship database design. Finally, students will learn the performance and design aspects of RDB, including disk and file systems, indexes, transactions, and integrity constraints.

To help students digest the materials learned in the class, we will assign:

Time and Place

There is only one section of CS143 this quarter.

 

Section 1

Class hours

MW 4-6 PM

Class location

MW 4:00 PM - 5:50 PM BOELTER 2444

DIS Sec

Fr 4:00 - 4:50 PM, BH 2760

Instructor

Name

Carlo Zaniolo

E-mail

zaniolo at cs.ucla.edu

Office

3532G Boelter Hall

Office hours

Tue 3-5PM

TA

Name

Nikolay Laptev

E-mail

nikolay at cs.ucla.edu

Office hours

TH 3-5 PM

Office

4428 Boelter Hall

Prerequisites

CS143 should be accessible to a student with a solid Computer Science foundation that includes resonable proficiency in programming and working knowledge of basic Computer Science theory (as in CS31/32). That is, you should feel comfortable with the basic data structures and algorithms in Computer Science (e.g., hash table, graphs, trees, sorting algorithms, set theory) and should feel comfortable doing a fair amount of programming in C/C++/Java. Math61 (Discrete Structures), CS180 (Algorithms), and CS131 (Programming Languages) are expected but not absolutely required.

The programming project will use IBM DB2 database management system and Java programming language. We will assume students are already proficient in and Java or are able to learn it during the quarter. While this may sound unreasonable expectation, please note that Java is easy to learn for the students familiar with C++. Our project requires a very limited subset of Java, so you do not need to know all the corners and special cases of Java, and we will provide links to online resources to help you learn the language for the project. Many students in prior years were able to successfully finish the class projects even though they did not know much Java in the beginning of the quarter. If you are a good C++ programmer, we expect that you will be able to finish the class projects in a reasonable amount of time. We also assume that students are already familiar with the UNIX command line interface. We do NOT expect any prior experience with relational database systems (such as DB2).

Books

One textbook is required for the course:

Students who want to purchase a book about IBM DB2 or the SQL database language may find the books useful, although they are not required textbooks of the course:

There are many useful online resources for DB2, SQL and Java. We will provide some of the useful links on the course homepage.

Grading

The final grade will be assigned based on the following criteria:

The final grading will be done based on the curve. Roughly 30% students will get A, 40% B and the remaining 30% C or D.

Alternate Exams

Please note that routine alternate exams will not be offered in CS143. The university strongly discourages students from enrolling in two classes given at the same time, and instructors are under no obligation to accommodate such students. If you provide an extraordinarily compelling case then an alternate exam may be given, but alternate exams are always oral exams given by the instructor privately in his office.

Project partners

A significant part of the course activity is to finish an implementation of an online move database supported by IBM DB2. Students may implement the project individually or in teams of two. The choice is up to each student, but please keep the following rules in mind when you select your project partner:

An identical amount of work is expected and the same grading scale is used for individual and team projects. Faculty experience indicates that in general it is not necessarily easier or more productive to work in teams of two - it's largely a matter of personal preference and working style.

If you work in a team, choose your partner carefully. Teams are permitted to "divorce" at any time during the course (due to incompatibility, one partner dropping the course, or any other reason), and individual students may choose to team up as the project progresses, however students from divorced teams may not form new teams or join other teams. Put another way, if a student turns in any part of the project as part of a team, every later part of the project must be turned in individually or as part of the same team.

Both partners in a team will receive exactly the same grade for each project part turned in jointly. We will not entertain any complaints of the form "I did all the work and my partner did nothing." Choose your partner carefully!

If you work in a team, your work must be turned in jointly, as one submission. Teamwork turned in as individual work will be considered as plagiarism and handled through official University channel.