This is an innovative data management course that provides an introduction
to the design and development of fundamental concepts in relational database
management systems (DBMS). You will learn the theory behind database systems,
the issues that affect their functionality and performance, and most importantly,
what it takes to effectively utilize modern databases in practice.
The course has completely been redesigned, all students are expected to work
in a group of four on an exciting, open-ended, data-oriented, quarter-long project,
in a sense, operating and simulating startup environments. Needless to say,
this rewarding experience is accompanied by a significant development effort
that spans hands-on experience on a variety of technologies ranging from front-end
(e.g., React, React Native, Swift, Objective-C, Java) to the back-end (e.g., SQLite,
Firebase, Cassandra, MongoDB, PostgreSQL) in order to build a product around data,
namely, building an Instagram App in this
offering of the course. It involves studying and building all stage of data life-cycle
including but not limited to capturing, aggregating, and visualizing it.
The course work is complementary to the classical well-formed, prescriptive
model of assignments/projects that are indeed effective and invaluable in practice.
Instead by design, the project is intended to be open-ended, namely, minimal
instructions and requirements will be provided, as such it rewards and values
research & development, taking risks, above all, it is aimed to foster and
tap into the creativity of each individual.
The quarter-long project is broken into a set of four milestones, all milestones
will be graded orally, where the progress is presented by all four group members,
and each group member must be ready to answer questions about any aspect of the
project; the latter is utmost importance to ensure comprehensive learning
experience and fair division of work among all members. Furthermore, in each
milestone, a bonus of up to 20% can be gained to further encourge taking a risk,
going the extra mile, and to just be curious & creative.
A fact of life, when there is group work, whether at school or in society,
there are occasional conflicts; and it is crucial to learn how to
resolve our differences and be receptive, open, and kind to one another. In
kindness and reflection, we shall aim to resolve all conflicts. It is the group
responsibility to handle all internal affairs, and only when absolutely necessary
involving the instructor. But note, only under very rare exceptional circumstances,
a group re-structuring would be granted because once the group is formed, at least
for 10 weeks, we must learn how to work with each other in harmony.
For each group, it is recommended that each member lead one aspect of the project
while contributing and learning about other parts; roughly, the four main components
are (1) front-end, UI, and data visualization, (2) app logic and data
aggregation/querying, (3) data model and indexing, and (4) database management
and tunning.
As for the lectures, the list of topics covered would include but not limited to:
-
DBMS Concepts and Architecture
-
Database Design, the E-R Model, Normalization, and Tuning
-
Relational Databases, Relational Algebra and Calculus
-
Query Languages (SQL)
-
Storage and Indexing
-
Query Evaluation and Optimization
-
Management, Concurrency Control, and Recovery
-
Database Security, Blockchain