CS357 -- Spring 2008 Syllabus
Goals of this Course
A database system (such as Oracle, Microsoft Access, or MySQL) is an
amazingly sophisticated piece of software. It must contain:
- a language compiler/interpreter, for processing user queries;
- query rewrite strategies, for transforming inefficient queries
into more efficient ones;
- complex algorithms for indexing data, to support fast access;
- a separate file system from that of the operating system, for
managing the disk efficiently;
- recovery mechanisms, for ensuring database integrity when the
system crashes;
- the ability to handle concurrent accesses from multiple users.
The purpose of this course is to examine these issues. We will
not use a commercial database system. Instead, we will look at the
guts of a small database system, written in Java. This
database system is structured the same as a commercial database system,
but we will be able to modify, improve, and extend it in any way that we
like.
This course has several goals beyond the study of database systems
principles. The algorithms you learn will be useful in building
other systems and applications. And you get to improve your Java
programming skills.
This course requires only a good knowlege of Java programming, at
the CS102 level. You do not need experience using a commerical
database system -- we will learn all database concepts that we will
need.
People, Places, and Times
The class meets MWF 10-11 in Fulton Hall room 415.
Office hours are the times that I am guaranteed to be in my office.
However, I am at school most days (except Thursdays) from 8:30AM to 4PM, and am in my
office most of the time. Feel free to see me any time I am in. We can
also schedule an appointment. Do not worry about seeing me too
much. I like to give help -- it's my job. Feel free to see
me early and often.
There is no TA for the course. I will be doing all the grading
myself.
Textbook Info
The text for the course is "Database Management: A Systems Approach
Using Java"
by Sciore. Well, it's actually just a draft of a forthcoming
book. The book covers too much material for a single course.
We shall focus on Parts 3 and 4 (Chapters 12-24), although we
shall also cover some of the earlier material as needed.
Computer Info
We will be doing a lot
of Java programming. You are welcome to
use your own machine or you can use the workstations in Fulton
160. You ought to have Java 6 installed, although you can get by
with Java 5. This is especially relevant to those who use the lab
in 160 or those who own a Macintosh, because Java 6 has not yet been
ported to the Macintosh. Don't get me started about that.
Homework Policy
The main focus of the class will be the programming assignments; each
assignment will ask you to extend a specific component of the database
system. I may also give pencil-and-paper assignments, to fill in
gaps where programming is impractial. All assignments must be done
individually.
Exams
I expect to give two midterms and a final. Dates and topics of the
midterm exams will be given as their time approaches. The final exam
will be on Tuesday May 6 at 9am.
The exams will cover both the theory of database system
implementation (as covered in class), as well as what you have learned
by writing code. Therefore it is crucial that you work hard on the
assignments; if you do not, you are unlikely to pass the course.
Grading
Your final grade will be computed based on my understanding of your
understanding of the material. In my experience, exams tend to be the
best indicator of understanding. I realize that you will be spending a
lot of time on homework, and want that to "count" towards your
grade. My belief is that if you do the homeworks diligently and
understand what you did, your test scores will correspond.
Conversely, if you spend your homework time doing trial-and-error and
getting too much "help" from friends, your test scores will plummet and
your time will be wasted.
As a first-cut, general guide, I use the following percentages in
computing your grade:
| Homework: |
35% total |
| Midterm Exams: |
15% each |
| Final Exam: |
35% |
To that, I adopt the principle that you cannot get a final grade
higher than your best exam grade. I also figure in qualitative
things, such as class participation and office-hour interactions.
Only a fool would make important decisions based solely on numbers.