CIT 594 Previous Announcements
Spring 2011, David Matuszek

Date Announcements
Mar 15

Pizza party!

Wednesday, April 27, Noon to 2 p.m.
Levine 315

Who is invited: All current and former MCIT students and faculty, and students currently taking MCIT classes. OK to bring a guest. Please RSVP to

Mar 15 It's time to do course evaluations.
Apr ?? Here's a handy U.S. map showing only states and capitals.
Apr 13 Assignment 10 has been posted.
I expect to give one more assignment after this one.
Apr 6

I have invitations to only nine repositories on Bitbucket, and there should be nineteen teams. Using Mercurial and Bitbucket is required in this assignment, and it turns out to be very easy to see who's active on it and who isn't. Please get started!

Also, I've just posted a page on Merging Files with KDiff3 which you may or may not find helpful. I found KDiff3 very confusing at first, but it's really not difficult.

Apr 4 Here are some results from my program. Your numbers will be different.

  Original size Huffman encoded size Zip encoded size Time to encode Time to decode
War and Peace 2,606,881 1,294,993 889,094 2078 ms. 594 ms.
War of the Worlds 343,166 174,849 126,383 375 ms. 110 ms.
Twinkle, Twinkle, Little Star 624 6329 365 62 ms. 31 ms.
"Hello, world!" 13 6329 141 47 ms. 15 ms.

As you can see, the program does a reasonable job of compressing large text files; it cuts "War and Peace" to about half its original size, while the Zip algorithm cuts it to about a third. Zip even does a surprisingly good job on small files (my program seems to have a minimum size result), but even Zip expands a 13-character file.
Apr 4

Assignment 7 was a disaster. There were many more grades of 0 and 10 than there were of 90 and 100. Possibly the instructions weren't clear?

In any case, I think there are important things to be learned from this assignment, and I'd really like everyone to do it. So, here's what I'm doing about it:

  • The due date for Assignment 7, LOL with functions, is extended to 6AM Tuesday, April 12.
  • Here are the test file and the grading rubric for Assignment 7. This should at least tell you what your program is expected to do. If you don't understand why the program should produce these answers, ask!
  • The due date for Assignment 9, Huffman Encoding, is unchanged; it's still 6AM April 8.
  • There will be no new assignment this week. Assignment 10 will be handed out next week, on Tuesday, April 11.
  • I have posted (on Blackboard) scores for those student who got 100 on Assignment 7--if this includes you, enjoy a few days of vacation! Otherwise, I encourage you to try out your program with my test file, and fix and resubmit if appropriate.
  • I have not yet received the grades for Assignment 6, LOL interpreter without functions. I tried to minimize the use of Assignment 6 features in the tests for Assignment 7, but of course the functions have to have something to do. So here are the test file and grading rubric for assignment 6.
Mar 30 We have Levine 315 at 6:00 this Thursday for a Mercurial study session. Again, the idea is to help one another and share our experiences, not for me to solve everyone's problems, so if you are okay with Mercurial, please come and help others. Bring a laptop if you can.
For your Huffman project--please invite me at my work address, , not my personal (gmail) address.
Mar 28

Recommended courses:

Appropriate for all MCIT students:

  • CIT 597 - Programming Languages and Techniques III (Web programming) (Fall)
  • CIS 550 - Database and Information Systems (Fall)
  • CIS 554 - Programming Paradigms (Fall)
  • CIS 555 - Internet and Web Systems (heavy workload) (Spring)
  • CIS 573 - Software Engineering (fall)

Additional suitable (but somewhat more specialized) courses:

  • CIS 505 - Software Systems (Spring)
  • CIS 534 - Multicore Programming and Architecture (Spring)
  • CIS 542 - Embedded Systems Programming (including Android) (Spring)
  • CIS 551 - Computer and Network Security (Spring)
  • CIS 552 - Advanced Programming (Fall)
Mar 27 Huffman Encoding/Mercurial is a difficult assignment (and not because it uses Mercurial!). Some of you probably won't be able to do it. I have put up a page of Huffman Hints that I hope will help.
Mar 27 I've posted an applet to show how Java's bit manipulation operators work.
Mar 22 I will have additional office hours after class tonight.
Mar 21 Display problems with the Backtracking Assignment? Here's help.
Mar 19 I've posted the Midterm Exam and the Answers to Midterm Exam.
Mar 18 I'm extending the due date for the backtracking assignment to Wednesday 6AM, to provide more opportunities for help at office hours.
Mar 18

Java uses the default "look and feel" for whatever platform it is running on. The same program will look somewhat different on Windows, Macintosh, or Linux. This is usually what you want.

However, the Macintosh "look and feel" does not support colored buttons. You can change the "look and feel" by adding this bit of code (contributed by Shawn Zamechek) to the GUI:

try {
    UIManager.setLookAndFeel(new MetalLookAndFeel());
} catch (Exception e) {

This will change other aspects of the GUI as well (button shapes, title bar, etc.).

This addition is completely optional, but I do recommend that everyone try it and see how it works.
Mar 18 Interesting article (if you're looking for a job): The Five Essential Phone-Screen Questions
Mar 17
Midterm exam results
midterm grades

  Average 63.2

  Standard deviation 21.6


Mar 17

I have noticed that, in the example data I gave for the backtracking assignment, each line contains every color. There is no reason to assume this is always true. For example, the following is valid data:
    0  1  2  3
    1  2  1  0
    2  0  1  3
    3  3  0  2

Color numbers will be consecutive integers starting with zero (for example, the colors won't be 3, 4, 6, 7, and 10).
You may also assume that every line contains the same number of colors, and that there are as many lines as there are colors (for example, if the first line contains seven color numbers, then there will be seven lines altogether, each containing seven color numbers).

Please remember that your program should read its data from a file, and that after each file, it should allow the user to quit or to read in data from another file.
Mar 15

Pizza party!

Thursday, March 17, 6 p.m.
Levine 307

Who is invited: All current and former MCIT students and faculty, and students currently taking MCIT classes. OK to bring a guest. Please RSVP to , so we don't run out of food!

Mar 08 Vishal will be holding office hours as usual during Spring Break.
Feb 24

From the I Thought This Was Obvious Department:

When you click the Run button in your GUI, you should run the LOL program as a new program. It should not depend on values stored by a previous program. For example, set x 5 tell x is a legal program, but if you run set x 5 as a program, then erase it and run tell x as a new program, x should be undefined.

Feb 22

Don't forget that negative numbers exist!

Your parser and interpreter should be able to handle numbers like 3, -3, 3.5, 5., .005, and -.3. You don't have to handle numbers with exponents, such as 6.25E28 (but it isn't hard if you're using regular expressions).

Feb 20 I've updated the LOL interpreter assignment to add some suggestions about how to write the program and the unit tests. I've also added a requirement to write a simple program in LOL. All the LOL functions (set, plus, etc.) are exactly as before; no changes have been made there.
Feb 15

Pizza party!

Thursday, February 17, 6 p.m.
Levine 307

Who is invited: All current and former MCIT students and faculty, and students currently taking MCIT classes. OK to bring a guest. Please RSVP to , so we don't run out of food!

Feb 12 Randall Sidlinger (CETS staff) gave me a pointer to A Newbie’s Initiation To Linux (using Ubuntu). If you would like to learn Linux, and possibly install it on your own laptop, this is a very nice 20-page introduction. The site wants you to "register" with them, but you can also just ask me for a copy.
Feb 11 Don't miss today's XKCD.
Feb 10

Minor correction for Assignment 4: You do not have to do anything with the <title> tag, since this tag should never occur inside the body of an HTML page.

Also: Some HTML pages these days are horrendously complex. The ones that use frames typically have no useful text content at all. This assignment doesn't have to handle such sites. Check out sites like mine, or like, say, ars technica, for good places to try out your program.

Feb 9 My office hours today (Wednesday) will be 4-5 instead of 3-4.
Feb 9

Since I don't want to make the current assignment too difficult, you can make these assumptions:

  • Lists will not have sublists. That is, inside an ordered (<ol>) or unordered (<ul>) list, you will not find another list.
  • Those tags whose contents should be on a line by themselves (<title>, <div>, <h1>, <h2>, <h3>, <h4>, <h5>, or <h6>) will have a closing tag.
Feb 4 We now have some more office hours posted. Since these are subject to change, please check below for the most recent information.
Feb 4

Yet another interesting article: I'm graduating with a Computer Science degree but I don't feel like I know how to program.

The responses to this posting are the most interesting part.

When I post links to interesting articles, it's because I think they are worth your time. But it's not class material, and you won't get tested on any of it. It's your choice whether to look at them or not.

Feb 3 Interesting article: Non-Myths About Programming (PDF)
Feb 3 Highly recommended:
Cracking the Coding Interview: How to Prepare For and Ace the Software Engineering Interview
Gayle Laakmann
Wednesday, February 9, 2011 5:00pm
Heilmeier Hall Auditorium
Feb 1

For assignment 3 (and all assignments thereafter), please make sure that the zip file you submit includes your readme.txt file. Do not make these separate submissions.

If you have already submitted assignment 3 as two pieces, resubmit it as a single zip file.

Jan 21

A lot of students will be losing 5 points on the first assignment because they ignored the required Eclipse settings and have tab characters in their Java files. If this includes you, wouldn't you like to fix this before you turn in the second assignment?

With the proper settings, Eclipse will change tabs to spaces as you type, but if you have already started your second assignment, I don't think it has a way to convert existing tabs to spaces. For that, you need a good text editor (not a word processor). I especially like the cross-platform JEdit, but I also use TextWrangler on the Mac and Notepad++ on Windows. Those are just my choices; there are lots of great text editors available for you to choose from, many of them free.

Jan 20

To everyone who is still trying to get into CIT 594:

  • I will not allow any additional students to register. Even if some people drop.
  • I don't care if you have a friend who might drop. You can't have his place.
  • I will not move the entire class to some room halfway across campus just so you can get in.
  • If you are not registered, or have explicit permission from me, do not come to class. There is no room.

I don't like this situation either, but stubbornness on your part will be met by equal or greater stubbornness on mine. Please save us both the unpleasantness and accept the situation as it is.

Jan 19 Interesting blog article FIXED!:
Jan 19

Pizza party!

Thursday, January 20, 6 p.m.
Levine 307

Who is invited: All current and former MCIT students and faculty, and students currently taking MCIT classes. OK to bring a guest. Please RSVP to , so we don't run out of food!

Jan 19 No office hours today; I'm leaving early to get home before the (anticipated) bad weather.
Jan 18

If you are having trouble with the Google Group for this course, I probably can't help much, but Google can. See

When you submit the request to join the group, please include your real name. I'd like to know who it is I'm letting in! If you've already joined, please update your personal information. A picture of yourself would be nice, but is optional (AFAIK only group members can see this information).

Jan 14

Mike Felker has checked Moore 216, DRLB A1, A2, A3, A4, A5, A6, A7, A8, Wu & Chen, Heilmeier, and the Skirkanich auditorium, and rooms in Fisher-Bennett and in Music. They are all booked for the 4:30-6:00 TR time slot. There is no room available that will hold everybody.

I am sorry, but the MCIT core courses are for MCIT students. If you are a TCOM or EE student, you should consider taking courses in your own department. You are not "entitled" to register for this course. It, and most other CIT courses, are available as to non-MCIT students only as a courtesy, when there is room. There is no room.

Also, if the Registrar's page sometimes shows CIT 594 as “open,” it isn't true. The Registrar's office does not count students legitimately re-taking the class to make up incompletes.

Finally: I will not allow people to stand or to sit on the floor. Besides being a stupid way to run a class, it probably violates fire regulations. So if you're not registered and not MCIT, it's time to look for something else to take.

That's it. Mike and I have done our best, and we are both feeling pretty frustrated about it. If you still feel you really really need this class, go talk to your advisor about it, not to us; we are sorry for you, but it doesn't make the rooms any bigger.

Jan 14 Very minor correction in assignment: The sorting methods should, of course, be static.This doesn't really change anything, just makes them easier to call.