CS145 - Fall 2013
Introduction to Databases

Course Content
CS145 provides the student with a comprehensive introduction to database design and the use of database management systems for applications. We will cover the relational model, relational algebra, and SQL. We will also learn about XML data including DTDs and XML Schema for validation, and the query and transformation languages XPath, XQuery, and XSLT. The UML approach to database design will be covered, as well as relational design principles based on dependencies and normal forms. A variety of other key database topics from the design and application-building perspective are also covered: indexes, views, transactions, authorization, integrity constraints, triggers, on-line analytical processing (OLAP), JSON, and emerging NoSQL systems. Guest speakers from industry will explain commercial needs and trends in data management, complemented by Stanford speakers describing cutting-edge research.

Flipped-Classroom Approach
CS145 uses a "flipped classroom" approach. Students are expected to learn the core material on their own through online videos and support materials. Class meetings are not conventional lectures; rather, they include interactive learning activities, industry guests, research talks, review and help sessions. On average (but with considerable variance), about 90 minutes of video content is assigned each week. Some students stop the videos frequently or watch them multiple times, while other students watch them using the speedup feature, so the time required for video-watching does vary from student to student. To keep the course's overall time commitment reasonable, class meetings are generally under an hour, and only a subset of the classes are required. The flipped-classroom approach has been used for CS145 for the past two offerings, with students have reacted very positively.

Class Meetings
CS145 meets Mondays and Wednesdays, 11:00-12:15 in the NVIDIA Auditorium on the lower level of the Huang Engineering Center. We expect to keep most class meetings to one hour, finishing around noon. The first class is on Monday September 23.

Students must attend at least eight classes, not counting the first class and the midterm exam.

Which eight classes each student chooses to attend is up to the student. Attendance is taken at each class, and there are no "excused absences" -- attending eight classes is a modest expectation. Attendance counts for 4% of the final grade. SCPD students are welcome to attend class if they wish, but they are exempt from the attendance requirement.

CS103 (Mathematical Foundations of Computing) and CS107 (Computer Organization and Systems) are recommended but not absolutely required. CS145 should be accessible to anyone with a solid computer science foundation -- a reasonable amount of programming (as in CS107) and knowledge of basic computer science theory (as in CS103). The programming project will use Unix, Java or Python, the SQLite database management library, and some straightforward PHP web programming. We will assume that students are already proficient in Java or Python, and we'll provide an early tutoring session for students new to Unix. Previous experience with SQLite or PHP is not needed.

No textbook is required for the course, but students may want to use a textbook to augment and reinforce the core material covered in the videos, as well as for reference and a source of additional exercises. We provide a list of recommended readings in the four most commonly-used database textbooks, cross-referenced by topic.

Naturally given a choice we recommend our own textbook(s):

A First Course consists of the first twelve chapters of The Complete Book, verbatim, and all CS145 topics appear in these chapters. The Complete Book is the required textbook for CS245 (Database System Principles). If there is any chance you will eventually take CS245, or if you wish to have a comprehensive reference that covers databases from a systems as well as a user perspective, then you should purchase The Complete Book. Otherwise, A First Course suffices for CS145. The first two chapters may be downloaded for free from either of the book web sites linked above. Also, two copies of The Complete Book are on reserve at the Huang Center Engineering Library.

If you already own or prefer to use a different database textbook, any of the following three textbooks should do. While they don't cover precisely the same topics in precisely the same fashion as our own book does, much of the core material is the same.

The components of the final grade will be distributed as follows:

The 54% for Assignments further breaks down into:

Students earning an A+ in the course (typically 6-8 students) will receive a personal letter of congratulations from the instructor, along with an invitation to enjoy lunch at the Stanford Faculty Club with the instructor, the TAs, and the other A+ students. The A+ students also will be top candidates for CS145 TA positions in subsequent offerings of the course.

Incompletes are not offered as a grade option in CS145. Students are given incompletes only in the rare case of an incapacitating medical condition arising during the quarter and brought to the attention of the course staff in a timely fashion.

Students with Documented Disabilities
Students who may need an academic accommodation based on the impact of a disability must initiate the request through the Office of Accessible Education (OAE). OAE staff will evaluate the request with required documentation, recommend reasonable accommodations, and prepare an Accommodation Letter for faculty dated in the current quarter in which the request is being made. Students should contact OAE as soon as possible since timely notice is needed to coordinate accommodations: 563 Salvatierra Walk; phone 723-1066.

Special Note for SCPD Students
While we understand the significant demands of taking a course while working, we would like to make it clear at the outset that no special exceptions can be made for SCPD students. SCPD students must complete the automated quizzes and exercises, turn in the assignments, and take the exams (locally or remotely) on exactly the same schedule as on-campus students. SCPD students must respect staff office hours. Except for being exempt from the class-attendance requirement, SCPD students are graded using exactly the same criteria as on-campus students. Please ensure in advance that you will not have any business trips or important deadlines that conflict with the course, since no exceptions will be made. Like on-campus students, for emergencies you are allocated four unpenalized late days for written assignments and project parts.