CMSC 433

Programming Language Technologies and Paradigms




Michael Hicks

AVW 4131

TuWTh 10:30-11:30am

Teaching Assistant

James Rose (rosejr@cs)

AVW 1151

MW 2-4pm






CSI 1121


TuTh 3:30- 4:45pm





Syllabus / Readings / Exams / Lectures / Projects

The goal of this course is to provide the skills needed to deconstruct relevant programming problems and solve them in an object-oriented style. To do this, we teach the following two interrelated topics:

  • Methods and styles of (sequential) object-oriented (OO) programming. Much of our focus will be on abstraction, particularly in the use of interfaces and design patterns so as to improve code reusability and reliability. We will be using the Java programming language exclusively. The homework projects will build on each other so as to develop your skills in using these techniques.

  • Principles and practice of concurrent OO programming. We will cover the two main forms of concurrency: shared-memory multi-threading (as provided by the Java Thread class), and distributed message passing (as provided, along with more features, by Java Remote Method Invocation (RMI)).

While we reserve the right to change the projects at any time, we intend the students to build, throughout the semester, a sophisticated server. As such, they will also learn a fair amount about network programming in Java.