Database Systems

Computer Science 311
Spring, 2020

Course Objectives

Grading Procedures

Your grade will be based on homework, programs, and two exams.

Point breakdown (tentative):
Programs/Homework 200
Midterm Exam (take home, due March 18) 100
Final Exam (take home, due May 16, 10 pm) 150
Total 450

Policies

Assignments in the course will consist of written problem sets and hands-on labs.

Late assignments are strongly discouraged, but will be accepted subject to the following limitations:

You are strongly encouraged to turn in all of your assignments on time.  Be sure to get started early!

Regular class attendance and participation is expected.  Excessive absence may result in a lower final grade.

Student Disabilities

If you have a disability that might impact your performance in this course, or requires special accommodation, please contact me as soon as possible so that appropriate arrangements can be made.  Support is available through Student Academic Services.  You will need to contact them to get your disability documented before accommodations can be made.

Academic integrity

All work in this course is to be performed in accordance with the college's Oberlin Honor Code.  You must write the Honor Pledge and sign it at the end of every submission.  Electronic submissions must include the honor pledge in the comments and your name.  The pledge is "I have adhered to the Honor Code in this assignment."

In particular, on all of the exams you are responsible for your own work; you may neither give nor receive aid during the course of the exam.  No electronic devices are permitted in exams.

That being said, in a hands-on course such as this one, some discussion of lab assignments is expected and encouraged.  A few specific do's and don't's:

Do:
Don't:
In the end, the work you submit must be your own.  If you're not sure what is acceptable in a given situation, please ask me about it.

Course outline

  1. Basic concepts.  Data models.  Historical background. DBMS architecture.  (chapter 1)
  2. The relational model.  Relational algebra.  (chapter 2)
  3. Relational database design.  Functional dependencies and normal forms.  (chapter 3)
  4. High-level database design.  The Entity-Relationship model. (chapter 4)
  5. Database programming.  Extended relational algebra.  SQL.  (chapters 5-6)
  6. SQL data definition.  Keys.  Constraints and triggers.  Views and indexes.  (chapters 7-8)
  7. Connecting to an SQL database with other programming languages.  SQL/PSM.  JDBC.  (chapter 9)
  8. Object-oriented database design and programming. (chapter 10)
  9. XML as a database language.  (chapters 11-12)
  10. NoSQL databases.  Redis.  JSON.  MongoDB.
  11. Web access and PHP.
  12. Database implementation:  storage structures.  (chapters 13-14)
  13. Database implementation:  query processing.  (chapters 15-16)