Posts Tagged The CoreDogs Expierience

The CoreDogs Experience: Part 4

Sections covered in this article: Basic database applications.

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: Organization

So far we’ve taken a look at several of CoreDogs’ differentiating features.  Now, let’s take a look at the way the site is organized.  There are three “books” of instruction; Foundations, ClientCore, and ServerCore.  Within each of these books are 5-10 lessons.  Each lesson contains a number of “sub-lessons” or explanations.  There is a definite and obvious hierarchal structure to the entire site.

Another element of organization that I really like is the Wikipedia-style table of contents at the beginning of each sub-lesson.  Here is the table of contents for the Creating a database lesson:

[image here]

Each item on the table of contents is clickable and takes the user to a hash tagged location on the page.  I love seeing this simplistic table of contents at the beginning of each sub-lesson because it lets me know (along with the “Where are we?” and “Lesson Goals” sections) what exactly I’m in for and how much content there is.  Additionally it gives me an instant picture in my mind of the shape of the lesson.  By “shape of the lesson” I mean something like the story arc of a book or movie.  It’s a sort of Cliff Notes to what I’m going to be learning.

Course Content So Far

The Basic database applications section focuses on creating an application (in the form of a website) that displays information (from a database) for users.  Furthermore, the application allows administrators to add, edit, or delete records in the database.  As noted in a previous article I found the sections regarding forms to be tough and a little hazy in instruction, but this database section was a home run.

The way that this section teaches the concepts should be imitated as much as possible in today’s textbooks.  The first three sub-lessons (of 17 total) focus on providing the goals of and necessary background information for creating a basic database application.  Then, two separate Sample applications are introduced; a website called DogToys (that stores products in its database) and a website called DogRock (which stores articles about dog rock music).  As new concepts are introduced throughout the section, it is explained how the concept would be implemented on each site.

Furthermore, the student is instructed to build a third sample throughout the section; a website that stores jokes in its database.  So for each concept that is taught, the student not only sees it implemented in two different samples, but then is charged with implementing it themselves in their own, slightly different sample.  When done this way, CoreDogs does not teach the student how to replicate an action; it actually causes them to be able to apply what is learned in a real world situation.  If one is able to create a basic database application revolving around jokes, why wouldn’t they be able to create one revolving around books?

On top of these praises, I have to add that creating the database was fun.  I actually enjoyed myself as I worked through each sub-lesson, crafting my application to make it better, bit by bit.  The way that the entire Basic database applications section is broken up is masterful; at no point did I feel bogged down or confused.  This is what the Form lessons should ideally be like as well.

There are a few ways that this section of the ServerCore book could be even better.  First of all, when MySQL injection attacks are discussed, it may be helpful to provide a little further explanation as to what the “escape_string” method actually does to the data.  I also found myself wondering if phpMyAdmin is only for use in PHP applications, or can be used otherwise as well.

Finally, the exercises page could use some help.  It seems that there are three large projects offered here, but each one is broken into three smaller exercises.  I understand that this helps break down the work, but it can also be disorienting to fish through nine different exercise wondering “Which one should I do?”.  Simply dividing up each group of exercises would probably do the trick.

All in all, this was an excellent section of CoreDogs.  The “learning” itself was at the seemingly perfect steepness so that this student was never frustrated and actually enjoyed creating the application.  Seriously, all textbook should try teaching their concepts in this fashion; it could change the way that we learn.

Tags: , , , , , ,

The CoreDogs Experience: Part 3

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?

Tags: , , , , ,