Syllabus -- COP6726 SP2011

Meeting Time/Place: MWF 4th Period (10:40AM to 11:30AM) in CSE 118

Prerequisites: COP 4600 and 4720, 4301, or 5725, plus C/C++ experience

Instructor: Prof. Alin Dobra

Email: adobra at cise.ufl.edu

URL: http://www.cise.ufl.edu/~adobra/

Office: Room E434 CSE Building

Phone: (352) 514-0743

Office hours: Mon. 1:00-3:00pm

Catalog Description: Covers DBMS architecture, query processing and optimization, transaction processing, index structures, parallel query processing, object-oriented and object-relational databases, and related topics.

Informal Course Description: The course will cover database system internals such as access structures and indexing, query evaluation, query optimization, recovery, and concurrency control in traditional database systems. We will not have time to cover object-oriented and object-relational database systems, even though they are listed in the catalog description. By the time you are through with the class, you will have a very good idea how real-life, industrial-strength database systems such as Oracle, DB2, and SQL Server function. The course will be organized around a substantial software development project that will count for most of the final class grade. In this project, the goal will be to design and implement a single-user database management system that supports a subset of SQL and some basic relational algebra operations (select, project, and join). The project will be implemented in small groups of two or three students. If you are interested in taking the course, you should have already taken CIS 4301 or COP 4720 or COP 5725, or you should be familiar with the material from one of those courses, and you should have had an undergraduate OS class. Also, you should be prepared to implement a large piece of software in pseudo-object-oriented style using C++ (sorry, but real systems programmers don't use Java!). If you know how to program in C or C++ already, then you should have the background that is necessary. However, if you only know Java (and have not used pointers in C or C++), then there will be a steep learning curve on the very first assignment. If you only know Java, I would consider taking the class only if you are very confident in your abilities as a programmer.

Grading: 70% of your grade in the course will come from the project, and 30% of your grade will be from a series of short, multiple-choice quizzes that you can take every Friday in Sakai. You can expect 10 quizzes, and you can drop the two lowest scores. Since you can drop the two lowest scores, no make-ups are allowed.

The project is divided into seven milestones, and graded as follows:

  1. Heap File Implementation (10% of total grade; due 3rd week)
  2. Sorted File Implementation (20% of total grade; due 6th week)
  3. B+-Tree Implementation (5% extra credit and is optional; due 8th week)
  4. Query Evaluation Algorithms (10% of total grade; due 9th week)
  5. Implementation of Query Optimizer/Compiler (15% of total grade; due 13th week)
  6. Completed DBMS (15% of total grade; due at final time)

Note that all group members receive the same grade on each milestone. Groups are chosen by you, and an important part of the class is managing group resources and keeping your fellow group members involved and happy. You are free to change around groups and group members in any way that you want, as long as it is in the week following an assignment deadline.

Letter Grades: I will assign letter grades using the following scheme:

Warning: I can guarantee that this will be one of the most rewarding and useful classes you will take as Florida CISE student. The fact that the class has been full for months shows how positive the experience was for students who took the course last year, and that they shared their positive experiences with others. But be forewarned: the class is a tremendous amount of work. Successful project groups last year wrote between 5000 and 7000 lines of source code over the semester. If you are taking a PhD core course this semester along with DBI, you will have your hands full. If you are taking two core courses along with DBI (especially if you are taking PLP), you will have an insane amount of work - I would not recommend this (though a couple of students did survive this ordeal last year). You should expect to average a solid 12 to 15 hours of work outside of class per week on this course, and this will include a lot of 8 to 10 hour weeks, along with a couple of 40-hour weeks. More than once, you will find yourself in the lab at 4AM working in the project. Most students would agree in the end that it was worth it. However, if you cannot devote this much time and energy to the class, then you should not take this course.

Optional Textbook:

Database System Implementation by Garcia-Molina, Ullman, and Widom (Prentice Hall, 2000 or 2008)

OR

Database Systems, The Complete Book by Garcia-Molina, Ullman, and Widom (Prentice Hall, 2002).

The first book is the one that will be available in the bookstore. The only difference between these two books is that DSTCB has 10 additional, introductory Chapters that DSI does not contain. We will not specifically deal with these additional Chapters. However, they do serve as a useful reference, especially if you have not taken COP 4720, COP 5725, or CIS 4301 recently. Either book is appropriate for use as a reference with the course.

Since the list price of the book is around $90, you might want to consider trying to find a used version of the book on the web. A quick check on Amazon.com shows that there are many copies available out there.

Mailing List and Web Page: The class will make extensive use of a mailing list to disseminate information. It is absolutely mandatory that you sign up for the list and monitor it closely. The class will also have a web page (not yet up) that will be used to post assignments and other "big" pieces of information.

Academic Dishonesty: There are versions of the source code for implementing various portions of the class project floating around out there. It is absolutely prohibited for you to refer in any way, shape, or form to one of those implementations when you are working to complete the course project. Any cases of academic dishonesty will be prosecuted to the fullest extent possible.

Class Attendance: Class attendance will not be recorded and will not affect your grade, but it is assumed that all students will attend all class meetings. Since I lecture using a blackboard and chalk (not PowerPoint), I do not post my notes on the Internet. If you cannot attend class, it is your responsibility to talk to other students to make sure that you have a copy of all of the class notes and are aware of all important announcements from the class that you missed.

Students with Disabilities: Students requesting classroom accommodation must first register with the Dean of Students Office. The Dean of Students Office will provide documentation to the student who must then provide this documentation to me when requesting accommodation.