Instructor: Mohammad Sadoghi
Teaching Fellow: Sarmishta Burujupalli
Teaching Fellow: Giritheja Sreenivasulu
Lecture Time: TueThu 4:40 pm - 6:00 pm
Discussion Time: Wed: 9:00 am - 9:50 am
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 risk, going the extra mile, and 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
- "Database Management Systems", 3rd Edition. Raghu Ramakrishnan and J. Gehrke. McGraw Hill, 2003, ISBN 0-07-246563-8.
- Additionally, a list of research papers will be added later as part of the optional reading for the enthusiastic students.
- "Readings in Database Systems", 4th Edition. Joseph M. Hellerstein, Michael Stonebraker. 2005
- "The Elements of Style", 4th Edition. William Strunk Jr. and E. B. White. 1999
- "Style: Toward Clarity and Grace". Joseph M. Williams. 1995
Workload:The key component of the course is the quarter-long group project that 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. Therefore, for each milestone, a portion of the grade is devoted to the presented project as a whole on which all members receive the same grade (70% of the grade), but the remaining portion is individualized (30% of the grade), so for each milestone, not all group members may receive the same grade. For each milestone, a bonus of up to 20% can be granted.
Additionally, there will be a pre-milestone individual assignment, for which each student is expected to think about and explore all aspects of the project from frontend to the backend. In other words, each student for his/herself, need to think about what it is required to make an app and document their finding in a few pages. Of course, it is highly recommended to search the web for tutorials and other useful materials. As for part this pre-milestone phase, (1) the group must be formed, namely, when each student submit their report, the name of their group members must be submitted; and (2) each student must decide which aspect of the project he/she wishes to lead based on the research. If you need help to form your group and look for partners, kindly contact the TAs. Note any group assignment by TAs will be random.
The mid-term and final will cover materials from the project and lectures.
Grading:The final grade will be based upon the following components:
- Individual Pre-milestone Assignment: 10% (Due on Jan 19, 2019)
- Group Project (four milestones): 60% (15% for each milesone)
- Milestone 1: Researching, evaluating, and finalizing core technologies (Due on Jan 29)
- Milestone 2: Sketching frontend and backend (Due on Feb 12)
- Milestone 3: Demonstrating core functionalities (Due on Feb 26)
- Milestone 4: Putting it all together (Due on Mar 12) (Extra-credit of up to 20% can be earned in each milestone)
Communication:For communication with the instructor, please use email (email@example.com) and not Canvas. The instructor will not check/reply to Canvas messages.
For group communication (monitored by TAs) and other students, we will rely on Slack. Please contact the TAs to add you to our Slack channel: ECS165A Slack.
Course Policy:In this class, we adopt the UC Davis Code of Academic Conduct available here.
In addition, late submission will result in a 10% penalty for each day late. Students are strongly advised that any act of cheating will result in a score of 0 for the entire milestone (or course) and offences will be reported to the Office of the Dean of Students. You are encouraged to discuss problems and ideas but the final solution or code must be your own. In the event of a major campus emergency, course requirements, deadlines, and grading percentages are subject to changes that may be necessitated by a revised semester calendar. If such unusual circumstances arise, students may determine any such changes by contacting the instructor.
- Introduction to Database Systems (Chapter 1)
- The Entity-Relationship Model (Chapter 2)
- The Relational Model (Chapter 3)
- Optional Advanced Topics: Overview of Modern Distributed Data Processing Systems (Hadoop, Spark)
- Relational Algebra (Chapter 4a)
- Relational Calculus (Chapter 4b)
- SQL: Queries, Programming, and Triggers (Chapter 5)
- Optional Advanced Topics: Hive (Paper, Slides by Facebook & Cloudera)
- Optional Advanced Topics: SparkSQL (Paper, Slides by UC, Berkeley, AMPlab & databricks)
- Disks and Files (Chapter 7)
- File Organization and Indexing (Chapter 8)
- Tree-Structured Indexes (Chapter 9)
- Hash-Based Indexes (Chapter 10)
- Optional Advanced Topics: Latch-free, In-memory Indexes (Bw-Tree: Paper, Slides)
- Optional Advanced Topics: In-memory, High-dimensional Indexes
- External Sorting (Chapter 11)
- Evaluation of Relational Operators (Chapter 12a [Join], Chapter 12b [Selection, Projection, etc.])
- Relational Query Optimization (Chapters 13 & 14)
- Optional Advanced Topics: Materialized Views (Survey Paper, Slides)
- Schema Refinement and Normal Forms (Chapter 15)
- Database Design & Index Selection (Chapter 16a, Chapter 16b)
- Transaction Properties (Chapter 18)
- Concurrency Control (Chapter 19)
- Crash Recovery (Chapter 20)
- Optional Advanced Topics: In-memory Databases (Microsoft Hekaton: Paper)
- Optional Advanced Topics: Deterministic Concurrency Control (QueCC: Paper)
- Optional Advanced Topics: Multi-version Optimistic Concurrency Control (2VCC: Paper)
- Optional Advanced Topics: Distributed Non-blocking Transactions (EasyCommit: Paper, Slides)
- Optional Advanced Topics: Distributed Deterministic Transactions (Calvin: Paper, Distributed Workflow: Paper)
- Optional Advanced Topics: Avoiding Distributed Coordination Using Partitioning & Replication (Schism: Paper)
- Optional Advanced Topics: Index Maintenance (Indirection: Paper)
- Optional Advanced Topics: Resilient Distributed Datasets (RDDs: Paper, Slides)
- Optional Advanced Topics: Lineage-based Storage Architecture (L-Store: Paper, Slides)
January 9, 2019: Slides for Discussion session is available here.
January 8, 2019: Welcome to ECS 165A.
Course materials/grades will be made available on your Canvas account.