Database Design Syllabus

From Knowledge Kitchen
Jump to: navigation, search


Overview

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.


Instructor

Prerequisites

Prerequisite courses

You are expected to have already taken the following courses, or their equivalents:

Requisite knowledge

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

Books

Required

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)

Optional

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

Assignments

  • 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

Grading

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

Getting help

Help resources available to you are listed in order of “seriousness” of your problem:

Slack

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

Tutoring

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

  1. see me before class
  2. raise your hand during class
  3. see me after class
  4. come to my open office hours

Additional tutoring resources

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. 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.

Credits

Parts of this syllabus have been plagiarized from syllabi by Professor Deena Engel.