Professor: Stan Gunn
Office Hours: I am available via Zoom, Google Hangout, FaceTime, or phone conference on request.
The primary goal of this class is to learn principles and practices of database management and database design. Over the course of the semester we will discuss relational database design, data types, sorting, indexing, and normalization. We will learn and practice the fundamentals of Structured Query Language (SQL) and how it can be used to store and retrieve data from a relational database, database security, and the impact of databases on society. Class modules will build up a theory of database design with instruction, examples, and exercises that focus on the fundamentals of creating and normalizing database structures, as well as developing increasing sophisticated queries against multiple related tables. For the later modules of the class we will learn the fundamentals of database design using MySQL. MySQL is a powerful relational database management system used at companies such as Google and Facebook. We use MySQL as our primary platform because it is commonly (and freely) available and provides substantially the same functionality as commercial databases such as Microsoft SQL Server and Oracle. While we will discuss and review non-relational/NoSQL databases (either "Non SQL" or "Not Only SQL" depending on the source) our primary focus will be on more formally-structured relational databases, as these still make up the large majority of databases in use.
No previous programming or database experience is required for this course.
Assignments and Grading
Assignments for the class will include a few short written analyses of database-related topics and series of short database exercises designed to complement the examples provided in each module. These exercises must be completed by the assigned deadline. They will represent not only a demonstration of the students' grasp of concepts covered in the course, they will also provide a convenient knowledge base from which students can draw when designing their own final project. There will also be a final project that will represent the culmination of the information students learn throughout the course. While assignments must be turned in individually I actively encourage students to collaborate with their classmates.
Late Assignment Policy: I do accept late assignments, though there will be some deduction of points from your grade if it is turned in late without explanation. If you have circumstances that you believe will cause you to be late in turning in an assignment, or are impeding you from completing an assignment, I urge you to contact me as soon as possible. I will be flexible on this policy if you let me know in advance.
The order and amount of time spent on each topic may vary from semester to semester, but the overall structure of the class will include the topics below:
- Discussion of databases and society
- Databases and database management systems
- Database structures
- Data types
- Primary keys and foreign keys
- Data security
- Building Tables and relationships
- Introduction to MySQL
- sorting and indexing
- Troubleshooting your queries
- Using SELECT statements
- JOINs across tables
- Refining your searches
This section of INF 385M will be taught as a fully online, and mostly asynchronous, class. What does this mean? It means that the class will be taught using a variety of different methods including video lectures, teleconferencing, and individual assignments -- all of it in a virtual environment. It also means that, while assignments are due on a regular basis, the lectures and readings can be done on a schedule that works best for you.
This course is divided into modules. A module covers a week of activities during fall and spring semesters and 5 days during summer sessions. Modules for the class will be released on a regular schedule, though sometimes just 2-3 weeks in advance because I frequently update and revise course material. For each module you will receive links to lectures, readings, notes as well as assignments and group activities. Exercises are expected to be completed by the assigned deadline unless you have made prior arrangements with me.
Readings for this Course
Over the last few years I have made a concerted effort to eliminate the need for students to purchase textbooks or supplemental material for this class. We use online, open educational resources (OER) to eliminate any costs beyond your tuition and fees. All readings to supplement the class video lectures and material are linked to or taken from a curated selection of web-based sources, or are downloadable in the Files section of the course's Canvas page.
That said, occasionally I am asked if I can recommend books that address the subjects we cover in class. If you would like reference texts to supplement the in-class materials I recommend these books:
- Data and Goliath, Bruce Shneier
- MySQL Pocket Reference, George Reese
Because learning how to construct and query databases is best done in a hand-on learning environment each student will be assigned their own online lab using MariaDB installed on a Linux-based server, along with a few sample databases. You will find that everything we learn in this class should translate to any other commercial or open source relational database management system (RDBMS).
Welcome to class and I look forward to meeting all of you!
The syllabus page shows a table-oriented view of the course schedule, and the basics of course grading. You can add any other comments, notes, or thoughts you have about the course structure, course policies or anything else.
To add some comments, click the "Edit" link at the top.