Archive for January 10, 2010

Teaching Logic/Programming

As a kid, I had an Atari 600XL that I purchased with my Christmas/Birthday money in 1984.  I used to spend a lot time with some of my mom’s college basic books and books from the library on basic programming.  With my tape drive and black/white TV, I would type in the programs and then modify them, learning important concepts about program logic and flow.  This would eventually lead to my current career path, including a BS in Computer Science and now managing a group responsible for architecting monitoring and automation solutions for a large financial institution.

As my daughter gets older, she is 6 now, I wanted to find resources to at least introduce her to logic and how logic plays in computer programming.  To me, the ability to solve a problem through a logical progression of steps is one of the most important skills that I learned from those books and early programs.  There is no more built-in Basic to start with, and some of the languages out there do not lend themselves well for entry-level learning of concepts.  What I wanted was something that would teach the concepts of logic and program flow to solve a problem.

To that extent, I found two programs that do that in a fun way.  While you will not be teaching them to create a statistical analysis program, what you will be teaching is how to get an object on the screen to move from one side of the screen to the other while performing some other action. Language syntax to me is not as important as the concepts of creating a flow and then translating that action flow into specific steps to get to the end result.

Alice (Carnegie-Melon University)

I had looked at Alice a while ago and was impressed at the professionalism of the application and the amount of options that it allowed the budding computer programmer.   The programmer is responsible for creating an environment of objects (people, animals, etc) and then utilizing the Alice language to determine what actions these objects should take.  These actions are in effect methods to be performed on the object.  Along with just simple move 10 spaces or turn 90 degrees, there is the whole suite of program flow statements (if…then, while…do) along with how to interact with other objects and interactions from an external event such as a key command.

Alice is particularly powerful and better suited for Middle School and High School students.  The capabilities of the program are just tremendous.

Scratch (MIT)

Scratch is a beginning programming language similiar to Alice, but from MIT.  I found that Scratch, while providing a lot of the same capabilities of Alice, was easier to use and focussed on 2D rather than 3D objects.  Scratch seems to be developed for a younger audience than Alice.  The methods for the objects are less plentiful, allowing a starting programmer not to be confused or overwhelmed by the number of options that are out there.  You can still move the object, change color and interact with other objects and external events.

While both of these environments are geered to teaching programming concepts, they are in effect more than just simple animation and game environments.  Some of the examples on the websites of both tools are very intricate and show that a large complex program involving multiple objects, methods and interactions between objects.  I am amazed at the level of complexity, yet simplistic approach these programs take to teaching programming concepts.

We have come a long way from the early days of Basic on the home computer.  I encourage all tech minded parents to take a look at these two programs and suggest any others that you think are interesting.

Comments off

Get Adobe Flash player