As the first introductory course for databases, this course studies the fundamentals of using and implementing relational database management systems. First, from the user perspective (i.e., how to use a database system), the course will discuss conceptual data modeling, the relational and other data models, database schema design, relational algebra, and the SQL query language. Further, from the system perspective (i.e., how to design and implement a database system), the course will study data representation, indexing, query optimization and processing, and transaction processing.
Background: CS 225. Programming: For projects, you will do some significant application programming, with both SQL and some host languages of your choice (e.g., C, C++, Java, PHP). We will not cover programming-specific issues in this course.
Database Systems: The Complete Book, 2nd edition, by Hector Garcia-Molina, Jeffrey D. Ullman, and Jennifer D. Widom.
See the book's home page for errata, selected solutions, and other reference materials. The textbook will be used very significantly in the course.
Read the textbook for the required reading before lectures, and study them more carefully after class. Please note that all the required readings are fair materials for exams. These materials may not be fully covered in lectures; that does not make them 'outside the syllabus'. Our lectures are intended to motivate as well as provide a road map for your reading-- with the limited lecture time we may not be able to cover everything in the readings.
There are expected to be five written assignments, spaced out over the course of the semester.
There will be a semester-long project, which involves significant database application programming. The project will be structured with several milestones due in the course of the semester, leading to a demo and write-up near the end of the semester.
There will be two exams: midterm and final. We will not normally give make-ups for missed exams; please see the policies.