Course instructor: Yanif Ahmad.
Course staff: P. Shyamshankar, Y. Huang.
Class schedule: MW 12-1.15pm, Shaffer 100.

This course serves as an introduction to the architecture and design of modern
database management systems.
Database management systems (DBMS) are widely used to manage, store and query
diverse datasets and have become an invaluable tool in today's enterprises and
large web companies with applications in transaction processing, business intelligence
and analytics.
Topics include query processing algorithms and data
structures, data organization and storage, query optimization and cost modeling,
transaction management and concurrency control, high-availability mechanisms,
parallel and distributed databases, and a survey of modern architectures including
NoSQL, column-oriented and streaming databases.
In addition to technical material, we will devote a portion of
weekly lectures to looking at the use of database technology in today's
enterprises, including document indexing at Google, parallel data warehousing
with systems such as Hadoop and HIVE, and transactional web applications.
Coursework includes programming assignments and experimentation in a
simple database framework written in Java.
Which JHU Database course do I take?
Database Systems (CS 600.316/416) is complementary to Databases (CS 600.315/415)
offered in the Fall semester and the two make a natural course sequence.
315/415 focuses on using databases in applications, for
example to support web sites, with topics including database schema design and
models, and database programming languages.
316/416 focuses on database internals and the implementation of a database
runtime to realize declarative queries, including storage and data organization,
indexing, query processing and optimization and transactions. 316/416 does not
have 315/415 as a prerequisite but it is recommended that you have some prior
exposure to SQL (for example by reading through the SQL tutorials below).
Course area: Systems.
Prerequisites:
CS 600.120 (Intermediate Programming) and CS 600.226 (Data Structures) or equivalent.
Class discussions:
See our Piazza page.
The following links may be useful if you're looking for a refresher on SQL, or want
to play with DBMS software.
SQL tutorial:
PDF,
CS 315@JHU,
SQLZoo,
W3Schools
Open-source DBMS:
SQLite,
Postgres,
MySQL
| Week | Topic | Suggested reading |
| 1: January 28 | Welcome, SQL+DBMS intro. | SQL tutorials above. |
| Warmup: development environment setup. | ||
| 2: February 4 | Storage and data organization. | Cow 9.3-9.7, Boat 10.5-10.8 |
| Assignment 1: storage manager. | Hand-in: week 4. | |
| 3: February 11 | Indexing and access methods. | Cow 10, Boat 11-11.4 |
| 4: February 18 | Query processing. | Cow 12-14, Boat 12 |
| Assignment 2: B+-tree. | Hand-in: week 6. | |
| 5: February 25 | Query optimization. | Cow 15, Boat 13-13.4 |
| 6: March 4 | Physical database design. | Cow 20, Boat 13.5-13.6,24.1-24.1 |
| 7: March 11 | Transaction processing. | Cow 16-17, Boat 14,15 |
| Midterm exam. | 4-day take home. | |
| 8: March 18 | No class, spring break! | The Manga Guide to Databases, while here |
| 9: March 25 | Logging and recovery. | Cow 17-18, Boat 15,16 |
| Assignment 3: join algorithms. | Hand-in: week 11. | |
| 10: April 1 | Data analytics. | Cow 25, Boat 20 |
| 11: April 8 | Parallel and distributed QP. | Cow 22, Boat 18 |
| Assignment 4: query optimization. | Hand-in: week 13. | |
| 12: April 15 | Modern architectures: NoSQL | Cassandra/HBase, MongoDB. |
| 13: April 22 | Modern architectures: MPP and streams. | Hadoop, Hive, StreamBase, Storm. |
| Assignment 5: transactions. | Hand-in: week 15. | |
| 14: April 29 | Modern architectures: graph and prob. DBs | Pregel/GoldenOrb/Giraph, MayBMS, MCDB. |
| Final exam. | Date to be announced (mid-May) |
Assignments
will be made available on Mondays at 9am, and are due on
Mondays 11:59pm on their hand-in weeks.