Learn How to Program: PHP

Title: Learn How to Program: PHP
Author: Epicodus
For: People looking to understand the fundamentals of programming and PHP.

Very generously, Epicodus has released their entire curriculum for free through their www.learnhowtoprogram.com site. I decided to take a break from JavaScript and decided to get my hands dirty in some PHP. It was a pleasure using Epicodus’ material – it’s well organized, comprehensive, test-driven, and focused on real-world applications. On top of learning programming fundamentals and the PHP language, Epicodus’ PHP program covers a variety of important technologies including Silex (the lightweight framework based on Symfony), Twig (the templating language), and PHPUnit (a testing framework for PHP). Equally as important as all of these, the course uses and teaches MySQL for PHP’s database counterpart.

The Content

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 feel like if there’s any fault in the content of this course, it’s that they ignore most of HTML and CSS almost entirely (Bootstrap is dropped in, but I think it’s be nice if they had custom CSS for projects in the course). I believe they have an introductory course that maybe covers HTML and CSS as well as JavaScript, but it often got boring making projects that were almost entirely backend. Another thing that I feel could be improved: it would be nice to figure a few things out on our own as students. During the lecture the teachers tell you exactly what to type and the projects don’t deviate much from what they’ve already shown you. This leaves some critical thinking skills un-honed. I think it would be nice if they assigned projects that made the student work a little harder – in the vein of Harvard’s CS50 or Free Code Camp’s curriculum.

The Style

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.

Summary

Even though there are many things I would change about this course, it’s still a really great way to up a beginner’s programming skills quickly and you can’t beat the price. It might be a little slow coming from a language that relies heavily on classes, but coming from JavaScript it was an insightful look at classical inheritance and code design. Despite not working much in PHP, I genuinely feel like this course made me a better programmer: learning Silex helped me understand Node/Express more, learning PHPUnit help me write better Mocha/Chai tests, and learning PHP helped me structure my JavaScript and shined light on what makes JS such a unique language.

Return Home