CMSC 433
Programming Language Technologies and Paradigms



CourseEvalUM is open. Please visit to provide feedback.

Reminder: Our Final Exam is on Wednesday, May 15th at 1:30pm in CSI 1121

05/13: I've posted a few questions from a previous semester's final exam to add to the examples available to review. The list you created as a class is also very good to review and consider.

05/08: The submit server/CVS system doesn't seem to want to upload the text file I asked you to add with you design discussion, so I've added another entry on the submit server to allow you to upload it on its own (like you did with the PDF files in the previous projects).

05/07: To avoid having slight differences in scheduling having an impact of measuring speed-up, the timing test on the server runs things a few times. You might need to do things like have your PrimeTaskServer constructor reset any static data structures you use to have that timing test work correctly. To make it a little easier for you to test this, I'm posting TimeTestForServer.java which is a version close to what I use on the submit server so that you can test on your machine before submitting.

05/05: A few students have asked about run times. Just as an example, with 65,000 numbers to determine and doing 50 at a time, 3 clients should take no more than half the time that 1 client took if you want to aim for maximum points on the project.

Project 5 has been posted. If you do not have Java 7, you might need to go to the PROJECT menu and then the PROPERTIES menu option and then click on Java Compiler and select 1.6 there due to how the posted files were set.

04/22: I've posted some directions for running Project 4 on the linuxlab machines.

04/21: Project 3 code submission is visible again on the submit server. There aren't any tests shown there, but you can see your code reviews. Grading for things like the use of calls to sleep (something that should not have been done) or calls to wait/notify/etc (things that REALLY should not have been done) appears in the adjustments column on the grades server and notes were addded in the code reviews on the submit server.

04/21: I've posted a pair of 4000x4000 mazes in the list of mazes now.

04/15: Project 4 has been posted and that there are two parts with different due dates. The first part is the PDF of your design statement and progress report which is due by Sunday, April 21st for 10% of project grade. The code itself is due by Sunday, April 28th for 90% of project grade. Please read it carefully. Please DO NOT place maze files in your project folder.

04/12: I've posted a list of example questions as you prepare for Monday's exam. The list is not comprehensive. The list is not of actual questions, but questions on the exam should have the same flavor as what you see here.

04/10: I've posted the body of another JUnit test for Project 3. This is used as part of my testing of the validation, so you should make sure your validation method is able to handle it.

04/04: Quick note on Project 3 - I left one or two imports in from things that I was trying out - please delete any imports that refer to classes that are not part of the project description.

04/02: Project 3 has been posted. Please check the project out of CVS and copy the appropriate P2 files over to it in the next few days so that if you have any questions about that process you can ask before the weekend.

03/29: As an example of how we will test the Validate method that you write as part of Project 3, I've posted an example JUnit test: ValidateTestSample.java. If in Eclipse you go to the project and choose to add something new to it and select adding a new JUnit 4 test case and name it ValidateTestSample, you can then copy and paste the contents of this sample into that file and use it as you start to test your Validate method. This starts off with a valid events list, but you could then move things around or delete or add events and make sure that your Validate method detects the errors. The Project 3 description itself will be up on Monday evening.

03/14: Just a reminder that Project 2 has been posted and that there are two parts with different due dates. The first part is the PDF of your design statement and progress report which is due by on Thursday, March 28th for 10% of project grade. The code itself is due by Monday, April 1st for 90% of project grade.

03/04: I've set P1 as invisible on the submit server so that we can start to do part of the secret testing using the submit server. Your public and release test scores have been recorded. It will probably take a week or so to do all of the secret and hand checking parts.

03/01: In addition to the schedule page that lists out topics, I thought this list might be of use while you are reviewing for the exam.

02/26: Here are some old 433 midterm exams to get a sense of what questions can look like: Old Exam #1 Old Exam Solution #1 Old Exam #2 Old Exam Solution #2 Please note that there are some questions on these look at topics that we haven't covered yet this semester (though they might end up being good practice questions for our second midterm). Reviewing the slides to make sure you are familiar with the terminology and concepts we have been discussing, even if they have not come up in the projects, is a very good idea. If you haven't been reading the code examples that are posted as we've been going along, it would also be a good idea to review those. I'll start Wednesday's class discussing our midterm a bit more.

02/20: I've updated the slides for the value!=value example from today's class. I changed the code extract slightly and expanded the details related to the happens-before rules. Basically, the odds are very small, but still non-zero, that there could be an issue due to visibility. I've also updated the Holder.java and InfoHolderTester.java files under Materials and was able (after many executions) to get the "Value was 0" line to print!

02/16: The Project 1 description has been posted. The starter files have been posted to your CVS repository but you should read through the entire description before you start thinking about writing any code. Remember, for this project you are restricted to a very specific set of tools and your goal is a working project within those restrictions that still supports concurrency when possible.

02/06: Project 0 has been posted. Please review the code examples on the Materials page for Java code examples of using synchronized blocks and threads. You can get your CVS/linuxlab account from the grades.cs.umd.edu server. Instructions for setting up your CVS account in Eclipse can be found on the Eclipse/CVS Info page. Office hours start tomorrow.

02/03: Just a reminder that PDFs of slides will be posted along with some source code from class examples under Materials in the menu to the right. Some of the code examples are incomplete or contain errors which we will discuss in class.

01/23: The syllabus has been posted as have the slides from today.

The recommended (not required) textbook is Java Concurrency in Practice by Brian Goetz.
Its ISBN‑13 number is 978-0321349606.
Available at the University Book Store and Maryland Book Exchange and many other stores such as Amazon in paperback and Kindle formats as well as at Safari Books Online, and it has a good preview selection at Google Books (these links are not endorsements of any of these sites).

More information will appear here closer to the start of the semester.

Menu Options

Eclipse/CVS Info 
Grades Server 
Submit Server 
Office Hours 

Web Accessibility