Sections covered in this article: Fundamental forms, Saving form data, and Checking form data.
In each CoreDogs Experience article, my goal is twofold: (1) to look in-depth at a single feature of the site or its content (this will likely be analysis or commentary of a CoreDogs feature that is present in multiple places as opposed to a single section) and (2) to take a look at what went on in a given section of the course.
CoreDogs Feature: Humor
In addition to the minimalist writing style and Socratic dialogue methods, a fair share of humor is interspersed throughout the content. Humor is a very personal thing, (preferences can greatly vary between individuals) and my first concern would be that the creator’s humor style would be an annoying hindrance throughout the course. Let’s look at an example of CoreDogs’ humor:
[image here]
Most of the humor revolves around the idea that the “speaker” of the content may or may not be a dog. It’s funny, yet neutral. It never pokes fun at any potentially controversial topics/debates/issues. Another common example of this is that whenever the student sees the results of a “productivity win”, they are treated to a resounding W00f!
I’ll let readers decide for themselves, but I don’t mind the humor at all. It always seems to be brief, entertaining, and not detracting from the educational value of the content. Though, it’s not hard for me to imagine that those who are less inclined to humor may have trouble picking up on the whole dog shtick and in a grievous error reduce all hints of humor to an inadequate word like “stupid”. You win some and you lose some I guess, but in my opinion the humor works.
Course Content So Far
The Fundamental forms section focused on the basics of creating forms for web pages. It began with the HTML basics, and then moved onto some pieces of form creation that involve PHP. In usual CoreDogs style, all the usual factors that make the learning beneficial (the humor, writing style, and dogs) are all still being used.
At the beginning of this section though, the instruction seemed a bit hazy. Many new ideas were introduced successively, some that seemingly contradicted things I have learned previously. Specifically, it was hard to grasp the idea of “sending form data to a page”. Is this like sending data to a PHP script or program that resides on the server? Consistent use and explanation of these terms would take some burden off the student.
Furthermore, the concept of HTTP GET requests and included headers are also introduced in this section but I found myself wondering “Why?”. After completing the majority of the sections regarding forms I was able to understand that pages/programs need to receive this data in so that they can process or check it in some way.
Another area that could use clarification is the distinction between a method and a function in PHP programming. In the Doing Computations lesson when I would see the term “shipping method” mentioned, I kept wondering where the corresponded method was located in the code. I later realized that this one was my own brain’s fault – the course content was simply referring to the method with which a purchased product was to be shipped, not an actual method used in programming. Furthermore, this distinction is briefly mentioned in the Checking form data section.
There were also some very helpful parts in this section, particularly on the Magic quotes and strings page. I had always wondered why on some web pages, data output would seem corrupted, with all of these weird backslashes in the middle of the words. Right after I read the content that explained this occurrence I wondered “WHY?!?!” and sure enough, the dogs were right there, asking and answering the same question.
The Saving form data section includes lessons on sending form data by email, or saving the data to a file. These were both quite helpful. After learning PHP, I can imagine one of the first things a student might want to do is to create a contact form on their website that allows visitors to ask a question or send a comment. This lesson shows how to do that.
Also, in the sending form data by email lesson, the concept of “arguments” within a PHP function is mentioned, but not really introduced. For someone who is new to PHP and programming as whole (which is likely the target audience for the content) it would be helpful to explain what an argument is and what it does within a function. A graphic of a function with arrows pointing the arguments might be nice[1].
The saving form data to a file lesson was equally as helpful. I particularly like figure 9, a table that shows the step by step interaction between the browser, apache web server, and PHP interpreter. Seeing this really helped to solidify what was actually going. A few more of these in other areas may be helpful (There is also one in the Complete validation lesson). Also, the variety of exercises in this section is a good thing. I especially like the fact that the “Transaction log” exercise was directly applicable to use in a small business. This is something that has the potential to be immediately useful to students.
The Checking form data section ended up being very complex. It revolved mainly around validating user input, but eventually this included using JavaScript on the browser side, PHP on the server side, and then getting them to work with each other and appear seamless to the user. Despite this complexity it was possible to understand the lesson; one just needs a firm foundation of understanding before putting all the pieces together. The section culminates in a mega-example in the Complete validation lesson. HTML, CSS, JavaScript, and PHP are all in play here.
One question that I kept asking myself was “Why do we need server side validation if the data is being checked by JavaScript in the client side?”. There were three reasons listed in Basic server-side validation lesson that aimed to answer this! Once again the content seems to anticipate the questions that the student may ask.
PHP Function Libraries are mentioned in both the PHP Functions and PHP Validation Function lessons. I found myself wondering why these files use the “.inc” extension. This may be a good question for the dogs to explain.
On the whole, this section required some very hefty thinking. In fact, the complexity of the final example was almost a little too much. This may be because the example used a lot of JavaScript which is taught in the ClientCore book. It’s been a while since I had personally been through that book, so I’m sure that contributed to the difficulty. I found that I was removing myself from the flow of the lesson more often than usual in order look something up or look back to another lesson for clarification. Moving in and out of the lesson became disorienting after a while, especially because of the longer lesson length. This could be combated in a few ways: (1) break down the information into smaller bits. It makes sense for all the content in the Complete Validation page to remain together but maybe the use of H3 tags could be employed even more. (H3 tags are put to good use in the Code Changes section) Breaking the content up graphically like this may help to keep students brains from launching into the stratosphere. (2) since a lot of the complexity comes from the fact that we are dealing with both JavaScript and PHP it would be helpful if each time focus is shifted to a bit of code, it would be announced if it was PHP or JavaScript. This is done sometimes, but for example below figure 8 in the Complete validation lesson, instead of saying:
If the submit() function returns true, the browser goes ahead and…
You could say:
If the JavaScript submit() function returns true, the browser goes ahead and…
Clarifying the language being used as much as possible should help to keep students’ heads on straight.
Finally, I love the “name dropping” of useful webber resources whenever applicable. Specifically, mentioning the FAMFAMFAM Silk Icon set. Sometimes searching for the best (free) resources can consume just as much time as the actual coding. Sharing these resources is highly beneficial.
All in all, these sections were another great chunk of instruction. For the first time things started feeling really tough (In the Complete validation lesson) but given the complexity of what is being taught, this is probably excusable.
[1] Technically, there is a graphic like this in the PHP Functions lesson, but shouldn’t this be explained when we first start talking about functions and arguments?