Welcome to CS 3860  
Introduction to Database Systems
This course introduces the theory and practice of modern database design and application, with an emphasis on data modeling and data-driven application design. Relational and non-relational data models, cloud and distributed storage systems, database performance, writing effective database queries, and current topics in database systems are introduced. Topics include entity-relationship modeling; relational algebra; relational, dimensional, and non-relational data models; normalization techniques; SQL; data-driven application design, authentication and access control; transactions, concurrency and performance optimization; CAP theorem; and distributed and cloud computing environments. Lab assignments reinforce class topics.
Prerequisite: CS-2851/CS-285
Course structure: 3-2-4 (class hours/week, laboratory hours/week, credits).
Requried:
Notebook computer required Optional:
Database Management Systems, 3rd ed. Ramakrishnan and Gehrke, McGraw Hill, 2002
NoSQL Distilled: A Brief Guide to the Emerging World of Polyglot Persistence 1st Edition, by Pramod J. Sadalage, 2016. The Essence of SQL: A Guide to Learning Most of SQL in the Least Amount of Time, David Rozenshtein.
Database Systems: The Complete Book (2nd Edition) by Hector Garcia-Molina, Jeffrey D. Ullman, Jennifer Widom.
High Performance MySQL: Optimizaton, Backups, Replication, and More, Schwartz, Tkachenko, Zawodny, Lentz, Balling. • High Performance MySQL: Optimizaton, Backups, Replication, and More, Schwartz, Tkachenko, Zawodny, Lentz, Balling.
Upon successful completion of this course, the student will:
  • Be able to design database models using entity-relationship, relational, dimensional, and non-relational modeling.
  • Understand how to refine a database design using normalization techniques.
  • Understand database properties of atomicity, consistency, independence and durability.
  • Understand the concepts and tradeoffs and consistency, availability, and partition tolerance in distributed database systems.
  • Be able to use standard database languages (e.g. SQL) for querying, manipulating, and basic management of databases.
  • Be able to design and deploy scalable, distributed database and data processing applications such as Apache Hadoop and Spark
  • Be able to describe the CAP theorem and apply it to proper database selection and design.
  • Be aware of modern trends in the area of database systems.