Database Design Syllabus
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 in relational database design, we look at more advanced topics in data, such as data analysis in Python, NoSQL databases like MongoDB, web APIs, blockchain, and building simple web apps that publish data held in databases.
You are expected to understand the computer programming concepts listed below, whether via coursework or some other means:
Computer programming concepts you must understand before taking this course
All books are available online:
- via "Online Access" through NYU Libraries / O'Reilly Safari
- free html / ebook versions supplied by author or publisher
- database platform's documentation
Readings will be selected from the following books:
- Python for Everybody: Exploring Data Using Python 3 by Charles Severance (py4e)
- Bad Data Handbook by Q. Ethan McCallum
- Using SQLite by Jay A. Kreibich
- Database Design by Adrienne Watt (primary author)
- Learning MySQL and MariaDB: heading in the right direction with MySQL and MariaDB by Russell J. T. Dyer (Learning MySQL and MariaDB)
- MongoDB Manual
Unless you have good reason to do otherwise, follow best-practices for all basic file names and file extensions
- assignments are due before class on the due date indicated on the schedule
- for every 24 hours that an assignment is late, we will apply a 10% penalty on the grade, up to a maximum penalty of 30%.
- after 1 week, we will no longer accept the assignment.
You are automatically granted two extensions for late work up to one week overdue. You can use these for either individual exercises or quizzes, but not for any work involving a team or group. You must notify the graders when you submit late work if you would like to use one of these extensions. Please do not ask for further extensions.
Work on group projects will not be accepted late.
Grades are calculated according to the following formula:
- 10%: Quizzes
- 40%: Assignments & Workshops
- 25%: Midterm exam
- 25%: Final exam
The Tentative Plan
- Using python to prepare datafiles; explorations of "data in the wild"
- Scrubbing and massaging data
- Database theory and relational database design
- SQL programming; We will use SQLite in class
- An overview of Python integration
- Implementation of a database application on the web using SQLite for the data and python to build the user interface
- NoSQL: Using MongoDB to build a web-based python interface to your MongoDB data for your users
- Introduction to data visualization; using python to build charts and graphs.
- Concepts in database management
Help resources available to you are listed in order of “seriousness” of your problem:
Students are expected to consult the Student FAQ prior to asking questions of the tutors, professor, or other students. This allows us to focus our time on questions of greater significance.
Slack is a messaging system that is popular for teams. We will share a link to join the class's Slack workspace.
Our tutors are waiting to help you! All tutoring takes place in WWH Room 412 according to the following schedule:
Talk with the professor
- see me before class
- raise your hand during class
- see me after class
- come to my open office hours
Additional tutoring resources
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. If you submit any work that is not your own, you risk failure or worse.
Please read the Computer Science department policy on academic integrity.