Office Hours: (As requested. I work off-campus during the day but I will meet with students at any time that's convenient with 24 hours notice.
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 relational database design, normalization, SQL queries, reports and writing code to interface with databases. Additional lectures will cover ethical and privacy issues associated with database systems, as well as database security. In-class instruction and exercises will focus on the fundamentals for building and normalizing database structures, as well as creating sophisticated, interactive, and secure database applications. For the first four weeks of lecture we will spend part of each evening studying the PHP programming language in order to better understand how data structures are stored and retrieved on computer systems, as well as laying the groundwork for a robust interface to 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.
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 6 assignments worth 8 points each that will represent 48% of the 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.
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 files page as command.txt
- PHP for the Web (5th Edition)