CMSC 433, Spring 2006
Programming Language Technologies and Paradigms
Head First Design Patterns
by Eric Freeman, Elisabeth Freeman, Kathy Sierra, and Bert Bates. ISBN 0-596-00712-4. Available from
Java Concurrency in Practice
by Brian Goetz, Tim Peierls, Joshua Bloch, Joseph Bowbeer, David Holmes and Doug Lea.
ISBN 0-321-34960-1. This book is not yet released, but we will be using preprints of draft
copies of the book.
The topics for the class are taken from a variety of sources. There
will be readings from both texts and web
resources. Here is the tentative topic list (likely to be changed
as the semester progresses):
- Introduction (2 weeks)
- Introduction and Review
- New language features in Java 1.5
- Specifications and Testing, JUnit
- Principles of Design
- Object-Oriented Design Patterns (3 weeks)
- Principles and Goals
- Notation: UML
- Patterns: State, Template, Visitor, Observer, ...
- Refactoring (1 week)
- Refactoring patterns
- Concurrency (4 weeks)
- Intro to Concurrency
- Event-based programming
- Event processing model
- Java NIO
- Java threads
- Java memory model
- Synchronization: locking (synchronized) and signaling (wait/notify)
- Design forces (safety, liveness/deadlock, performance, reusability)
- Threaded programming patterns
- Distributed Programming (1 week)
- Other topics (3 weeks)
Most of the topics in the class you will learn by doing, so there
will be a substantial emphasis on
programming projects. The expected breakdown is shown
below (we will inform you if it changes). The final grade will be
curved, but you will get at least an A for 90-100, B for 80-89, C for
70-79, and D for 60-69 (i.e., the curve can only help your grade beyond
this scale). We reserve the right to take into account circumstances
other than the ones indicated below in calculating the grade
(e.g., class participation, appearance at office hours, etc.).
- Projects are to be done individually, unless explicitly specified
otherwise in the project description.
- Projects are due at 6pm on the due date.
- Projects may be turned in late up until 9am the next morning. Late
submissions receive a 0.8 multiplier. If you submit both on time and
late, both are graded and you receive the higher score (with the late
submission getting the 0.8 multiplier).
- Submit early and often. The solution submitted last before the
deadline is the one that will be graded. Afterwards, if you determine
that a version you submitted before the last one is more correct, we
can grade that one instead with a 0.8 multiplier.
- You must submit, by the late deadline, a good faith attempt to
complete each programming project. If you do not, the instructor may
fail you for the entire course.
- Developing key insights to the programming projects yourself will
be critical to success on the mid-term and final. Do not let anyone
spoon-feed you the way to solve the programming projects.
Any regrades for project or exams must be requested within one week
of the date your grade for the assignment or exam is given to you.
When regrading, we may re-evaluate the entire assignment or
exam, and as a result your grade may go up or down as
The University of Maryland, College Park has a nationally recognized
Code of Academic Integrity, administered by the Student Honor Council.
This Code sets standards for academic integrity at Maryland for all
undergraduate and graduate students. As a student you are responsible
for upholding these standards for this course. It is very important
for you to be aware of the consequences of cheating, fabrication,
facilitation, and plagiarism. For more information on the Code of
Academic Integrity or the Student Honor Council, please visit
Here are some highlights of this Code as it applies to this course:
- The standard penalty for any academic dishonesty,
including facilitating academic dishonesty,
is to receive a grade of
XF in the course. This grade denotes failure due to academic dishonesty,
and your transcript will be so annotated.
- How to avoid getting an XF
- All graded materials (whether exams or programming assignments)
must be strictly individual efforts.
- Allowing another student to examine a listing of your program or
examining the listing of another student's program, for any
reason, is strictly forbidden.
- We encourage
discussions about concepts and ideas behind programming projects.
However, such discussions with other students about the project
should only be
done in an environment with no program listings available. That
is, you are discouraged, in the strongest possible terms, from
making a habit of getting together with another student at
adjacent workstations while you work on a programming project with
the idea that you will limit yourselves to discussion of problems
such as syntax errors only. There are too many temptations, and if
by chance your programs wind up being very similar, you will find
it difficult to make a convincing argument that you limited
yourselves to allowable discussions of the project.
- Logging onto another student's account, for any reason, is
- Attempting to falsely represent the correctness of your program, or to
delay other members of the class from completing a programming assignment,
is academic dishonesty
- We expect you to follow all CSC guidelines for responsible machine
- The instructor
is the information owner for all CSIC accounts in this class, and all files in those accounts may be inspected
by him at any time.
- Automatic tools and manual inspection will be used to compare your
solution to that of every
other current or past student in this class, so it will be very difficult
to hide any collaboration.
- The risk of getting caught is too high, and the
standard penalty is way too high (grade of XF). In Fall 1997,
14 students who thought they could hide their
collaboration in CMSC 430 received grades of XF. Over the past
couple of years, cheaters in CMSC 433 have been caught and
received grades of XF. Last semester, cheaters in CMSC 412 were
caught that had cheated on students' work from prior semesters.
Policies and Responsible Conduct
Cell phones. As a courtesy
to your fellow
pagers and cell phones must be off or on vibrate during class. Having cell phones or pages ring during
class repeatedly can result in points being deducted from a student's
Office Hours and E-mail. Questions
concerning the content of the course or project should, as a general
rule, be directed to the class discussion forum (media to be determined).
questions to be answered by whoever is monitoring the forum, and
answer can benefit all students. In general, e-mail
should not be sent directly to Dr. Hicks or the TAs with technical
The instructors (Dr. Hicks and the TAs) are happy to answer
during office hours and on the discussion forum. However,
office hours and email are not intended as a replacement for attending
lectures and recitations.
result, instructors will only respond to questions, whether during
office hours or on the newsgroup, from those students who regularly
attend class. Instructors may not
to electronic questions instantly. However,
the instructors will
try to respond to email by the next regularly scheduled office
hour after it is sent. If a student cannot make it to scheduled
he or she is encouraged to make an appointment by e-mail or after
Students claiming a excused absence must apply in writing and furnish
documentary support (such as from a health care professional who
treated the student) for any assertion that the absence qualifies as an
excused absence. The support should explicitly indicate the dates or
times the student was incapacitated due to illness. Self-documentation
of illness is not itself sufficient support to excuse the
absence. (This is
a department policy, and it is a higher standard than in some other
departments.) An instructor is not under obligation to offer a
substitute assignment or to give a student a make-up assessment unless
the failure to perform was due to an excused absence.
Any student eligible for and requesting reasonable academic
accommodations due to a disability is requested to provide, to the
instructor in office hours, a letter of accommodation from the Office
of Disability Support services (DSS) within the first two weeks of the