CIT 594 Old Announcements
Spring 2007, David Matuszek

Date Announcements
May 1, 2007 The RoboTalk tournament will definitely not take place today (Tuesday). I've been out of town and unable to work on my program. I hope to be ready to run the tournament tomorrow (Wednesday). Watch this space for updates.
April 25, 2007

I'm done adding exam questions. All or nearly all questions will be either from this list, or very similar to questions on the list. The exam will be comprehensive, but will mostly cover material not covered on the midterm.

Contrary to my earlier post, I will be out of town on Monday. Would Tuesday or Wednesday at 4:30 be a better time for the RoboTalk competition? Email me if you have a preference.

If you would like your program included in the competition, please email me; if I don't have enough entries, I'll just choose some at random from student submissions. Plus my own, of course.

April 25, 2007

I'm about half done adding questions to my page of Exam questions. I'm posting what I have now, and will do the other half Real Soon Now (hopefully this evening).

My RoboTalk "referree" program is sort of working, but not well enough to show. My plan is to have it ready by Monday, and to meet with anyone who is interested in the usual classroom, at 4:30, to have a competition of sorts. If you would like your program included in the competition, please email me; if I don't have enough entries, I'll just choose some at random from student submissions.

April 24, 2007 I have started work on additional exam questions; I should have them done and posted in a day or two.
April 19, 2007

Pizza! Pizza !

Tonight--Thursday, April 19, 6:00 - 7:30
Where: Levine 307

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

April 11, 2007 Guest lecturer: Thursday, April 12, Pat Palmer will talk about and compare J2EE (Enterprise Edition) and .NET, Java and C#. (Yes, this will be on the final.)
April 11, 2007 The sample RoboTalk program that I posted is not equipped to deal with ENEMYs. If you try to interpret it and it gets into an infinite loop, this is probably the reason.
April 11, 2007

Pizza party postponed!

Because of a study session for Max's exam planned for tomorrow (Thursday) at the same time, attendance at the pizza party is likely to be nil. So we'll try again for next week.

April 9, 2007 For your interest and enjoyment, I've posted a sample RoboTalk program. If you are still confused by the grammar of the RoboTalk language, this should help.
April 9, 2007 Since there is a term paper due in CIT595 on Friday, and an exam in CIT596 the same day, the due date for the RoboTalk assignment will be extended to Sunday, April 15.
April 6, 2007 Added a quote (and picture) to the last slide in my gender talk.
April 6, 2007 I have posted the next part of the RoboTalk assignment. Note that the due date is this coming Thursday.
April 5, 2007 The final exam is Thursday, May 3 (not, as I had thought earlier, May 1), in David Rittenhouse Lab A7.
April 4, 2007

Reminder: Princeton University's Brian W Kernighan, Professor of Computer Science is coming to Penn to speak today, April 4, at 6pm in Heilmeier Hall (a.k.a. Towne 100). There will be sandwiches.

You might as well come to hear this famous computer scientist talk. It's likely to be very interesting, and after all, you have sooo much extra time on your CIT591 assignment!

April 4, 2007 A note on testing the Parser: I found it desirable to break up the method isAssignOrCallExtender into two methods, isAssignExtender and isCallExtender. However you write your Parser, we will not test these directly; but we will test assignment statements, method calls used as statements, and method calls in expressions.
April 3, 2007

Extension: I've been too busy with other things to prepare for the next part of the RoboTalk assignment. Hence, the current assignment is now due before midnight, Monday March April 9 . (I wouldn't want to leave you with nothing to do, after all.) I'll post the next part of the RoboTalk assignment as soon as I'm caught up myself.

The assignment was unclear about JUnit testing. You should have JUnit tests for commands other than actions; that is, for if, while, repeat, and assignment statements. The return command should just stop the program (which makes it kind of hard to test). Logical conditions should be tested. The RobotStandIn class is actually sufficiently well-developed that you can write tests for the actions (and for seeing, smelling, facing); but since RobotStandIn prints out what it is doing, you don't really need to.

By the way, when you added distance, row, and column to <factor>, did you remember to handle unary minus? Just thought I'd ask....

April 2, 2007

As you probably know, RSI is a common and debilitating problem in the field of computing. This Thursday, April 5, Dr. Karen Kelley, Industrial Hygienist/Laser Safety Officer, will be talking at 6:00 in Heilmeier Hall on:

  • Repetitive Stress Injuries (RSIs) related to computer work.
  • Postures that contribute to RSIs.
  • Work habits and behaviors that contribute to RSIs.
  • Proper positioning of computer to avoid RSIs.
  • Laptop ergonomics.
  • "Ergonomic" accessories, including keyboards and pointing devices.
April 2, 2007 Max has decided to cancel his Quantum Computing talk for this semester.
March 29, 2007 Today's talk is by Frank O'Brien, about the hardware and software for the Apollo guidance computer used in the moon landings, 1969-1972.
March 27, 2007 I've now added some details to the current assignment, and posted some support code.
March 22, 2007 Good news: Max has agreed to reschedule, rather than cancel, his Quantum Computing talk. We will have the talk April 12, and pizza afterwards.
March 22, 2007 Change of plans: Max is cancelling his talk today in favor of the Google Technical Talk at 6:00 PM in Wu & Chen Auditorium. He feels this talk is much more important for MCIT students.
March 20, 2007 Max's talk this Thursday will be in Heilmeier Hall (Towne 100).
March 20, 2007
  • Jack Chen points out that makeToken(String) in ParserTest hasn't been updated to return KEYWORD tokens. This is easy to fix.
  • In the Parser, '%' needs to be added to isMultiplyOperator(). This is a trivial addition.
  • Don't forget that you are supposed to add distance and method calls to isFactor().
March 18, 2007

There have been problems both uploading and downloading the files for the current assignment. Please see the Code Problems and Changes page.
Because of this, and (more importantly) because I want to encourage everyone to come to Max Mintz's talk on Thursday, I am extending the due date from Thursday to Saturday.

March 15, 2007 Posted: New versions of,, Changes are: Adding is- to several methods, and adding a KEYWORD Token.Type.
March 13, 2007 The latest assignment (Parser) has been posted. This is another long one...
March 1, 2007 I have posted an expanded list of Exam Questions. The midterm will consist mostly or entirely of questions drawn from this list, possibly with minor variations. The midterm will cover everything up to but not including the lectures on Huffman Encoding and Graphs (that is, through last week).
February 28, 2007 Due to Diana's exam and my recent (minor) illness, the due date for the current project is now Thursday, March 1, before midnight.
February 26, 2007

Pizza! Pizza !

Thursday, March 1, 6:15 - 8
Where: To be announced
(I forgot to reserve a room).

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

Note: I will be out on sick leave Tuesday and Wednesday, but Saj will teach my class. I do expect to be back on Thursday, for class and pizza.

February 20, 2007 I have posted the changed grammar, as discussed in class.
February 19, 2007 To try to provide better spacing between MCIT exams, I'm moving my midterm to Tuesday, March 13 (just after Spring Break--sorry).
February 17, 2007 Yet another necessary change to the grammar: Move an <eol> from <method call> to <command>. That is,
<method call> ::= <variable> "(" [ <expression> { "," <expression> } ] ")"
<command> ::= (no changes to other rules) | <method call><eol>
February 16, 2007 I've added a page on Recognizer Improvements, which you may find helpful. It does not add any requirements to your assignment.
February 15, 2007

I will talk briefly in class today about a problem in the RoboTalk grammar, and how to resolve it.

I've written a first draft (i.e. beta) of a paper on Recursive Descent Parsing, which you may find useful.

For each of your Recognizer methods, your Javadoc should at least show the BNF rule you are trying to recognize. Since HTML and BNF use many of the same symbols, this can be a nuisance. I've written a little "Htmlizer" program, htmlizer.jar, to help you.

I've set a (tentative) date for the Midterm Exam--Tuesday, February 27.

Don't forget Eric Raymond's talk tonight at 6:00 in Wu & Chen!

February 14, 2007 The rule for <method call> should be:
<method call> ::= <variable> "(" [ <expression> { "," <expression> } ] ")" <eol>
February 12, 2007 I don't think it will come as a surprise to anyone that the StreamTokenizer doesn't behave exactly as expected. In my class, in the constructor, after the lines:

    tokenizer = new StreamTokenizer(reader);

add the lines:

    tokenizer.wordChars('_', '_');
February 12, 2007 In the assignment I said "Also Import... the files you wrote for the Tokenizer assignment." That's wrong. You need only the four files that I supplied.
February 10, 2007

First corrections to RoboTalk grammar:

  • Added <variable> ::= <NAME>
  • Used <variable> instead of <NAME> in definition of <factor> (but not elsewhere)
  • Changed all occurrences of <object> to <thing>
  • Changed both <procedure> and <function> to <method>

For consistency, I also updated and to reflect the change to <factor>, but this makes no difference in their behavior.

February 9, 2007

Thursday, February 15
6:00 p.m. - 7:30 p.m.
Wu & Chen Auditorium

Eric Raymond, open source advocate, will speak on
Programming in the Real World.

Eric is the author of The Cathedral and the Bazaar, The Art of UNIX Programming, and is the editor of The New Hacker's Dictionary. He is one of the most influential persons in the Open Source movement, along with Linus Torvalds and Richard M. Stallman.

February 5, 2007

I have uploaded a newer version of and Tree.html. You can download these or not, as you choose; none of these changes should affect the working of your program. Changes are:

  • There was an error in Tree.equals. However, this is not a method you need in the current assignment.
  • I cleaned up a number of minor complaints about places I failed to use generics.
  • I put tests for parse and print in TreeTest, where they should be.
  • I corrected the internal links in Tree.html.
February 4, 2007

Clarification: My intent was that the children of print be leaves. So there are only three cases to consider:

  • A word that has not been assigned a value. For example, hello would print as hello.
  • A word that has been assigned a value. For example, after interpreting =(x, 0), x would print as x=0.
  • An integer. For example, 5 would print as 5.

Also, print should put a single space between items, and no other spaces. For example, print(hello x 5) would print "hello x=0 5" (not including the quote marks).

Correction: When used as an argument to interpret (not evaluate), "=" represents an assignment statement.

January 31, 2007

Two corrections already in (sigh):

  • The signature of parse should be public static Tree<String> parse(String s).
  • The signature of lastChild should be public Tree<V> lastChild().
January 30, 2007 The fourth assignment has been posted. I didn't include the little drawings of trees, but I think the explanations should be sufficient.
January 30, 2007

Apparently my starter code for the Recursive Drawing Assignment sometimes doesn't redraw when the window is resized to make it larger (but it's okay when you make it smaller). Why this happens is a mystery.

The workaround is easy enough--just add a ComponentListener to catch resize events--but you don't have to do this. It's a problem in my code, not yours, so you can just ignore this little problem.

January 29, 2007

Pizza! Pizza !

Thursday February 1, 6:30 - 8
Levine 307

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

January 29, 2007 If you are having a hard time with the recursive drawings, here are some suggestions that might help.
January 23, 2007

Here are a couple of things from Saj:

And one from me: Rules for Assignments.

January 22, 2007 Coincidentally, an acquaintance of mine just posted a link to a random sentence generator on the web. It's pretty good.
January 19, 2007 Correction: Your BNF rules should be kept in a Map<String, Definitions> in the SentenceGenerator Grammar class.
January 18, 2007 In response to student questions, I've added a page on Sentence assignment clarifications, to try to explain the assignment better.
January 18, 2007 On Thursday, January 25, CIT594 will meet in Towne 337.
January 16, 2007 I made a few minor changes and corrections to my Expression Evaluator Applet. (I had forgotten to handle unary plus, among other things.). The new Enter button is redundant with the Enter key, and there is now a button to clear all assignments that have been made to variables.
January 11, 2007

I've made some minor modifications to the ExpressionEvaluation assignment:

  • For clarity, I replaced some 'if's with 'else if's in the algorithm.
  • I simplified the kind of exceptions that must be thrown.
Jan 6, 2007 If you did not attend CIT591 in Fall 2006, read this. (Also recommended for those who did take CIT591 this past Fall.)