Title: Learn How to Program: PHP
For: People looking to understand the fundamentals of programming and PHP.
Epicodus’ PHP course is an excellent and comprehensive overview of general programming concepts using PHP and MySQL. Given that no programming experience is necessary, it’s pretty amazing that this course takes students through everything they need to know to create the backend for simple applications. On top of that, it progresses students using a lot of best practices that many courses skip over for the sake of time: things like proper object-oriented programming technique, test-driven development practices, and proper database considerations are often left “for another time.” For better or for worse, this course teaches OOP and TDD like they’re the only possible way to program.
The course is broken into four main sections that illustrate their focus on best-practice app design: Object-oriented PHP (classes, HTTP methods, templating, and MVC), Behavior driven development with PHP (BDD and PHPUnit), Database basics with PHP (SQL, MySQL, and CRUD), and Databases extended (join statements and relationships).
I think the program had a really great variety of resources available. When I took the class there were short videos explaining the concept at hand, text that reinforced and illustrated the concepts discussed in the video, and then assignments that utilized these new skills in order to put them into practice. Often the videos were a little slow and were regularly pretty rudimentary, but it was nice to have hat type of reinforced learning.
Since this is an actual course taught in an actual class format, the material is sorted into weeks and days. There are lectures during the weekend that gets the student ready for the upcoming week along with a daily mix of lectures and assignments to progress the student through the week. I think repetition is a great learning tool, but often this felt a little too repetitive – there are usually several simple assignments that can be done on autopilot once the student has the concept down.
At the end of the course there is a major assignment that is meant to reinforce the lessons learned throughout the whole course. Unfortunately this is just more of the same assignments the students had already done over and over again during the previous weeks, so it didn’t really present any kind of obstacle to conquer before finishing the course. I can’t knock it too much though – the project is meant to be a collaborative project and I was studying alone! I assume this final project is meant to teach students the invaluable skills necessary for collaborative development with proper Git/GitHub workflows.