CSCIX370: Database Management (Spring 2014)

Course content:

CSCIX370 provides the student with a comprehensive introduction to the design of databases and the use of database management systems for applications. The course presents two perspectives on database management: (1) internal workings of a database management system, and (2) application development using a database server. To support 1st perspective the students are asked to build a prototypical database system from scratch using Java programming language in several steps. To support 2nd perspective the students are requested to develop a web-based database application to store and query various types of data of their choice. Both type of projects will be team-based and expose students to collaborative nature of database programming.

Throughout the course we will cover the relational model and, and SQL - the standard language for creating, querying, and modifying relational and object-relational databases. From a more theoretical perspective we will cover relational algebra, relational design principles based on functional dependencies and normal forms, and the entity-relationship approach to database design. A variety of other issues important to database designers and users will be covered, including indexes, transactions, and integrity constraints. Physical data organization, various indexing techniques and their advantages and disadvantages at certain situations will be discussed. Basics of query processing and optimization will be presented as time permits. At different stages in the course, we will address several practical topics such as using MySQL, programming in SQL, JDBC and other database tools.

Time & Place:

CSCIX370 meets Wednesdays, 10:10 - 11:00 (GSRC 306), Tuesdays, and Thursdays, 9:30 - 10:45 (Hardman 101).


The programming projects will use Linux/Windows/Mac and MySQL or PostgreSQL database management systems, and the Java programming language. We will assume students are already proficient in Java.

Course Staff:

Lines of Communication:

All inquiries regarding the course can be sent to instructor or TA. There is also a class mailing list (in ELC): This list is used for staff to communicate with students. We ask all students to place themselves on this mailing list, and we will not hesitate to use this list to convey important and timely information. Students can post messages on this list. It is also for students to post messages with technical or logistical questions regarding the course that are expected to be of interest to most students, and for staff members to post their replies.


  1. Overview of Databases and Transactions (Ch. 1)
  2. The Big Picture (Ch. 2)
  3. Relational Model (Ch. 3: 3.1-3.2)
  4. Relational Algebra (Ch. 5: 5.1)
  5. Physical Data Organization (Ch. 9: 9.1-9.3)
  6. Indexing (Ch. 9: 9.4-9.8)
  7. The Basics of Query Processing (Ch. 10: 10.1-10.5)
  8. An Overview of Query Optimization (Ch. 11: 11.1-11.3)
  9. SQL: Data Definition Language (DDL) (Ch. 3: 3.3)
  10. SQL: Query Language (QL) (Ch. 5: 5.2-5.3)
  11. Conceptual Modeling (ER) (Ch. 4)
  12. Relational Normalization Theory (Ch. 6: 6.1-6.8)
  13. Transaction Processing (A Summary of Part V)


One textbook is required for the course.

Students may also opt to purchase a book about the SQL database language.


The components of the final grade will be distributed as follows (subject to adjustments):


Lectures in all topics is complemented by a significant term project for developing a database application using MySQL (or PostgreSQL), and a set of smaller projects in which students build a prototype database system. The term project will require a proposal (application and Web framework) and must be approved before implementation.

Each project group will include 4 (or 5) members. Each project contains detailed submission instructions as well as some test data and grading criteria. The source code templates for the projects can be found [here] (a courtesy of Prof. John Miller). Also. team members need to submit (through e-mail) peer evaluation forms at the time of a project submission.


Tool Talks:

Late Policy:

Programming work will be submitted electronically, and must be submitted by midnight on the date that it is due. Programming work submitted after the deadline but less than 24 hours late will be accepted but penalized 10%, programming work submitted more than 24 hours but less than 48 hours late will be penalized 20%, and programming work submitted more than 48 hours but less than 72 hours late will be penalized 30%. No programming work will be accepted more than 72 hours late. THIS LATE POLICY WILL BE STRICTLY ENFORCED.

Regrade Policy:

Please send an email message to TA stating that you believe you deserve a project part regrade, and explaining precisely why. Please include your name, and the number of the project part in question.

Programming Work:

Eeach team is expected to submit their own original work. On many occasions it is useful to ask others (the instructor, the TA's, or other students) for hints or debugging help, or to talk generally about programming strategies. Such activity is both acceptable and encouraged, but you must indicate any assistance (human or otherwise - except liserv discussions/TA/instructor help) that you received. In any event, you are responsible for coding, understanding, and being able to explain on your own all project work that you submit. We will pursue aggressively all suspected cases of Honor Code violations, and they will be handled through official University channels. If you have any questions about this policy or about the degree to which we will pursue Honor Code violations, please discuss your concerns with the course staff immediately.