Database Design Syllabus
- 1 Overview
- 2 Instructor
- 3 Prerequisites
- 4 Computer programming concepts you must understand before taking this course
- 5 Books
- 6 Assignments
- 7 Grading
- 8 The Tentative Plan
- 9 Getting help
- 10 Academic Integrity
- 11 Credits
In this course, we introduce principles and applications of database design. 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 learn to build web apps that allow users to view and manipulate the data through web or mobile interfaces.
One class project will use a MySQL database to manage data along with PHP to present a user-friendly web interface. In addition, we explore using Python and SQLite for smaller portable applications. We broaden our understanding of contemporary databases by delving into the field of NoSQL databases, using MongoDB as our example. Students are encouraged to explore specific database issues and data complexities in their own fields of study and expertise.
You are expected to have already taken the following courses, or their equivalents:
You are welcome to take this course, even if you haven't completed the above courses, so long as you have mastered all the common web page layouts using HTML & CSS, and the computer programming concepts listed below.
Computer programming concepts you must understand before taking this course
- Why learn programming?
- Basic computer concepts and terminology
- Variables and literals
- Data types
- Input and output
- Boolean logic and decision-making in code
- For loops and While loops and both
- Lists and more
- Dictionaries and more
- text files
- strings and raw strings
- Alias vs. copy
Learning MySQL by Tahaghoghi and Williams Published by O'Reilly http://shop.oreilly.com/product/9780596008642.do Print ISBN: 978-0-596-00864-2 | ISBN 10: 0-596-00864-3 Ebook ISBN: 978-0-596-10526-6 | ISBN 10: 0-596-10526-6
Python for Everybody: Exploring Data in Python 3 by Dr. Charles Russell Severance (Author), Sue Blumenberg (Editor), Elliott Hauser (Editor), Aimee Andrion (Cover Design) (free download) ISBN-10: 1530051126 | ISBN-13: 978-1530051120 Open Textbook Library Edition (free)
MongoDB and Python: Patterns and processes for the popular document-oriented database By Niall O'Higgins Publisher: O'Reilly Media Released: 2011 http://shop.oreilly.com/product/0636920021513.do Print ISBN:978-1-4493-1037-0 ... ISBN 10:1-4493-1037-0 Ebook ISBN:978-1-4493-1036-3 ... ISBN 10:1-4493-1036-2
Beginning Database Design: From Novice to Professional [Paperback] Clare Churcher Publisher: Apress; http://www.apress.com/9781590597699 ISBN-10: 1430242094 ISBN-13: 978-1430242093
- due before the due date indicated on the schedule
- you lose a 10% penalty for every 24 hours an assignment is late, up to a maximum penalty of 30%
- late homework will not be accepted after a week
- submit assignments to db-homework [at] knowledge [dot] kitchen
- include your name and the assignment in the subject of your email
- if submitting multiple files, send them as a single zip file
- unless you have good reason to do otherwise, follow best-practices for all basic file names and file extensions
Grades are calculated according to the following formula:
- 40% assignments
- 25% midterm
- 35% 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 MySQL in class and also discuss Oracle, SQLite, and PostGreSQL
- Implementation of a database application on the web using MySQL for the data and python to build the user interface
- An overview of SQLite and Python
- NoSQL: Using MongoDB and pymongo 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:
Slack is a messaging system that is popular for teams. We have a Slack group for this class: https://join.slack.com/t/nyu-db-design/shared_invite/enQtMzA3MjY3OTI3MzE1LTYwYWIzMjcxNGFlYWM4NGIwYzllMDcyYjJmN2M0MzMyOTRlZDJhMzJjZjQxNGM2ZDdmYjY4MGRhYjdhMmU5ZGQ
Our two tutors, Jessica and Chris, are waiting to help you! All tutoring takes place in WWH Room 412 according to the following schedule:
- Mondays: 1:30 - 4:30PM (Jessica)
- Tuesdays: 1 - 5PM (Chris)
- Wednesdays: 1:30 - 4:30PM (Jessica)
- Thursdays: 2 - 5PM (Chris)
- Fridays: 10 - 3:30PM (Chris: 10AM-1PM; Jessica: 11:30AM-3:30PM )
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.
Parts of this syllabus have been plagiarized from syllabi by Professor Deena Engel.