CS 334: Database Systems

Table of Contents

Course Overview

Data is everywhere! It stands to reason that there must be smart ways of storing and retrieving it efficiently. We'll spend time looking at how database sytems are built, how to use them, and fundamental principles behind management of data. The most amazing thing about this class is that it uses ideas involving computer hardware, data structures, algorithms, database theory, new languages, and more. If it makes sense to talk about a course as being "interdisciplinary within computer science," this is the one.

Course Information

Instructor: Dave Musicant
Email: dmusican
Office: CMC 326 (x4369)
Office hours: check my web site
Grader: Frang Yang (yangf2)

Textbooks

  • Database System Concepts (6th ed), Silberschatz, Korth, and Sudarshan, McGraw-Hill, 2010. I've ordered a custom version of this textbook for the bookstore that includes only the chapters that we'll be using. You're welcome to use a full version of the 6th ed book if you prefer.
  • NoSQL Distilled: A Brief Guide to the Emerging World of Polyglot Persistence, Sadalage and Fowler, Addison-Wesley Professional, 2012.

Grading

Your grade will be computed as follows:

Assignments: 50%
Exam 1: 25%
Exam 2: 25%

Individual vs team grades

For each assignment that you work on in a team with other students, you'll receive a grade based on the quality of that joint submission. This grade will be used to form part of your overall homework average. Your overall homework score will form part of your course average, which will be used to determine a final grade.

That said, you also must do work of passing quality on your individual assignments and exams in order to pass the class.

Homework Policy

  • The assignments will be a mix of programming in SQL and Java (and maybe some Python), and non-programming analysis assignments.
  • Each assignment will have a specific time for which it will be due. An assignment turned in late within one day of the due time will be docked 25%. Two days late: 50% off; three days late: 75% off. An assignment will not be graded if it is turned in later than that.

Working together

  • Each programming assignment will either be a "team" problem assignment or an "individual" assignment.
  • When working on team problems, you and your partner should engage in the pair programming model, that is both of you should be sitting at a single machine, side by side. One of you is "driving," i.e. actually using the keyboard and mouse. The other is actively engaged following along, stopping bugs, and providing ideas. You should make sure that over the course of an assignment that you spend roughly the same amount of time each "driving." I will also ask you to turn in a form rating the work that your partner does.
  • If you are determined to work alone on the team assignments, that's fine. I will expect, however, that you do work of the same amount and quality as those students with partners. You can change whether or not you work alone each "cycle" that I assign new partners.
  • I will also be assigning analysis work. On these and on the "individual" programming problems you may collaborate with others in the class for ideas, but all students should turn in individual assignments for these. You should be writing up or programming your own solutions, and not sharing printouts with each other. You may discuss ideas with other students, but no paper or electronic record of your conversations should exist when the conversation is done.

Collaboration, Plagiarism, and the Difference between the Two

There are two different kinds of working together: collaborating and plagiarism.

Collaborating

Collaborating is good. You are encouraged to collaborate on ideas and program design. Programming is often a social effort, and there is much you can learn by talking out the ideas in this class with each other. If a piece of your program utilizes someone else's idea, i.e., someone other than the program author(s), you must give that person credit in your credits.txt file. When in doubt, give credit.

Plagiarism

Plagiarism is bad. DON'T DO IT!

  • Any programs that you turn in should be your work of the author(s) only.
  • Even if the program author(s) share ideas with others, the program itself must be written by the author(s).
  • If a piece of your program utilizes someone else's idea, you must make sure to give that person credit in program comments.

The following are examples of plagiarism.

  • Taking someone else's program, changing the variables and comments around, putting your name at the top, and turning it in.
  • Finding a similar program on the internet, changing the variables and comments around, putting your name at the top, and turning it in.
  • Finding a similar program in a book, changing the variables and comments around, putting your name at the top, and turning it in.

I am compelled by Carleton policy to submit plagiarism cases that I find to the Dean of Students, who in turns brings the evidence before the Academic Standing Committee. The academic penalty for a finding of responsibility can range from a grade of zero in the specific assignment to an F in the course.