Office hours: W 2-4 and by appointment (249 Sci Ctr)
A major component of this course is a project that involves implementing and testing components of a relational database management system. By the end of the semester you will have implemented most parts of a simple relational DBMS. The course project will be in C++. You do not need to know C++ to take this class, but you should know C. If you do not know C, or if it has been awhile since you've programmed in C, I encourage you to look at some C programming references before the start of the semester.
Prerequisite: CPSC 035, experience in C or C++ (usually satisfied by completing CPSC 025 or 033). CPSC 025 or CPSC 033 are recommended.
|WEEK||DAY||ANNOUNCEMENTS||TOPIC||READING & HOMEWORK|
|1||Sep 03||Wed class in room 252 (Sep 05)||Introduction to Databases and C++||Chapt. 1
|2||Sep 10||add/drop ends (Sep 14)||Data Storge||Chapt. 8.1, 8.2, 9
|3||Sep 17||ER Model||Chapt. 2
Written HW 1
|4||Sep 24||Relational Model||Chapt. 3
Written HW 2
|5||Oct 01||Relational Model, Indexing||Chapt. 8 (skip 8.5), 10
Written HW #3
|6||Oct 08||Indexing||Chapt. 10, 11.1-11.2|
|7||Oct 22||Indexing (cont.)||Chapt. 11|
|8||Oct 29||Relational Algebra||Chapt. 4.1-4.2
Written HW #4
Midterm Tues 7-9pm, 264 Sci Center
|9||Nov 05||SQL||Chapt. 5.1-5.7|
|10||Nov 12||no class nor office hours Wed (Nov 14)||SQL, External Sorting and Query Evaluation||Chapt. 13, 12.1-12.3|
|11||Nov 19||Thanksgiving break (Nov 23)||Query Evaluation||Chapt. 12.4-12.6
Written HW #5
|12||Nov 26||Query Optimization||Chapt. 14
|13||Dec 03||Transaction Management and Crash Recovery||Chapt. 16, 17|
|14||Dec 10||Crash Recovery, Advanced Topics||Chapt. 17|
Final Exam (9am-12pm) room 264 Sci Center
|50%||Homework and project assignments|
I will provide a brief overview of the language during the first week of class. However, you are responsible for learning C++ on your own. If you know C and Java, much of the C++ language easily can be learned from a good language reference and/or an on-line C++ tutorial (see my C++ help links). There are many advanced features of the C++ language that you do not need to know to implement the project; we will use just the basic object-oriented features of C++. Most of your effort will involve learning C++'s syntax for defining classes and method functions, and remembering that you, the programmer, are responsible for specifying your program's memory management (allocation, initialization, bounds checks, deallocation, etc).
There are several C++ language references that are available for you to use while you are working in the CS Lab. If you want to buy your own, here are some recommendations (note the second one is free):
Please read through the"Computer Lab Rules" under the "Introductions" section of the CS help pages.
In addition, I recommend using some type of revision control software to help you coordinate shared accesses to project files by you and your partner and to allow a way for you to back-up working versions of your code. I'd recommend using CVS. However, RCS is also available on our systems. See the Class Resources section for more information.
Programming assignments will be submitted on-line using
You can submit the same assignment multiple times
up to the due date using cs44handin. Once you have
submitted your solution to an assignment, make sure to
keep a copy of it that you will not modify after you submit it (this way if
something goes wrong with cs44handin I can use the dates of your solution
files to determine when you submitted your solution).
You and your partner are allowed to use up to 3 late days this semester for turning in programming assignments. However, you only may use up to 2 late days on an individual assignment. One day late means turned in before the original time the assignment was due on the next day class meets. For example, if the original assignment is due Wednesday before 2am, then if you submit it after Wednesday at 2am but before Friday at 2am it is one day late.
Use late days wisely; once you have used up your 3 days I reserve the right to not accept any further late assignments from you, and if I do accept further late assignments from you, you will receive a significant late penalty.
Discussing ideas and approaches to problems with others on a general level is fine (in fact, we encourage you to discuss general strategies with each other), but you should never read anyone else's code or let anyone else read your code. If you are in doubt about some help that you received, then credit the person(s) from whom you got help by citing them in a comment at the top of the file and discuss the situation with your instructor.
For this class you may discuss the programming assignments and general solution strategies with any class member. You may help each other with understanding Minibase code that we give you, and you may help each other with general C++ language problems, and with general compiling and linking problems. It is discussing the details of your project and homework solutions and coding strategies that you need to avoid. You may not share your own code with anyone but your partner; do not look at anyone else's code and do not let anyone else look at your code.