knowledge-kitchen / course-notes

Course Syllabus - Database Design & Implementation

Database Design & Implementation
New York University
Department of Computer Science

Course description

In this course, we introduce principles and applications of databases. We begin by studying issues related to data collection and discovery, and techniques for prepping and munging the raw data to shape it into a form that is ready for database storage. Studying the design of relational databases, we learn how to craft databases to model “real-world” data in a way that lends itself to the types of manipulation and analysis that we have in mind. Once we have a clear understanding of these issues, we look at more advanced topics in data, such as data analysis and visualization in Python, how NoSQL databases like MongoDB compare to relational systems, ethical and societal implications of the world of data, and how to build simple web apps that publish and save data stored in databases.

Prerequisites

Introduction to Computer Programming (either CSCI-UA.0002 or CSCI-UA.0003) with a grade of C or better. Students that have successfully completed Data Management and Analysis (CSCI-UA 479) are not eligible to take this course.

Learning objectives

Upon completing this course, students will be familiar with some of the most common database systems and practices, including:

To achieve mastery in these topics, students will take quizzes and exercises corresponding to each lecture topic as well as a midterm and final exam.

While one class session is usually dedicated to hands-on student work to start each assigned exercise, students are expected to work independently to complete the exercises for approximately 10-15 hours each week.

Instructor

Amos Bloomberg
amos at cs dot nyu dot edu
WWH 424

Department

This course is offered by the Computer Science Department. For department-related questions or concerns, please see the department’s contact information.

Textbooks

All books are available online:

Readings will be selected from the following books:

Getting help

Help resources available to you are listed in order of urgency of your problem:

Messaging

Our course will use a message board (link to be distributed in class) as its main communication channel for announcements and discussion. This is a good place to ask questions that anyone - other students, graders, tutors, or the professor - can answer. This is a resource best used when the answer is not required urgently.

Tutoring

Tutors for this course are waiting to answer your questions, either on our message board or during dedicated tutoring hours (hours to be distributed in class). Use tutoring for more involved questions and when you prefer a more immediate answer.

Talk with the instructor

For any issues at all, contact the instructor:

Additional tutoring resources

Additional academic support is also available through the University Learning Center.

Attendance & participation

Attendance is mandatory and absences may be penalized. In-class and online message board participation is encouraged. Anecdotally, students who do not attend class regularly and who do not participate in discussions tend to do poorly.

Student and instructor interaction during class

Class sessions are a mixture of lecture, discussion, and project work. During any lecture or discussion, students are generally encouraged to participate with questions, comments, and constructive criticism of the material being covered. On days when students work on their assigned projects, students work individuall and occasionally in small groups of typically 2-3 people to complete specific projects, with help and guidance provided by the instructor.

Required software and hardware

All students require access to a desktop or laptop computer on which they can write software using a specific set of applications.

i6 account

In addition to your NYU Home Account, we will be using a special computer account on a Unix Web server named i6.cims.nyu.edu which will be assigned to you automatically based on your enrollment. This is called an i6 account and we will use it to host our websites.

Grading

You will receive a grade calculated mechanically on the following rubric:

Attendance may be taken into account in the final grade.

Notification of grades

Students will be sent their complete individual grades via email approximately once per week.

Quizzes

Quizzes are completed outside of class. You must be logged into Google with your NYU Net ID account in Google in order to view the Quizzes.

Quizzes are submitted by submitting a Google Form.

Exercises

Exercises are usually begun in-class with the remainder completed outside of class.

All exercises are submitted by pushing code to GitHub.

Late policy

All assigned work is due before class on the due date indicated on the schedule

Extensions

Students are automatically granted 2 late assignment extensions of up to 3 days late each, with the exception that all assignments must be submitted before the last day of regular classes before the final exam period.

Regrade requests

If a student requests a regrade of any work, we will regrade the work in full, not just the part that the student believes has been mis-graded.

Student Accommodations and Accessibility

Students who believe that they may need accessibility accommodations in this class are encouraged to contact the Moses Center for Student Accessibility at (212) 998-4980 as soon as possible to better ensure that such accommodations are implemented in a timely fashion.

Academic Integrity

Working with others and leveraging all resources available to you is a prerequisite for success. This is different from copying, cheating, plagiarism, and mental laziness. All submitted work must be your own. There are very reliable systems we use to detect plagiarism in computer code, such as moss and compare50. If you submit any work that is not your own, you risk failure or worse.

Please read the Computer Science department’s policy on academic integrity and the University-wide policy which supercedes it.