CMSC 330, Spring 2008

Organization of Programming Languages


Course Description A study of programming languages, including their syntax, semantics, and implementation. Several different models of languages are discussed, including procedural (Ruby), functional (OCaml), and object-oriented (Java). Language features such as formal syntax, scoping and binding of variables, higher-order programming, typing and type polymorphism, and object inheritance are explored.
Location CSI 2117, Monday and Wednesday 3:30-4:45pm
Textbooks There are no required or recommended texts. However, there may be assigned readings. See the resources page for online links.


Important announcements related to the course will be posted on this page. Make sure you check this page at least once a day.

  • May 22 Final grades for 330 (27 A's, 32 B's, and 19 C's) have been submitted to UMEG. Wish everyone a good summer!

  • May 20 The submit server has been activated for Extra Credit Project 1. There are only 2 tests, public test 1 and release test 1. Public test 1 is simply the example used in the project description.

  • May 19 The curve for the course at this point (for the grades server in Student View) is around: As > 89%, Bs > 79%, Cs > 66%, Ds > 56%. The grade server is showing about 6% higher scores for students, since it doesn't include homework scores. So a 86% on the grades server in Student View is really around 80% in Instructor View.

  • May 19 A rough guestimate of the overall curve for the course at this point would be: As > 83%, Bs > 73%, Cs > 60%, Ds > 50%.

  • May 19 Fixed typo in Extra Credit Project 1 instructions. Should be type "ruby script\generate scaffold Message name:string comment:text", not "Messages".

  • May 18 Final exam scores have been posted on the grades server. The mean was 166/230, median was 171, max was 230 (with up to 16 pts extra credit). Standard deviation was 31.

  • May 18 Extra credit project 1 has been posted.

  • May 14 Posted lecture on Alligator Eggs, an amusing (alternative) perspective on the lambda calculus. Meant to cover it during the review session, but the projector in CSIC 3120 was broken. You do not need to know anything about Alligator Eggs for the final exam, but it may help you learn how to evaluate lambda expressions if you are having trouble.

  • May 13 A final exam review session will be held Wed 5/14 from 3-4pm in CSIC 3120.

  • May 13 Homework 1 solutions have been posted online.

  • May 13 The CS dept will be hosting a Study Day Wed, May 14th. A room (CSIC 3120) has been reserved from 9am-7pm for 330 students to study. A study day "feast" will be held from 4-6pm in the lobby of CSIC.

  • May 11 2nd revised version of Homework 1 is online. Changes made to polymorphism to fix Java syntax errors.

  • May 9 Revised version of Homework 1 has been posted online, eliminating typos & with small changes to last 4 questions on polymorphism.

  • May 7 Homework 1 has been posted online. It will be due Monday, May 12 at 11am. You may turn in a paper copy to your TA in discussion, or submit it online via the submit server as a PDF file.

  • May 5 Project 4 scores are now available on the grades server.

  • May 1 Students may submit Project 4 until May 2nd, 11:59pm (2 days past the deadline), with a 20% penalty.

  • Apr 28 1-day extension for Project 4, deadline is now 11:59pm Wednesday, April 30th, 2008.

  • Apr 27 The project 4 .submit file was missing the project number. To submit from the command line, change line 5 from "projectNumber=" to "projectNumber=4" in .submit, or download a new .submit here.

  • Apr 26 The CS Undergraduate Office will be presenting the new 5-year combined Bachelor's-Master's program in Computer Science this Tuesday, April 29 at 5pm in CSIC 1121. Announcement is online here.

  • Apr 21 Project 4 submissions are now accepted on the submit server. Submit your project and check out the release tests!

  • Apr 17 Project 4 description and files updated. More examples have been added to the project description. A new public test (and example output) has been added.

  • Apr 16 Project 4 description posted. Project is due Tuesday, April 29.

  • Apr 12 Midterm 2 grades have (almost all) been posted, and will be returned at discussion Monday. Average score was 78 (out of 112).

  • Apr 11 Grades will be assigned based on a curve at the end of the semester. Average scores so far: Projects 1-3 (93, 70, 91), Midterm 1 (61).

  • Apr 8 Project 3 grades have been posted on the grades server. Midterm 2 will be graded Friday evening & grades will be posted this weekend.

  • Apr 7 Midterm 2 solutions posted. We will grade midterms later this week & return them in discussion next week.

  • Apr 6 Full solutions for midterm 2 practice problems posted.

  • Apr 6 Fixed a number of typos to slides on Parsing and Practice Problem 3 solutions. In particular, the left factoring/eliminating left recursion algorithms were incorrect. A production (L->epsilon) was put in the left factoring algorithm when it should have been in the eliminating left recursion algorithm.

  • Apr 6 Partial solutions for midterm 2 practice problems posted.

  • Apr 4 Practice problems for midterm 2 have been posted. Midterm 2 will cover material from lectures 7-14 (Context Free Grammars to OCaml - Closures & Currying).

  • Apr 2 1-day extension for Project 3, deadline is now 11:59pm Saturday, April 5th, 2008.

  • Apr 1 Added examples, of how I/O may be used for part 3 of Project 3. You may also find the code examples covered in discussion on Mar 31 useful.

  • Mar 29 Solutions for Practice Problems 3 posted here.

  • Mar 28 Final exam will be held Thursday, May 15, 4-6pm, CSIC 1115.

  • Mar 28 Public/release tests have been added to project 3. Project description has been modified, mostly to simplify the portion of the project on using lists of booleans to represent integers. The archive file p3.tar containing your starting files has been updated as well, you should download it again (be careful not to overwrite your existing code when unpacking the archive if you've already modified,, or

  • Mar 27 Project 2 scores are now visible. We'll enter scores for very late submissions later.

  • Mar 26 Students can make a very late Project 2 submission until Thursday, March 27 11:59pm with a 20% penalty.

  • Mar 26 Midterm 2 will be held Monday, April 7th , 3:30-4:40pm, CSIC 2117 (in lecture).

  • Mar 26 Project 3 assigned.

  • Mar 25 Project 2 deadline extended by 2 hours (to Wed 2am) due to brief submit server outage.

  • Mar 10 Eylul's Tuesday office hours will be from 2-4pm (instead of 4-6pm) for the rest of the semester.

  • Mar 10 Turn in your midterms for regrades by Wed 3/12.

  • Mar 5 Posted Midterm 1 solutions. Midterm 1 will be returned by your TAs in discussion Monday.

  • Mar 5 Project 2 testing has been activated on the submit server. There are 8 public tests and 11 release tests. Submit server ignores all output lines beginning with %. Project 2 deadline is midnight Tuesday, March 25th.

  • Mar 5 Preliminary Project 2 description has been posted.

  • Mar 4 Wanli's TA office hours on Wed 3/5 have been moved to Thu 3/13.

  • Mar 3 Midterm 1 scores should now be available on the grades server. Mean score was 57, high score was 89. The exam seems to have been too long, my apologies. Future 330 midterms will be held during lecture, so you'll have more time to take the test.

  • Mar 3 Internship application deadlines extended to Friday Mar 7 for OPIS, Freewebs, Figleaf, GlobalNet and Ensco. Check web page for details.

  • Mar 2 Fixed 3 errors (3i,6i,6j) in solutions for Midterm 1 practice problems.

  • Mar 1 Fixed 2 errors (6f,6k) in solutions for Midterm 1 practice problems.

  • Mar 1 Solutions for Midterm 1 practice problems are now available. Two midterms from previous semesters are also available (sample 1, sample 2).

  • Feb 29 ACM talk next Wednesday (Mar 5) at 11am on programming, with free pizza!

  • Feb 28 Practice solutions 2 are now available. An extended solution (with animations displayed on multiple slides) is also available.

  • Feb 27 Practice problems for midterm 1 have been updated to correct some typos in Ruby syntax.

  • Feb 26 Practice problems for midterm 1 are now available. Practice problems will not be graded. Partial solutions will be provided later this week.

  • Feb 25 Project 1 grades are now available on the grades server. The average score for the project was 92.

  • Feb 19 Project 1 description has been updated to include
    • Directions on direct project submission from your computer
    • List of project clarifications & forum postings in response to student questions
    • Clarifications on leading 0s and quotes in the weblog request entry

  • Feb 19 Project 1 release tests have been added.

  • Feb 18 Midterm 1 will take place Monday, March 3rd during discussion.

  • Feb 14 Instructions for submitting project 1 have been updated on the project 1 description page.

  • Feb 14 The file sample.log has been updated. Please download and use the new version for testing your web log file processing Ruby script. The old version of sample.log contained carriage return (CR) and linefeed (LF) characters instead of newline (\n) characters.

  • Feb 14 Submit server should be working for project 1 public tests. Release tests will be added later.

  • Feb 12 Class accounts have been set up. You may obtain your class accounts (for from the grades server by logging in using your UMD Directory ID. You should also be able to log in to the submit server and submit project 1. The testing setup on the submit server is not yet active (so your submissions will be recorded but not tested).

  • Feb 6 Project 1 assigned here.

  • Feb 3 Discussion meetings Monday, Feb 4th will go over some example Ruby programs here.

  • Feb 3 For Windows systems, you may install Ruby 1.8.6 One-Click Installer here. The Ruby "pickaxe" book provides a summary of Ruby features.

  • Feb 3 Prof. Tseng's office hours are canceled this Mon & Wed.

  • Jan 23 Discussion meetings are canceled for Monday, Jan 28th.

  • Jan 23 Welcome to 330! If you do not have an OIT account, you should request one right away.


Name Office E-mail Office Hours
(or by appointment)
Prof. Chau-Wen Tseng 4135 AVW 2:30PM-3:30PM (Mon and Wed)
Xun Yuan Will meet in TA room. xyuan@cs Fri 1-5pm
Eylul Dogruel Will meet in TA room. eylul@cs Mon noon-2pm, Tue 2-4pm
Wanli Liu Will meet in TA room. wanli@umd Wed 11am-3pm