Professor: Stan Gunn
|Office Hours:||As requested. I work off-campus during the day.|
Course Meeting Times
Fall and Spring: Wednesdays 6:30 to 9:30
Summer: Tuesdays and Thursdays 4:00 to 6:00
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 the database relational database design, normalization, SQL queries, reports and other interfaces to database data, and documentation. Lectures will also cover writing ethical and privacy issues associated with database systems. In-class instruction and exercises will focus on the fundamentals for creating sophisticated, interactive, and secure database applications. For the first few weeks of class we will study PHP in order to better understand how data structures are stored and retrieved on computer systems, as well as providing a robust interface for accessing databases via the Web. We will then learn the fundamentals of database design using a variant of MySQL called MariaDB. MySQL and MariaDB are powerful relational database management systems used at companies such as Google and Facebook. We use PHP and MySQL as tools because they are commonly (and freely) available and provide substantially the same set of tools as commercial databases such as Microsoft SQL Server and Oracle. Although there will be a substantial programming (PHP) component to this course, previous programming experience is not required.
At the conclusion of this course students should:
- Understand the fundamentals of how data is stored in computer systems.
- Know the fundamentals of Structured Query Language (SQL) and how it can be used to store and retrieve data from a relational database.
- Be able to apply the principles used in class to build a web-based database application from the ground up.
Programming assignments (60% of final grade)
A series of short programming and database exercises designed to complement the hands-on work done in class. These exercises must be completed each week before the start of class. They will represent not only a demonstration of the students' grasp of concepts covered in the course, they will also provide a convenient code base from which students can draw when designing their own projects. There will be 7 to 10 assignments that will cumulatively be worth 60% of the final grade.
Group Tutorial (10% of final grade)
As an initial collaboration effort, each group of (3-5) students will develop and present an in-class tutorial on a database subject that will be assigned in class. Grades will be based on both the content of the tutorial and the presentation.
Final Project (30% of final grade)
The final project will also be done in groups of 3-5. For the final project, the groups will select or be presented with a real-world scenario for which a web application must be built. The project will incorporate database and programming concepts covered in class. Up to 20 points will be awarded based on the content and construction of the final project, 5 points will be awarded based on the in-class presentation, and 5 points will be based on group participants' member evaluations.
Lecture OrderThe order and amount of time spent on each topic may vary from semester to semester
- Discussion of syllabus and class structure
- Linux, working at the command line
- Coding in PHP - Variables, creating forms
- Coding in PHP - Math and control structures
- Coding in PHP - Arrays
- Coding in PHP - File Access
- Sorting data
- Databases - Normalization
- Databases - Tables and relationships
- Introduction to MySQL/MariaDB
- Databases - SELECT statements
- Putting PHP and SQL together
- Searching databases
- JOIN types
- Refining your searches
- Securing your database applications
- Final presentations
Books Needed for this Course:
- In the Beginning was the Command Line
This book is available as a paperback or can be downloaded from the course documents page.
- PHP for the Web: Visual QuickStart Guide, 4th Edition
- MySQL Crash Course
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.