CIS 554 Previous Announcements
Fall 2010, David Matuszek

Date Announcements
November 30, 2010

Special MCIT lecture!

Frank O'Brien, author of The Apollo Guidance Computer, will be speaking in
Towne 337
6-8pm Thursday evening
December 2, 2010

Please come and join us for a fascinating look at the hardware and software that got us to the moon!. Everyone is welcome!

November 21, 2010 I had said the Sudoku assignment would be due Tuesday, November 23. It's a substantial assignment, I'm not going to hand out a new assignment this Monday, and nobody is likely to do any grading over Thanksgiving break anyway. So: The new due date is Monday, November 29, before midnight.
November 18, 2010 I will not be in my office today.
November 9, 2010 I will not be in my office today.
November 7, 2010


  • Monday, Nov. 8 -- Class cancelled!
  • Wednesday, Nov. 10 -- Last Haskell lecture; second Haskell assignment handed out
  • Monday, Nov. 15 -- First Scala lecture; possibly comments about Haskell assignment
  • Tuesday, Nov. 16 -- Second Haskell assignment due
  • Wednesday, Nov. 17 -- Haskell quiz; Second Scala lecture; first Scala assignment
November 1, 2010 I will not have office hours this Thursday, November 4.
October 25, 2010

The due date for the Clojure Sharks assignment has been moved to before Midnight Sunday, October 31.

The second Clojure quiz will be Monday, November 1, at the beginning of class, and will end at 11:00. (I considered putting the exam at the end of class, but decided that that would interfere with being able to concentrate on Haskell.) The lower of the two Clojure quiz grades will be discarded.

October 21, 2010 I've posted some Starter Code for Sharks which you might find helpful.
October 19, 2010 As mentioned in class, I am giving up on the idea of allowing a one-sided cheat sheet. For the next quiz, you may have one standard-size cheat sheet, one- or two-sided.
October 16, 2010

I just did the first Clojure assignment. Here are some of my observations:

  • As in any language, when a function gets the least bit complicated, it helps to create additional "helper" functions.
  • The trick of having a second version of a method with additional parameters is much more useful than I expected.
  • I never used let in the first group of functions, but it was very handy in the second group.
  • Even though Math/sqrt is in a different namespace, my sqrt confuses it. Easy workaround: call it with an explicit namespace, for example, (user/sqrt 2.0).
  • As noted earlier, a good editor really helps. jEdit's parenthesis matching and indentation correction (for Lisp, not Clojure) works for me; I'll be glad to hear people's comments about Counterclockwise.
October 14, 2010 Interesting article: OSCON: Emerging Languages Camp. Wish I'd been there!
October 14, 2010 For the upcoming Clojure quiz: I give up on saying you can have a one-sided cheat sheet. You can have one sheet, both sides.
October 4, 2010 As mentioned in class: You can bring an Erlang "cheat sheet" to the quiz. It should be a one-sided, standard size piece of paper. Can be typed, handwritten, your own construction, or something you found on the web. I recommend you make it yourself, as you will learn more that way. You can work with someone else if you like.
September 28, 2010

Cracking the Coding Interview:
Advice for CS undergraduate and master's students on interviewing for software engineer positions

Gayle Laakmann
Thursday, September 30, 2010, 4:30pm, Heilmeier Hall Auditorium

I highly recommend Ms. Laakmann's talk for anyone interested in getting a job in the CS/IT field. If this doesn't describe you, you probably should skip this talk.

September 27, 2010 Instructions for uploading assignments to this year's Blackboard are at
September 26, 2010

I've posted my first set of Erlang slides, and more importantly, a Concise Guide to Erlang. Both are still under construction.

Also, in case you haven't already done so, you should look at the online Erlang Reference Manual User's Guide and the OTP Reference Page (this is where the available functions are described).

Finally, this month's edition of the CACM has an article on Erlang external link.

September 19, 2010 Macintosh users: Jordan points out that Consolas is a Windows font. Nonetheless, it's easy to install on a Mac. Or you can just use Menlo or the old standard, Monaco.
September 12, 2010


  • A font used for programming should be: Monospace, easy to read, and easy to distinguish similar characters (O0 1lI| [{(]}) :; .,). My current favorite fonts are Consolas and its twin Inconsolata. If these fonts look bad on Windows, you can fix it by using better values for antialiasing (font smoothing); that will probably make other things look better, as well.
  • A great multi-purpose editor is jEdit, available for all platforms. One nice feature is syntax coloring for multiple languages (for example, Utilities → Buffer Options → Edit mode: → prolog.
August 30, 2010

Get my attention. When you send me email about this course, please:

  • For CIS554, put 554 as some part of the Subject: line. (I will see your mail anyway, but it may take a little longer.)
  • For general email about the MCIT program, put MCIT as part of the Subject:line.
  • Send plain text only (not HTML or RTF)
  • Do not include any attachments. Especially, do not include assignments!
  • Make sure your computer is virus-free.

There will be weekly programming assignments in each of several languages: definitely Prolog, Erlang, Clojure, Haskell, and Scala, and probably Ruby. However, the central goal will not be to learn these languages, but rather to learn the concepts, tools, and ways of thinking that each of these languages brings to the table.

Order in which languages will be covered: Prolog, Erlang, [Ruby?], Clojure, Haskell, [Ruby?], Scala.

Most of these languages will not be available in the lab. Students are expected to have their own computers, and to install the appropriate (free) software for each language, as noted on the Resources page.

August This site is under constant revision during the semester (especially during the first couple of weeks), so please bookmark this site and check back frequently. I post all class materials on the Web, including lecture slides, as soon as they are ready. I frequently don't have slides ready until just before class.