CMSC 433: Programming Language Technologies and Paradigms

Syllabus / Readings / Exams / Lectures / Projects


Projects will be submitted using a the script ~mwh/  Details can be found here.


All of the projects will be coded in Java; the Linux machines on which reside student class accounts will have Java 1.4 installed.  In addition, we will encourage that students use the following two tools:

  • Dr. Java.  This is an interactive development environment for Java.  Most notably it gives one the ability to test class methods interactively using a read-eval-print loop in the style of Lisp/Scheme/SML.  It also provides an interface to a regression testing facility, JUnit, described below.

  • JUnit.  This is an infrastructure that allows one to define special TestCase classes for testing other classes.  You can run testcases using the JUnit test harness, or the one provided in Dr. Java.  JUnit makes regression testing - which is making sure that existing software still works after making a change to it - simple.


  • Students who don't come into class understanding basic object oriented programming and C++ as taught in lower-level CMSC courses will face considerable difficulties.

  • This course has difficult programming projects that require a substantial time commitment and a deep understanding of object-oriented programming and Java. There is no way you can complete a programming project if you start the weekend before it is due. The professor and the TA will give you substantial help on your programming assignments during office hours. You are encouraged to make use of office hours for assistance.

  • Projects should be submitted by 6:00 pm on the day they are due.  Late projects will not be accepted except in special cases. 

  • The instructor reserves the right to fail, regardless of overall numeric score, students who do not submit on-time a good faith attempt to complete all programming assignments.

  • Programming projects will be graded based on correctness. A memory leak is incorrect behavior and you will lose points. A program that you spent a lot of time on and "almost works", but doesn't in fact work on any of the test cases, won't get you any points.

  • All submissions of assignments will be via an online method, which will be described in class. Posted deadlines for program submission are sharp; standard Unix time of submission is used.  Submit early and often; only the last submitted version of your program will be remembered.

  • You may use any computing equipment you wish (such as your home computer) to develop your programs. However, this is "at your own risk". Your programming assignments will be graded based on how they run on standard Unix machines. If you make use of a language extension supported on your machine but not under Unix, or if your programming environment doesn't support standard language features supported under Unix, you will run into problems. No alterations to conditions of the assignment will be made to accommodate peculiarities of your other computing resources.