Exploits of a mom (from XKCD) https://xkcd.com/327/

Course description

ORC. This course studies the management of large bodies of data or information. This includes schemes for the representation, manipulation, and storage of complex information structures as well as algorithms for processing these structures efficiently and for retrieving the information they contain. This course will teach the student techniques for storage allocation and deallocation, retrieval (query formulation), and manipulation of large amounts of heterogeneous data. Students are expected to program and become involved in a project in which they study important aspects of a database system: ways to organize a distributed database shared by several computers; transactions that are processed locally and globally; robustness guarantees of the stored data against failure; security and data integrity guarantees from unauthorized access; privacy; object-oriented schemes for multimedia data; indexing, hashing, concurrency control, data mining, data warehousing, mobile databases and storage file structures.

Learning objectives
The ultimate goal of this course is to equip you to use data to make data-driven decisions rather than making decisions on gut feel or guesswork. After completing this course you should be able to:
  1. Query existing databases for insight. We will spend the first few weeks of the course learning the standard database query language called Structured Query Language (aka SQL, aka 'sequel'). This will give you the tools necessary to query existing databases for insight into the data they hold.
  2. Design your own efficient databases. We will spend the next few weeks examining how to structure your own databases, laying out tables, and considering factors such as redundancy, reliability, and speed.
  3. Understand what goes on under the hood. Next we will explore how databases operate, retrieving data quickly and accurately, even with multiple users accessing and updating data simultaneously.
  4. Describe new and developing database technologies. Finally we will look at new database technologies such as NoSQL databases and blockchains.
Throughout we will have several guest lecturers from experts working in the field. See the schedule page for more details.

Prerequisite CS 50. I will also assume you are familiar with Python.

Who, when, where

Instructor
Tim Pierson | 210 Sudikoff
office hours: most weeks Tues. 1:30 pm - 2:30 pm, Thurs. 1:30 - 2:30 (confirm via Canvas calendar), and by appointment. See Zoom link on Canvas for virtual meetings.
Graduate teaching assistant
Almas Abdibayev
office hours: maintained on Canvas
Lectures
2-hour | MWF 2:10 pm - 3:15 pm Eastern time zone | Online
Lectures will be online and recorded this term using Zoom — see Canvas for access details. When you join the online meeting, please turn off your camera and microphone. If you have a question, please hit the "Raise hand" button on Zoom. If I do not call on you in a short period of time, please unmute, turn on your camera, and ask. We will work out more rules as we go...
I do not plan to regularly use x-hours, but I may sometimes use them for missed classes, to catch up on material, or for optional, informal session to work through examples. Make sure to keep this time slot free in case we need to use it.
We will frequently have in-class exercises to try out new concepts on a live database. Google and StackOverflow will be your friend, do not hestitate to use them (unless instructed otherwise)!
Help: Office hours
Office hours will also be online via Zoom. I will be available online during posted office hours, even if there are no questions. If you'd like to set up a private meeting, email me and we will find a time to speak.
Help: Slack
Expect an invite to a Slack channel after the first day of class. I strongly encourage you to ask and answer questions there.
Announcements
Monitor Canvas for periodic course-wide announcements.
Textbook
Database System Concepts, 7th edition, by Silberschatz, Korth, and Sudarshan. I highly recommmend the ebook version instead of the paper version (the paper version is not even bound — it is a collection of loose leaf papers!).
While the Silberschatz book will be our primary textbook, and all assigned reading will be from that textbook, another useful resource is Database Systems: Design, Implementation, & Management, 13th edition, by Coronel and Morris.
Another great resource is https://www.mysqltutorial.org.

Assessment

Grades in this class will be a combination of a term-long project, several lab assignments, one midterm exam, and class participation. A total score of at least 60% is required to pass this course.

Project (40%)

Over the span of the term you will work on a database-related project of your choosing with three other students. Details of the project's reqirements are here.

Labs (30%)

There will be three lab assignments (aside from Lab 0 which is simply to gather information) that together account for 30% of the grade in this course. The points for each lab are:
  • Lab 1: 5%
  • Lab 2: 10%
  • Lab 3: 15%.
Requirements for lab submissions:
Labs are designed to be completed outside of class and must be submitted electronically via Canvas before the deadline indicated on Canvas. Even when a lab has some written exercises, you are required to either type in a file or scan your written work and submit it electronically. To submit output from your program, submit a copy-pasted file in pdf format and/or a screenshot, as appropriate. For plain text, you can use a program like TextEdit, NotePad, or Emacs, or even Word, but be sure to save as a pdf. For a screen shot, you can use Preview on Mac (under the "File" menu) or the PrntScrn button on Windows.

You may work with one partner on these lab assignments (see Collaboration below). In addition:

  • If you worked with a partner, include your name and your partner's name, or if you worked alone, state "no partner" in a comment in your submission.
  • If you worked a partner and ended up with a single shared solution, indicate that in a comment in the solution and on the submission. Each partner should submit the same solution. The solution will then be graded once with the same grade assigned to both partners.
  • If you worked with a partner but wrote separate code, indicate the collaboration but that you have different submissions. Indicate this in both the code and on the submission. Each of you should upload your own solution, and each of you will get a separate grade.
  • Collect all your code files into a single zip file and upload that zip, rather than a bunch of separate files.
Late policy
Due via Canvas on the date and time noted on Canvas assignment. Penalties: < 8 hours: 10%; < 24 hours: 20%; < 48 hours: 40%; more: no credit.
You are allowed at most one late submission (up to 48 hours) with no penalty; no excuse required. Indicate in your submission that you are electing to use your free pass; no undoing the choice. This cannot be combined with a penalty (e.g., you can't take an 8-hour penalty on top of the 48-hour free pass). If you are working a partner, this counts as the free pass for both of you.
Grading
Specific grading rubrics will be provided for each lab.

Exams (20%)

There will be one midterm worth 20% of the final grade (no final — your project counts as the final). You are allowed to use one 8.5 x 11 inch note page for the exam, but you must not include answers or code from prior CS61 exams unless it was explicitly provided by the instructor or part of the material covered in class.

If you have questions about your exam score, or would like a question re-graded, see your TA within one week from the date that the exam was returned to the class. If you request a re-grade of a particular question, we reserve the right to re-grade your entire exam.

Class participation (10%)

Most classes will have a hands-on portion where we will work through a series of problems on a live database. At the end of this portion of class you may be randomly selected (with replacement) to present your solution. Your presentation will be graded as follows:
  • 0: Nothing of substance
  • 1: Your solution needs significant work
  • 2: Correct or mainly correct.

If you are unable to attend the class via Zoom live, but you are randomly selected, post your solution on Canvas prior to the next class period.

It may the case that you are never randomly selected to present your solution during the term. In that case you will recieve full credit for this portion of the grade.

Collaboration

Much of the learning in this course comes from doing the programming exercises. Sometimes learning can happen more effectively when you can hash things out with someone else, so working with a partner will be allowed on lab assignments. You may work jointly with one other person on a given lab. If you choose to work with someone else, you and your partner must both submit the same joint assignment with both names on it, and you must work with the same person for the entire assignment (you cannot work with one person for some parts of an assignment and a different person for other parts).

If you work with a partner you are still responsible for understanding the entire assignment. That means that splitting the coding into pieces, doing your part, and never looking at your partner's parts is not a good idea. You can learn a lot by reading your partner's code and figuring out how it works, whether it is correct, and how it might be improved. You can also catch things like poor or missing comments that could cost you style points when the assignment is graded.

When working with a partner, I suggest that you borrow a practice from Extreme Programming, a method of writing code that many businesses find quite effective. One person (the driver) sits at the keyboard. The other person (the navigator) looks at the (virtual) screen as the driver types, asking questions, making suggestions, and catching errors. Both of you will understand the code better if you discuss it as it is written than if you just write it (or read it) by yourself. Regularly trade off who is driver and who is navigator.

The usual reaction to this idea is, "that will take twice as long!" In practice it is usually faster than each person programming alone. The reason is that errors are caught earlier, and the amount of time are saved when debugging more than makes up for the lack of parallelism in code writing. Also, the code tends to be better written. These are the reasons that this idea has been adopted in industry.

Online recording

I will record class sessions held during the 2 hour on Zoom and will post those videos. My plan will be not to record any office hours, certainly not one-on-one, but not small groups either. If I think that a question or answer from office hours would be good for the entire class to see, I will prepare a separate note or video, or include it in the next lecture. This is what I do normally in my classes. If I hold a problem session or X hour where the entire class is invited to come prepared with questions, I will record that because it is essentially a class session. But I will probably edit it before posting so that it's quicker for you to rewatch

From the Dean of the Faculty to students regarding recording of class sessions:

(1) Consent to recording of course and group office hours

  • a) I affirm my understanding that this course and any associated group meetings involving students and the instructor, including but not limited to scheduled and ad hoc office hours and other consultations, may be recorded within any digital platform used to offer remote instruction for this course;
  • b) I further affirm that the instructor owns the copyright to their instructional materials, of which these recordings constitute a part, and distribution of any of these recordings in whole or in part without prior written consent of the instructor may be subject to discipline by Dartmouth up to and including expulsion;
  • c) I authorize Dartmouth and anyone acting on behalf of Dartmouth to record my participation and appearance in any medium, and to use my name, likeness, and voice in connection with such recording; and
  • d) I authorize Dartmouth and anyone acting on behalf of Dartmouth to use, reproduce, or distribute such recording without restrictions or limitation for any educational purpose deemed appropriate by Dartmouth and anyone acting on behalf of Dartmouth.

(2) Requirement of consent to one-on-one recordings

    By enrolling in this course, I hereby affirm that I will not under any circumstance make a recording in any medium of any one-on-one meeting with the instructor without obtaining the prior written consent of all those participating, and I understand that if I violate this prohibition, I will be subject to discipline by Dartmouth up to and including expulsion, as well as any other civil or criminal penalties under applicable law.

Technology requirements

Given the online nature of this course, it is required that students have the ability to stream 1 hour or less of video content each day. We will do our very best to plan for and accommodate any limitations to your access to the required technology. It is impossible for us to plan for every possible technology constraint. Therefore, please let us know what barriers you have to completing the online course as soon as possible. Given current disruptions in the supply chain we would like to plan as far ahead as possible.

Honor code

Dartmouth's honor code applies to this course, and academic misconduct policies will be strictly enforced. I will report suspected cases of cheating to the Undergraduate Judicial Affairs Officer. I also reserve the right to assign a failing grade for an assignment or an exam if I conclude that the honor principle has been violated, regardless of the finding from the Committee on Standards. If you have questions, ask!

Accessibility Needs

Students requesting disability-related accommodations and services for this course are encouraged to schedule a phone/video meeting with me as early in the term as possible. This conversation will help to establish what supports are built into my online course. In order for accommodations to be authorized, students are required to consult with Student Accessibility Services (SAS; student.accessibility.services@dartmouth.edu; SAS website; 603-646-9900) and to email me their SAS accommodation form. We will then work together with SAS if accommodations need to be modified based on the online learning environment. If students have questions about whether they are eligible for accommodations, they should contact the SAS office. All inquiries and discussions will remain confidential.

Mental Health

The academic environment at Dartmouth is challenging, our terms are intensive, and classes are not the only demanding part of your life. There are a number of resources available to you on campus to support your wellness, including your undergraduate dean, Counseling and Human Development, and the Student Wellness Center.

Religious Observances

Some students may wish to take part in religious observances that occur during this academic term. If you have a religious observance that conflicts with your participation in the course, please meet with me before the end of the second week of the term to discuss appropriate accommodations.

COVID-19 addendum

While the COVID-19 pandemic has already drastically disrupted this course, it has the potential to result in further personal impact which may prevent you from continuing engagement in the class. This may be due to contraction of the disease by you or a loved one, increased familial responsibilities, financial difficulties, or impacts on your mental/emotional health.

We have structured the course so that these disruptions will not necessarily prevent you from successfully completing this course. First, we will record and post each lecture. This will enable flexible viewing of the course content. Second, we will schedule opportunities for live interaction with the instructor and TA during diverse times throughout the week. Third, the labs have been redesigned so that they can be completed at home.

In the event that you are directly or indirectly impacted by COVID-19 in such a way that will affect your performance in the course, it is imperative that you reach out to the instructor as soon as possible. You may also reach out to your undergraduate Dean if that would make you more comfortable. We cannot assist you if we don’t know there is a problem. Our first priority is your health and security. We will work to put you in touch with appropriate resources to assist you. In addition, appropriate accommodations (for example: deadline extensions and/or extra office hours) will be implemented.

Acknowledgement

This course is closely based on one originally developed by Dr. Charles Palmer. I am deeply indebted to this excellent educator for all of his hard work and generous assistance in creating this course.