NOTE: This is a live document and is subject to change throughout the semester.
This course is designed to introduce the essential concepts of database systems and implementation of database applications. The topics covered in the course have wide applications and will help you to think about how to model, organize, and find data. The techniques have a wide variety of uses. Some of my favorites are analytics, predictions, web applications, physics, and anthropology. Topics include modeling and organizing data, relational algebra fundamentals; SQL query language; index file structures. We will also discuss current trends in database design, including the various flavors of noSQL databases and more advanced topics. Throughout the course students will gain hands on experience through assignments and team projects.
Class will be a mix of lecture and solving problems in class . Problems are designed to give you a better understanding of the topics taught in lecture. Early in the lecture, we will have a lot of of concepts to cover. Initially, most problems will be written. For written assignments, you will submit using Gradescope. Our course entry code is M4VY3B.
As we advance, we will start writing code, so, you will want to bring your laptop (or work with a partner if you don't have a laptop). For coding assignments, code will be provided to get you up and running. You must demo your labs to me in class or office hours and push your code up to Bitbucket in a repository you've shared with me prior to class on the due date.
All assignments and other resources for the class will be made available via Bitbucket. I suggest forking the repository so that you can maintain your own course materials. See the resources below for forking directions.
To clone this repo:
$ git clone https://bitbucket.org/msu-cs/csci-440-fall2018
Mon, Wed, Fri 11:00 - 11:50 301 Lindfield Hall
David L. Millman, Ph.D.
Email: david.millman@montana.edu
Office hours: Mon 12:00 - 12:50 and Thurs 14:00 - 14:50
Bitbucket username: david_millman
Philip Neill
Email: philip.neill@hotmail.com
Bitbucket username: Philip2907
All optional but recommended
- Fundamentals of Database Systems, 7th edition, (FoDS in recommended reading below).
- W3 Schools SQL Tutorial (W3 in recommended reading below).
The lecture schedule is subject to change throughout the semester, but here is the current plan. Assignments and due dates will be updated as they're assigned in class.
| Date | Description | Assigned | Due | Reading |
|---|---|---|---|---|
| 8/27 | Database Systems | |||
| 8/29 | DB example | FoDS 1 | ||
| 8/31 | Model, Schemas, and three schema arch | FoDS 2.1-.4 |
| Date | Description | Assigned | Due | Reading | Video |
|---|---|---|---|---|---|
| 9/3 | Labor Day (no class) | ||||
| 9/5 | Conceptual Design & Company Example | Homework 01 (D2L quiz) | FoDS 3.1-.3 | ||
| 9/7 | ER Model - Attributes | FoDS 3.3 | |||
| 9/10 | ER Model - Relationships | Homework 02 (D2L quiz) | FoDS 3.3-.7 | playlist | |
| 9/12 | ER Model - Relationships (pt 2) | Homework 01 | FoDS 3.4-.7 | playlist | |
| 9/14 | Enhanced ER | FoDS 4.1-.3 | playlist | ||
| 9/17 | Relational Data Model - Relations | Homework 03 (D2L quiz) | Homework 02 | FoDS 5.1 | |
| 9/19 | Relational Data Model - Constraints | Proj Pt1 | FoDS 5.2 | playlist | |
| 9/21 | Relational Data Model - Integrity | FoDS 5.2-.3 | playlist | ||
| 9/24 | ER to Relational Mapping - Entities | Homework 04 (D2L quiz) | Homework 03 | FoDS 9 | |
| 9/26 | ER to Relational Mapping - Relations | Proj Pt 2 | Proj Pt 1 | FoDS 9 | |
| 9/28 | ER to Relational Mapping - Practice | FoDS 14.1-.2 |
| Date | Description | Assigned | Due | Recommended Reading |
|---|---|---|---|---|
| 10/1 | Normal Forms - Guidelines | Homework 04 | FoDS 14.1 | |
| 10/3 | Normal Forms - FD | FoDS 14.2 | ||
| 10/5 | Exam | |||
| 10/8 | Normal Forms - 1&2NF | Homework 05 | FoDS 14.3 | |
| 10/10 | Normal Forms - 3&BCNF | FoDS 14.5 | ||
| 10/12 | Relational Algebra | Homework 05 | FoDS 8.1-8.3 | |
| 10/15 | Relational Algebra Practice | Homework 06 | FoDS 8.5 | |
| 10/17 | SQLscript | FoDS 6.1-.4 | ||
| 10/19 | Basic SQL | Proj Pt 2 | FoDS 6.1-.4 | |
| 10/22 | Basic SQL | Homework 07 | Homework 06 | FoDS 6.1-.4 |
| 10/24 | Basic SQL | FoDS 6.1-.4 | ||
| 10/26 | Inter SQLscript | FoDS 7.1 | ||
| 10/29 | Intermediate SQL | Writing Project | Homework 07 | FoDS 7.2 |
| 10/31 | Intermediate SQL | Writing Project ideas due | FoDS 7.3 |
| Date | Description | Assigned | Due | Recommended Reading |
|---|---|---|---|---|
| 11/2 | Invention session with Writing Center | |||
| 11/5 | Proj Pt 03 | |||
| 11/7 | ||||
| 11/9 | Technical side of giving feedback | Writing Project v0 | ||
| 11/12 | ||||
| 11/14 | ||||
| 11/16 | Feedback on Project v0 | |||
| 11/19 | ||||
| 11/21 | ||||
| 11/23 | ||||
| 11/26 | ||||
| 11/28 | ||||
| 11/30 | Writing Project v1 |
| Date | Description | Assigned | Due | Recommended Reading |
|---|---|---|---|---|
| 12/3 | ||||
| 12/5 | ||||
| 12/7 | ||||
| 12/11 (4-6) | Finals period | Tutorial Pitch |
- Indexing
- Transactions
- NoSQL
- Web Programming
- Data Mining
- Query Optimization
- Spatial databases
PREREQUISITE: CSCI 232. DBMS architecture; major database models; relational algebra fundamentals; SQL query language; index file structures, data modeling and management, entity relationship diagrams.
At the end of the course, students should be able to:
- Explain the characteristics of different data storage methods
- Design database storage structure on conceptual and relational levels
- Explain the purpose of normal forms and perform data normalization up to 3NF
- Form relational algebra and SQL queries
- Implement and query relational databases using a DBMS
- Utilize a designed and populated database to analyze the associated data
- Attendance and Participation 5%
- Homework 25%
- Project 20%
- Tutorial 20%
- Exam 1 15%
- Exam 2 15%
Group discussions, questions, and announcements will take place using Brightspace. It is OK to send me an email if you have a question that you feel is not appropriate to share with the class. If, however, you send me an email with a question for which the response would be useful to the rest of the class, I will likely ask you to post it.
Collaboration IS encouraged, however, all submitted individual work must be your own and you must acknowledge your collaborators at the beginning of the submission.
On any group project, every team member is expected to make a substantial contribution. The distribution of the work, however, is up to the team.
A few specifics for the assignments. You may:
- Work with the other people on your team.
- Share ideas with other teams.
- Help other teams debug their code.
You may NOT:
- Share code that you wrote with other teams.
- Submit code that someone on your team did not write.
- Modify another's code and claim it as your own.
Using resources in addition to the course materials is encouraged. But, be sure to properly cite additional resources. Remember, it is NEVER acceptable to pass others work off as your own.
Paraphrasing or quoting another’s work without citing the source is a form of academic misconduct. Even inadvertent or unintentional misuse or appropriation of another’s work (such as relying heavily on source material that is not acknowledged) is considered plagiarism. If you have any questions about using and citing sources, you are expected to ask for clarification. My rule of thumb is if I am in doubt, I cite.
By participating in this class, you agree to abide by the student code of conduct. Please review the policy.
All assignments must be submitted by the start of class on the due date. Late assignments will not be accepted.
For descriptive assignments and reports, the submission should be typed up and submitted as a PDF (LaTeX suggested but not required). For code assignments, well organized source code with clear comments should be submitted.
Class attendance is mandatory. You are responsible for the material covered in class. Prepare in advance for class by reading and studying the assigned text, and by making sure you understand the previous lecture.
Except for note taking and coding, please keep electronic devices off during class, they can be distractions to other students. Disruptions to the class will result in you being asked to leave the lecture and will negatively impact your grade.
If you have a documented disability for which you are or may be requesting an accommodation(s), you are encouraged to contact me and Disabled Student Services as soon as possible.