Much of the world’s data resides in databases. The purpose of this course is to introduce relational and NoSQL database concepts with emphasis on both theoretical and practical learning. This course helps students learn and apply knowledge of the SQL language and implementing components of relational and NoSQL database management systems (DBMS). Students will create database instances in the cloud for both relational and NoSQL database systems such as MySQL, SQL Server, Amazon Redshift, Google BigQuery and MongoDB. Through a couple of hands-on projects students will practice building and running advanced SQL scripts and Python/Java codes. Evaluation of concepts will be done through a midterm and a final exam; the evaluation of practical competency will be done through homework assignments and projects.
Part I. Basics
- Overview of Database system design
- ER Diagrams, and the Relational Model
- SQL: Building and Querying a Relational Database
- Advanced SQL
Part II. Applications
- Internet Application Development: AWS, JDBC, Java Servlets, etc.
Part III. NoSQL Databases
- Overview of Key-Value Stores (Ex: Amazon Dynamo),
- Column Oriented Databases (Ex: Amazon Redshift)
- Document Databases (Ex: MongoDB)
Part IV. Storage and Efficiency
- Storage, Indexing and Query Evaluation
- Writing efficient queries
- Partitioning, cloud storage, and pricing models
Part V. Databases in real life
- Data Cleansing
- Data Warehousing
- Database Systems, N. Jukic, S. Vrbsky, S. Nestorov, Prospect Press, 2017
- NoSQL, P. J. Sadalage, M. Fowler, 2013.
- Quizzes (10%)
- Projects (40%)
- Midterm Exam (20%)
- Final Exam (30%)
Students enrolled in this class will be prepared to contribute to a rapidly changing field by acquiring a thorough grounding in the core principles and foundations of relational and NoSQL database systems. They will also acquire a deeper understanding on (elective) topics of more specialized interest, and be able to critically review, assess, and communicate current developments in the field.