CSCI E-250 Abstraction and Design [First Impressions]

CSCI E-250 is the Harvard Extension School's offering of the Harvard College's CS-51: Abstraction and Design. There are two reasons I signed up for the class: a really good teaching fellow and I am always interested in becoming a better programmer.

The following are my impressions after the first lecture.

How was the lecturer?
The course is taught by Professor Greg Morrisett. He is not dull by any means, speaking with authority and passion (through his highly-validated opinions). For example, if you're a C++ programmer you could be offended by some of his opening remarks -- apparently, teaching the C++ would go against everything he believes in. Luckily, I avoid C and C++ like the plague so I think I like this guy already.

One statement made me very interested in the class. He states:
"[The class will] change the way you think about programming in a deep way."

A few more times he mentions that there will be an emphasis on stretching of the mind. The stretching is probably related to learning the functional programming language OCAML. And well, this is all exciting. I think I ought to look at programming in a different light.

In undergrad I studied Haskell, an older functional programming language, and I thought it was the best language ever. However, after that particular class I never used it again. I don't remember a thing about it except I was probably the only person that got an A in the class. My peers highly despised the language. It should be fun learning the concepts again.

In the Spring '09 edition of this course we'll be using OCAML and a few given reasons are:

  • Functional programming languages are better
  • FPLs are used on Wall Street and for huge problems, see Map-Reduce 
  • New FPLs are on the rise: F# and scala
  • Languages such as C++ are error prone no matter how skilled the programmer is
  • It uses one of the highest-performance compilers out there
  • It is mostly pure; few side-effects

After our first look of OCAML
The syntax of OCAML does not scare me a whole lot. I recently took a Ruby course so I have a little experience with the concept of a map function. However, a few simple things stood out:

  • Two Semi-colon symbols are used to end a statement or function
  • The underscore symbol matches any string
  • The in keyword can be viewed as a way to define multiple let statements within a block of code

Around the time the professor posed the question about why nested comments were important. If you ever programmed with Java you would realize that you can really nest comments. What occurs in some languages is that the inner comment-close syntax will also close an outer comment.

Update: I found a decent tutorial in written for the layman. 
Update-2: Here's another site I've never seen before. The code-codex has comparable code to many different languages and it seems like it could be a decent learning tool.

Overall Impression
Simply put: it was pretty darn cool. Even this link was thrown within the slides:

It's a game that asks you determine whether you determine if a person, by profile picture, is a serial killer or programming language inventor.

Not a lot of Extension students are taking this course. I DO NOT know why. It seems like this class is meant for them (me). I leave you with this statement from the lecturer: The class is intended for practicing software people and will to help you "kick ass" in the work place.

  1. gravatar

    # by Anonymous - February 2, 2010 at 1:44 PM

    Thanks I was curious about the class. I might take it next semester and I look forward to hearing about how things work out for you.