What is new?

December 17, 2009:
Final exam scores posted.

CSCI4370/6370: Database Management

Course content:

CSCI4370/6370 provides the student with a comprehensive introduction to the design of databases and the use of database management systems for applications. 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 and object-oriented approaches to database design. A variety of other issues important to database designers and users will be covered, including indexes, views, transactions, and integrity constraints. Various indexing techniques and their advantages and disadvantages at certain situations will be discussed. 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:

CSCI4370/6370 meets Mondays, 11:15 - 12:05 (GSRC 306), Tuesdays, and Thursdays, 11:00-12:15 (GSRC 306).


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

Course Staff:

Lines of Communication:

All inquiries regarding the course can be sent to instructor or TA. The general course e-mail address will be announced shortly. This address is monitored continuously by the course staff.

There is also a class mailing list: 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. The students join the list by going to course home page (will be announced later).


  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. JDBC (Ch. 8: 8.5)
  12. Conceptual Modeling (ER and UML) (Ch. 4)
  13. Relational Normalization Theory (Ch. 6: 6.1-6.8)
  14. 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, 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 2 members. Each project page contains detailed submission instructions as well as some test data and grading criteria.

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.