Database Systems
Computer Science 311
Spring, 2020
- Instructor: John L.
Donaldson (john.donaldson@oberlin.edu)
- Office: King 231
- Office hours: MWF 11 am - noon (or by
appointment)
- Meeting time:
MWF 2:30-3:20, King 243
- Prerequisite: CSCI 151 (Data Structures)
- Textbook: Garcia-Molina, Ullman, and Widom, Database
Systems: The Complete Book, Prentice Hall, second
edition, 2009.
- References:
- Sullivan, NoSQL for Mere Mortals,
Addison-Wesley, 2015.
- Sciore, Database Design and Implementation, Wiley,
2009.
Course Objectives
- To learn basic tools of database design and modeling, with
emphasis on the relational model.
- To learn database programming using SQL. In addition,
students will learn how to interact with a database system using
other programming languages such as Java and PHP.
- To learn how database management systems are implemented.
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:
- Assignments that are submitted one day late will be assessed a
10% penalty.
- Assignments that are submitted two or three days late will be
assessed a 40% penalty.
- Assignments more than three days late will not be accepted.
- However, you have 2 Late Lab Exceptions that allow you to hand
in an assignment up to 3 days late without penalty.
To use such an exception, include a text file in the folder you
are handing in, with file name LateLabException.txt. (A
late lab exception may not be used to submit an assignment more
than 3 days late.) The body of this file should say "This
is my 1st (or 2nd) exception." Note that these exceptions
cover any reason for being late with your work, such as "I was
sick over the weekend", "I needed to travel to a job interview",
or "My dog ate my laptop."
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:
- ask questions about the requirements of an assignment
- discuss with your classmates general approaches to solving a
problem prior to
starting your own design and coding
- get/give help from/to another student in solving a
particularly tough debugging problem
Don't:
- obtain a copy of another student's code or homework answers
(including a student who has taken the course before)
- give a copy of your code or homework answers to another
student (including a student taking the course in the future)
- collaborate with a partner or group to work on an assignment
together
- discuss an exam in any way with another student who may be
taking the exam at another time
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
- Basic concepts. Data models. Historical
background. DBMS architecture. (chapter 1)
- The relational model. Relational algebra. (chapter
2)
- Relational database design. Functional dependencies and
normal forms. (chapter 3)
- High-level database design. The Entity-Relationship
model. (chapter 4)
- Database programming. Extended relational algebra.
SQL. (chapters 5-6)
- SQL data definition. Keys. Constraints and
triggers. Views and indexes. (chapters 7-8)
- Connecting to an SQL database with other programming
languages. SQL/PSM. JDBC. (chapter 9)
- Object-oriented database design and programming. (chapter 10)
- XML as a database language. (chapters 11-12)
- NoSQL databases. Redis. JSON. MongoDB.
- Web access and PHP.
- Database implementation: storage structures.
(chapters 13-14)
- Database implementation: query processing.
(chapters 15-16)