Teaching PHP: Course Curriculum

The problem, succinctly stated, is: How do you best organize 14 weeks of study to teach PHP to a group of motivated College students?

I know they must be pretty motivated, because they’re signing up for this optional elective despite the fact that it starts at 8 am.

This Fall, I will be teaching a course in Web Application Development at FSU. The topic will be server-side scripting, and the focus will be PHP. Since I’ve taught this course before, developing the curriculum won’t take months, but I am nevertheless spending a fair amount of time updating and tweaking for the next go-around.

A quick Google Search for "Teaching PHP brings up only a few relevant links, mostly message board discussions. “Server Side Scripting Curriculum” doesn't return much either. Likewise, the WaSP Server-Side Scripting Curriculum only gets us halfway to where we need to be by the end of the term.

So, I’ve had to come up with a lot of the course unilaterally. The learning objectives are as follows:

By the end of the course, students will understand:

  • Basic programming skills
  • Web application development principles, including MVC
  • How to find and use PHP resources on the Internet
  • How to manage tasks, bugs, and revision control mechanisms for web projects

In addition, students should be able to:

  • Program and deploy simple scripts in PHP
  • Process web-based input and output in PHP
  • Build multi-file PHP applications
  • Connect PHP applications to a database
  • Design a simple dynamic website using PHP, MySQL, HTML, and CSS

After a few years of teaching the course, I've managed to find a way to squeeze these topics into the course of the semester:

  1. The current “State of the Internet”
  2. Overview of HTTP
  3. Basic GIT Revision Control
  4. Web resources - PHP.net, Stackoverflow.com, etc
  5. Netbeans setup and good practices for personal development workflow
  6. PHP basics – Syntax, variables, arrays, functions, iterators, etc.
  7. Form processing and security
  8. Classes and objects
  9. MYSQL Database connectivity and integration
  10. Sessions and authentication
  11. Front Controller design pattern
  12. MVC frameworks (we use CodeIgniter, because of its great documentation)
  13. Basic management tools: Ticket and bug tracking
  14. XML and JSON processing
  15. Web Services - Building a REST client
  16. Unit Testing - Just a one-day intro; nothing comprehensive
  17. AJAX - Again, just a basic introduction

That's a lot of information. In fact, the students have officially given me the reputation as a "hard instructor". Meh, I'll take it.

I really would love to teach a second-level course if I ever have time to do so. Despite the fact that we cover a lot in the first course, there are many topics that just don't fit into a single semester (dependency injection, loose coupling, comprehensive testing, design principles, development workflow, etc).

For those that are interested, I keep my course calendar and current assignments online at http://lis4368.cci.fsu.edu.

This article was published on August 3, 2009 and updated on January 13, 2012 by Casey McLaughlin.

You can find more articles and other stuff on my website.