Office Hours: I am available via Skype, Google Hangout, 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, normalization, SQL queries, 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 of building and normalizing database structures, as well as creating sophisticated, interactive, and secure database applications. For the first four weeks 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 giving students a robust set of tools 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 functionality 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 5-6 assignments worth 4-6 points toward the final grade. While programming assignments will be turned in by individuals I encourage students to collaborate with their team members.
Each cohort of students will be expected to participate in assigned group discussions, collaborative assignments, and develop and present class tutorials on a subject during the semester. Grades will be based on both the content of the tutorial and the presentation.
The final project will also be done by cohort. 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 30 points will be awarded based on the content and construction of the final project, 5 points will be awarded based on the group demo/presentation, and 5 points will be based on group participants' member evaluations.
The order and amount of time spent on each topic may vary from semester to semester