CMSC 433, Fall 2010
Programming Language Technologies and Paradigms
Topics and Textbook
This course will focus primarily on concurrent and distributed
programming. We will identify pitfalls and difficulties in writing
such programs and explore design patterns and best practices for
avoiding them. Most of our work will be done with the Java
programming language, though we may consider other languages, such
as Scala or Erlang, as time permits, since these languages are being
increasingly used to write scalable web services.
The textbook for
Concurrency in Practice, ISBN 978-0-3-2134960-6, by Brian Goetz
(this link goes to Amazon, whose price is lower than the University
bookstore's). Note that this book should be also accessible through
Safari on-line, free when on campus.
Most of the topics in the class you will learn by doing, so there
will be a substantial emphasis on programming projects, and in-class
programming and code-reading exercises. An expected breakdown of the
grade is as follows:
|Projects (5 total)||40%|
|Exams (3 total)||50%|
Projects are a means for you to learn the material by doing,
and thus to prepare you for the exams, which are half of the
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.
Some of the class participation grade will derive from doing
in-class programming exercises that will be given on various Mondays
throughout the semester. Also for this part of the grade, students
may have cookies with the professor: this is a one-time
meeting with the professor, during office hours or at another
arranged time, to discuss the student's academic goals, the course,
and anything else that seems interesting.
- Projects are to be done individually, unless explicitly specified
otherwise in the project description. Several projects will permit
students working in pairs. Each file of each submission should
include the submitting student's name, and the name of his/her
- Projects are due at midnight on the due date.
- Projects may be turned in late up until 9am the next morning. Late
submissions receive 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, because this
will leave you unprepared for the exams.
We will strictly enforce the honor code. Every semester this
instructor has taught an undergraduate class he has turned in
students to the honor council for cheating. You are taking a
terrible risk by cheating; know what cheating is, and the penalty
for it, by reading further.
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, and may be used by him as he sees fit to support educational ends.
- 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. Recently, 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 pagers ring during
class repeatedly can result in points being deducted from a student's
Laptops. Laptops can be
a blessing or a curse. We intend to make use of laptops to perform
programming and code-reading exercises during class. However, if
personal laptop use becomes too much of a distraction for other
students in the class, their use may be curbed or elimiated.
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.
questions to be answered by whoever is monitoring the forum, and
the answer can benefit all students.
The instructors (Dr. Hicks and the TA) are happy to answer
questions 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 an 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