CS4320 provides an introduction to relational database systems. The
topics covered include the relational model, SQL, transactions, database
design, and concepts and algorithms for building database management systems.
Students are encouraged to concurrently enroll in CS4321 (Practicum in Database
Systems) as well.
CS4320 meets from 2:30pm to 3:20pm on Mondays, Wednesdays and Fridays in
Olin Hall 155. The first lecture took place on Friday Aug. 29 2:30pm.
This is a required textbook. The contents of
this book do not constitute the syllabus for the course - the classroom
lectures define the course content, and the textbook is a reference.
CS4320 will assume knowledge of material
covered in CS212 (Computers and Programming) and CS312 (Structure and
Interpretation of Computer Programs). CS414 (Systems Programming and Operating
Systems) will help with some of the advanced topics taught later in the
semester. While CS414 is not a prerequisite, we encourage you to take CS414
along with this course.
The grades for CS4320 will be determined
based on homework assignments (50%) and two exams (50%).
Late submissions policy
(both for CS4320 and CS4321)
All homeworks have to be submitted via
CMS, that is, in electronic form. You may submit scanned PDF files of CS4320
homeworks, but there is a limit on upload size and it is your responsibility to
make sure in time that the upload of scanned files succeeds. If there is a problem, submitting via
email or on paper is not an option. We suggest to do the homeworks using a text
editor or latex and create a PDF file for submission.
We will have strict deadlines that will
usually be at 11:59pm of the day indicated in the deadline. There will be a
grace period of 48 hours after the deadline during which you can still submit
to CMS. If you submit at any time during the grace period (even just a minute
after the deadline), the score you achieve on the assignment will be multiplied
by a factor or 0.9. Further extensions beyond the grace period can only be
granted for serious medical reasons.
This may sound strict, but we want to be
fair and have the same rules for everyone. We will try to provide the best help
possible to make you succeed with the assignments, but you will have to grant
sufficient time to finish your homeworks and submit them before the deadline.
Job interviews
Many students who take CS4320/1 also do
job interviews in the fall. Please make sure not to schedule any interviews
that may make it hard for you to attend the exams. We cannot move exams because
of interviews or do makeup exams because of them. Makeup exams can only be scheduled
for serious medical reasons, not because of job interviews. We know that some companies behave
inflexibly regarding interview dates (notably, Microsoft), but in this case you
will have to state firmly that it is a Cornell rule that exams have priority
(which is true). It is important not to tell recruiters that there is a
possibility of moving the exam, because it is not true and they will take your
word on it. Please keep in mind that traveling takes time: you should not
schedule interviews a day before or after an exam, particularly if the
interview is on the West Coast. If you like, you can refer recruiters to me and
I will tell them that there are no exceptions.
Again, this may sound strict, but CS4320
traditionally is taken by about 60 students who are on the job market. Most do
several interviews in the fall. If we try to accommodate everyone (giving
preferential treatment to some would be unfair), the course must be a
frustrating experience for everyone. Please view this from a different
perspective. As a Cornell student, you are a very desirable hire; and
recruiters usually love students who have taken a database internals course.
You should absolutely brag about CS4320 and even more about CS4321 in your
interviews, even if the company you are interviewing with does not have an
obvious connection to databases. But be aware that you may be quizzed on the
material! You do have some leverage in
arranging dates with them.
CS4321 is the practicum associated with CS4320. In CS4321, you will build
the major components of a “realistic” database system.
Solid C/C++ skills are required. You will extend an existing database
management system, Minibase (see the textbook).
CS4321 has a lecture once every week given by the TAs in which the
assignments are presented and discussed and where you can ask questions. This
is not a course in which you are lectured on how to program. This series of
lectures will take place on Wednesdays 3:35-4:25pm (Hollister Hall Room 110 – Note: this room does not change to Olin 155). The lectures will start on Sept.
17.
Q: What is the difference
between CS4320 and CS4321?
A: CS4320 covers the
concepts underlying modern database systems. CS4321 teaches how to actually
build a modern database system. CS4320 has no programming assignments, while
CS4331 has four C++ programming projects.
Q: Can I take CS4320 without
taking CS4321?
A: Yes. However, we
recommend that you take CS433 since you will learn a lot more about how
databases are built by actually writing a large part of a database system.
Q: Can I take CS4321 without
taking CS4320?
A: No. The material covered
in CS4321 assumes knowledge at the level of CS4320. However, you can (and we
encourage you to) concurrently enroll for both CS4320 and CS4321.
Q: Does CS4321 involve a lot
of work?
A: There is a lot of project
work that involves programming. Whether you find it time-consuming or not
depends on your level of comfort with C++ programming. In previous course
evaluations, many students wrote that even though the course was a lot of work,
they learned a lot of valuable material. Many people also received job offers
based on their knowledge of material taught in CS4320 and CS4321.
Q: How important is class
attendance?
A: Class attendance is
crucial. Much of what we teach is not written on the transparencies or directly
available in the book. We urge you to attend class and participate in the
discussion of the different topics.
Q: I don’t know C++,
but would like to take CS4321. Can I do the implementation in Java?
A: No. You cannot choose to
do these programming assignments in a language other than C++. There are several
reasons for this; the most important one is that we provide you with some code
to start out with, which is in C++.
Q: I don’t know C/C++,
but would like to learn it. Is it a good idea to take CS4321 to learn C/C++
there?
A: According to feedback from
earlier years, no. If you know C *and* and an object-oriented programming
language such as Java really well but don’t know C++, I am convinced you
won’t have problems since the assignments do not focus on obscure C++
issues. If you know Java but not C, we suggest not to take CS4321 because the
course emphasizes systems internals that depend on understanding pointers as
well as modifying files on a low level, and knowing Java is not a sufficient
preparation for that.
Q: I have signed up for
CS4321 but now I realize that it’s not the right thing for me. What can I
do?
A: Don’t worry –
if you need a signature to drop out of the course, you will get it. (But note
that there may be deadlines after which Cornell does not let you do that
without penalty.) Similarly, if you like to *try* the first assignment, just
sign up for the course.
Q: Are all CS4321
assignments equally hard?
A: There are four
programming assignments that each have 25% weight. However, the first and
second assignment usually feel substantially easier than the third and fourth.
So if you find the first two assignments easy, do not make the mistake of
granting too little time to solve the later assignments. It is too late to
start working on an assignment on the evening of its deadline.
Q: Is teamwork permitted in
CS4320 or CS4321?
A: No teamwork is admitted
in either course, and would be considered cheating. You may help eachother
understanding the course material, but you must not work on solving the
assignments together or show solutions to your colleagues.
Q: I’d like to start preparing
myself for CS4320 already now. What parts of the book should I read first?
A: I suggest to look at the relational
model and then read the chapter on SQL. This is not hard stuff, but people tend
to have problems with SQL (particularly the queries involving negation or
universal quantification), and it is just so important in industry!
Q: Is CS4321 hard?
A: We don’t think so. A few
students find it hard and some of the above questions are really geared towards
them, but most students have no great difficulties and get very good grades.
Last Update: Sept. 15, 2008.