CMSC 330, Fall 2009

Organization of Programming Languages


Important announcements related to the course will be posted here. Please check this page daily.

CourseEvalUM is open Dec 1 through Dec 13. Please submit an evaluation for this and all your other courses.

  • Dec 20 - Project 6 and end-of-semester final grades now visible on grades server. Curve was 24 As, 36 Bs, 28 Cs, 7 Ds, and 11 Fs.

  • Dec 15 - Final exam scores are posted. (Manual grading for project 6 will still take several more days.)

  • Dec 10 - Special office hours for Monday, December 14:
    • 10-11am - Bryan
    • 11am-1pm - Young
    • 1-2pm - Jeff
    • 2-3pm - Young
    • 3-4pm - Mark
    • 4-6pm - final exam in HJP 0226.

  • Dec 9 - Project 7 (Ruby on Rails web database) posted. This project is worth no points and is just for fun.

  • Dec 9 - Updated Project 6 sim.rb so when performing simulations it now outputs simulation parameters before simulation messages.

    This change is optional (original sim.rb still works for submissions) and was added so that the simulation output (if saved in a file) may be passed directly to the simulation display/verify routines for debugging.

  • Dec 5 - Submit server now accepting Project 6 submissions. You may use your release tokens at any time, so go ahead and submit even if you only part of the project working.

  • Dec 2 - Project 6 has been posted. It will be due Dec 11.

  • Dec 1 - Practice problem 7 and its solution have been posted online. Quiz 4 this Friday on multhreading will resemble problem 1 from Practice problem 7.

  • Nov 30 - The final exam for 330 will be held Monday, December 14 from 4-6pm in HJP 0226.

  • Nov 23 - Bryan's office hours Tue 3-5pm are cancelled.

  • Nov 19 - Midterm 2 scores are now available on the grades server.

  • Nov 19 - Description here of some interesting courses Nelson is teaching over the Winter break.

  • Nov 18 - Class on Wed, Nov 25 is cancelled. Enjoy the holiday! Office hours are also cancelled that day.

  • Nov 16 - Project 5 scores now available on the grades server.

  • Nov 9 - Quiz 3 scores now available on the grades server. Quizzes 1-3 and their solutions have been posted here.

  • Nov 9 - Project 5 deadline has been changed to Sat Nov 14.

  • Nov 9 - Midterm 2 material will include parsing, OCaml, lambda calculus, relating functions and oo programming, and type systems and bindings. It will not include parameter passing or threads. Practice problem 6 now available here.

  • Nov 9 - Note you will fail the public_scheme test on the submit server if your basic.scm file contains extra header lines such as "#lang ...", "; ...", or "#reader ...". Remove these lines before submitting your project. You may need to use a normal text editor since DrScheme will not display these lines.

  • Nov 9 - Minor changes to Project 5 files in Modified public_scheme.scm to add (load "basic.scm"), and goTest.rb to add "guile -s public_scheme.scm".

  • Nov 8 - Project 5 submission to the submit server are now accepted. Public tests & expected outputs are now available on the project web page here.

  • Nov 3 - Quiz 3 has been scheduled for this Friday, 11/6. It will be on the lambda calculus.

  • Nov 3 - Project 4 & quiz 2 scores are now visible on the grades server.

  • Oct 29 - Midterm 2 will be held on Wednesday, November 18 in lecture. The exact topics will be announced later, but will include at least parsing, OCaml, and lambda calculus.

  • Oct 28 - Project 5 has been posted. Submit server setup will be ready later this week.

  • Oct 26 - Quiz 2 is scheduled for Friday, 10/30. It will cover parsing and OCaml. Practice quiz & solution are available here.

  • Oct 26 - Jeff is out sick today, and his office hours on Mon, Oct 26 are cancelled. (Prof. Tseng will cover Jeff's lecture today.)

  • Oct 19 - From October 20-22nd, the Association for Women in Computing (AWC) will be hosting its 400 level lecture series in CSIC 3117 from 4:45-6:00pm. Faculty will describe various CMSC 400-level courses.

  • Oct 19 - Jeff's office hours on Wed, Oct 21 will be covered by Youngil (in the TA room).

  • Oct 16 - Midterm 1 scores are now available on the grades server. Mean score was 73/100.

  • Oct 16 - Project 4 files have been updated to provide public tests & expected outputs. The submit server is ready to accept submissions. You can use your project 4 release tokens even without passing all public tests, so submit early & submit often.

  • Oct 14 - Increased project 3 release token number and regeneration rate. Basically you now have an almost unlimited number of release tokens, and you can use them any time to look at release test results.

  • Oct 13 - Updated Project 4 to eliminate 2 functions nnf & to_nnf.

  • Oct 13 - Project 2 scores have been uploaded to the grades server.

  • Oct 10 - Project 3 and Project 4 have been posted. Project 3 is not a full project; instead it is designed as a warmup exercise for OCaml. Project 3 is ready to accept submissions on the submit server. Project 4 description has been posted, but public tests & their expected output will not be available for a few more days.

  • Oct 5 - Midterm 1 will be given Wed, Oct 14 during lecture. It will cover material up to CFGs (not including parsing). Practice problems & sample midterms are available here.

  • Oct 1 - Slides on DFA Minimization added to schedule under 10/2 discussion.

  • Oct 1 - Links to quiz 1 are fixed.

  • Sep 30 - Quiz 1 example & solution have been posted here.

  • Sep 28 - Quiz 1 will be Fri, Oct 2 during discussion. Study practice problems 1 & 2.

  • Sep 28 - Project 1 scores are now visible on the grades server.

  • Sep 25 - Project 2 has been posted on the class web page. It will be due midnight Thursday, October 8. Submit server is ready to accept p2 submissions.

  • Sep 23 - Project 1's late deadline is now Sunday, Sep 27 at 11:59:59pm. The on-time deadline for project 1 is still the same.

  • Sep 22 - Added to Project 1 a goTest.rb script to run public tests locally.

  • Sep 21 - Fixed error in Project 1 .submit file (wrong submitURL). Archive file also updated to include new .submit file. Change only matters for command-line submissions.

  • Sep 21 - Submit server tests for project 1 have been modified to combine highly similar tests.

  • Sep 15 - Practice problems (1 & 2) for Ruby language features and regular expressions & finite automata have been posted. They will be useful when preparing for quizzes & midterms.

  • Sep 12 - Project 1 has been posted on the class web page. It will be due midnight Thursday, September 24. Submit server should be set up to receive submissions by tomorrow.

  • Sep 3 - Accounts on the submit & grades servers have been created for all registered 330 students. You can log in to the grades server with your UMD directory ID and retrieve your linuxlab account name and password. Please send tseng@cs an email if you do not have an account.

  • Sep 2 - There will be no discussion sections on Friday, September 4. Also, Monday, September 7 is the Labor Day Holiday, so there will be no lectures.

  • Aug 7 - Welcome to 330!


Name Office E-mail Office Hours
(also available by appointment)
Prof. Jeff Foster AVW 4129 jfoster at MW 3:15pm-5:00pm
Prof. Chau-Wen Tseng AVW 4135 Tue & Thu 11am-noon, or after class
Mark Daly Will meet in TA room mdaly at Th 10am-12pm, 1pm-3pm
Youngil Kim Will meet in TA room ykim75 at MW 10am-1pm
Srividya Ramaswamy Will meet in TA room sramaswa at Tu 11am-2pm, 2:30pm-3pm
Bryan Robbins Will meet in TA room brobbins at TuTh 3pm-5pm


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.
Lecture Location CSI 2117
Lecture Times Monday and Wednesday 3:30-4:45pm (0101, 0102, 0103) and 2-3:15pm (0201, 0202, 0203)
Textbooks There are no required or recommended texts. See the resources page for useful online links.