CS143: Database Systems

http://cs143.cs.ucla.edu

Spring 2006

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

We have two sections in the Spring quarter of 2006. We plan to synchronize the two sections as much as we can, but we do not recommend students to alternate between the sections, because there may be slight differences in the class progress.

  Section 1 Section 2
Class hours MW 10-12AM MW 2-4PM
Class location Boelter 2444 Franz 2258A
Lab hours F 10-12AM F 8-10AM
Lab locations Boelter 2760 Boelter 5440

People

We have one instructor and two TAs for the two sections of CS143.

Instructor

Name Junghoo "John" Cho
E-mail cho@cs.ucla.edu
Office 3532E Boelter Hall
Office hours Mon 4-5PM, Tue 4-5PM

TAs

  TA 1 TA 2
Name Feng Qiu Alexandros Ntoulas
E-mail fqiu@cs.ucla.edu ntoulas@cs.ucla.edu
Office hours Wed 2-3PM, Thu 2-3PM Mon 1-2PM, Tue 1-2PM
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:

Although the above textbook is officially required, a number of students in previous years expressed that they actually did not need to purchase the book in order to follow the class.

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.