Showing posts with label task analysis. Show all posts
Showing posts with label task analysis. Show all posts

Monday, February 27, 2012

Learning C

I've made it a goal to learn the C programming language.  Why, you may ask?  Why am I subjecting myself to the pains of learning a language that was replaced by so many other Object Oriented Languages like C++, C#, or Objective-C?  Well, I'm glad you asked!  

I've had several people ask me how they can learn to program for the iPhone or iPad.  Generally they don't have any programming experience (though some may have HTML coding experience), and they just want to write the next app that will allow them to get out there.  The thing is, if you go to learn Objective-C, every tutorial, self-taught book, and whitepaper assumes you have already learned an OOP language, and just need to port your skills over to Objective-C.  

Unfortunately, that is not the case.  You see, in my experience, there are a lot of people that now have a platform that fits their imagination, and want to learn to program for this platform.  Generally they will either be graphic designers, educational professionals, or even just writers.  They have never had a programming class, or at least nothing beyond learning to write up a web page.  How are they supposed to wrap their heads around objects, structures, strings, arrays, etc. if they haven't had any formal training in the basics of programming?  

So I made it my goal to teach an introduction to programming class.  Great, but what language?  If you are not familiar with the programming world, you may not know that there are several languages out there that could do the job as a primer.  There's C (of course), Java, Lua, Ruby, Python, Perl, and several others that I didn't consider.  So the question then became, how do I want the students to learn to program for the iPhone?  

I first thought Java would be a no-brainer, as it's pretty standard for cross-platform programming, and the basis of the programming language for Android.  I figured I would just kill two birds with one stone!  But Java has a lot of built-in short-cuts that end up being bad practice when you try to learn Objective-C.  The same goes for all the other languages out there, except for C. 

C is unique because it is the basis of Objective-C.  All the tools you can use in C are there in Objective-C, plus additional tools that we could cover when we got there.  And as I took Objective-C primer classes from Apple, I found that starting from a language like C can help you develop a better memory-managed and optimized program for an iOS device.  Things were looking up. 

But how does one learn C?  Most programming books I found out there focus on C and C++ (another Object-Oriented Programming language like Objective-C), and they are not the same thing.  So I started scouring the Internet for some good tutorials, and started going through them.  While I went through them, I started writing my book.  Not to copy, obviously, but to make sure I understood the concept.  I would test it in Xcode to make sure everything worked.  If it didn't, I would start hitting up the Internet again to find out why.  

So at this point I'm almost done with the content of my book, and I think I have a great foundation for anyone looking to learn how to program in Objective-C: learn C first.  As I went through the C tutorials, things in Objective-C that I just had to "accept" as right made sense.  I finally started to understand what the developers of Objective-C were thinking when they went that direction (instead of C++).  

It's like learning Latin to get a better understanding of Spanish or Italian.  Or learning Latin and Ancient Greek to better understand Celtic, Sanskrit, or German.  It's all about seeing the basis, the foundation, and seeing how it grows from there.  

Once I finish this workbook, my next project is to learn to program in Objective-C for the Mac desktop.  Again, it's just a stepping stone to move from there to the iPhone, and so many programs are now integrated through iCloud that it makes sense to be able to code for both.  I'm really looking forward to offering these classes!

Friday, March 28, 2008

Task Analysis: Lost In Translation

The task analysis is the most important part of instructional design: but what if you have an overly complicated topic? For instance, suppose you have a language that you would like to teach (German, French, Perl, C++), and you want to break it down into usable, manageable chunks for instruction. How would you do it? The idea is daunting; so daunting in fact that many language instructors simply go to the established curriculum design from ages past, and go with it. While it has a proven track record, is it really the way to go?

The analysis should instead be hinged not on what could be taught, but what the end goal is based on. This is called the Problem-Solution document, or a clear declaration of what need you intend to meet and the degree that need will be met. So, with this in mind, the language goal isn't as daunting. Here is an example:

The Problem
Many people do not have a working knowledge of German, and therefore cannot function well within an all German-speaking environment.

The Solution
Provide the learner with basic grammar, vocabulary, and phrases to allow for productive interaction within a German-speaking environment, to the extent that the learner is able to understand basic requests and communicate same.

The above outlines a specific, measurable need: students need to understand basic requests when spoken to them, and communicate those same basic requests in a coherent fashion. Notice, a comprehensive discussion of the language is not required, nor a comprehensive history of the language. Just the basics that can be measured by success in both understanding and communicating with someone in a German environment. Already we have avoided the most common pitfall in most reference books that bill themselves as "learning tools". Learning materials are not course materials, and vice versa. There is a time for detail, and a time for simple instruction.

So, with the goal in mind, we can start our learning process on the following premise: 1) our learners need to understand some basic grammar, 2) our learners need to know come basic vocabulary, 3) our learners need to know how both grammar and vocabulary work together to create a comprehensible phrase. Then, the phrases can be tested to see if the comprehension of our students is where it should be. Now that we have our three "jobs" to accomplish within the course, we can move on to the various tasks that are required to understand the grammar, vocabulary, and phrase utility.

Often times you may hear (or read as the case may be) me complain about instructional books, primarily from the Tech industry. This is because the Tech industry (among others) has been inundated for years by experts that definitely know their stuff, but don't necessarily know how to help others learn. The popular RTFM (read the freaking manual) reply is far too prevalent today, and underlines the lack of willingness to put the effort into education. It may be "funny" to the one posting it, but to those searching out for help it becomes frustration. Either that, or it shows a lack of knowledge that is then hidden behind a mask of superiority. Which do you think comes to mind when I read such a response while looking for a solution?

This is why those in charge of training and education need to step up to the challenge. So many people out there need to understand how to use the new technologies, information, and tools that are available in order to better their own job (and consequently, the rest of the economy), and it is up to educators that are dedicated to developing proper instructional designs to convey this information. Whether it be in a book, online, or in a classroom, the techniques and task analyses are the same.

Thursday, March 20, 2008

The Task Analysis Revisited

It's been a long time since I have posted anything on instructional development. But yesterday the power was out in my office for the entire day, giving me a chance to work from home. There I started to focus on the course development process again.

Learning To Cook: A Quick Task Analysis
Let's take a deceptively simple topic like learning to cook. There are a lot of self-help books out there, recipes, and even websites that give you some general information, and basically throw you into the deep end. Can it really be that simple to learn how to cook? I thought I would run a quick task analysis on the process to see what I could come up with.

I began by tearing down the process of cooking to several jobs. You have the basic understanding of the tools involved, the need for clean environments and fresh food, and the processing techniques to prepare the food. I then looked at the various methods of cooking, depending on the desired outcome. I then ordered them approximately based on the jobs that need to be understood in order to successfully complete the next job. This follows the Constructivist method of instruction, allowing for layered modules that build upon each other.

I ended up with the following breakdown:

1. Equipment
2. Measurements
3. Cleanliness
4. Preparing Food
5. Seasoning Food
6. Heating Food

As actual consumption of the food is not technically part of the cooking process, I left it out of the list. The idea being that once you are done, you can move on to the next job: eating food. ^_^

From these basic jobs expected from a cook, I can then break them down into individual tasks. For example Equipment could be broken down into these sections:
1.1 Cleaning Tools
1.2 Hand Tools
1.3 Preparation Tools
1.4 Cooking Surfaces
1.5 Measurement Tools

These tasks can be broken down even further into sub-tasks, which can be broken down still further into your skills and knowledge. From the eventual breakdown, you get a complete outline of your course, all from the analysis. At this point your instructor can fill in the actual lecture material themselves, either on the fly while teaching or (if in an online environment) with carefully structured lectures.

I could have been quoted as saying that a subject matter expert (SME) isn't necessarily a good teacher. That's because (among other things) a SME doesn't have a concept of task analysis. The second concept that a lot of SME's have trouble with is Cognitive Load, which will be a topic for another post.

If you are looking to teach anything, it's a good idea that you focus a lot of your time in analysis. Task Analysis can take a long time to complete, but in the end it makes the rest of the process a lot easier. You can also target specific portions of your analysis after you have evaluated course success.