CMSC 433, Fall 2003
Programming Language Technologies and Paradigms
Syllabus
Topics
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 revised
shortly):
- Java Review (1 week)
- Subtyping and Inheritance
- Dynamic Dispatch
- Polymorphism and Downcasting
- Objects versus References
- Programming Abstractions, Techniques and Tools (2 weeks)
- Development Principles
- Debugging
- Assertions/Invariants
- Testing
- Object-Oriented Design Patterns (2 weeks)
- UML
- Object invariants
- Class design
- Patterns: State, Template, Visitor, Decorator, Observer, ...
- Refactoring (1 week)
- Philosophy
- Refactoring `patterns'
- Concurrency (4 weeks)
- Intro to Concurrency
- Event-based programming
- Event processing model
- Java NIO
- Threads
- Java threads
- Java memory model
- Synchronization: locking (synchronized) and signaling (wait/notify)
- Design Forces (safety, liveness/deadlock, performance, reusability)
- Threaded programming patterns
- Distributed Programming with Java RMI (1 week)
- Other topics (3 weeks)
Scheduling
The dates for the final exam and the midterm exam have been set. If you
have a conflict on either these days, you must notify the instructor in
advance. We will do our best to accommodate you, but make no
guarantees. Please see the university policy on religious observance
for details on rescheduling due to religious holy days.
Grading
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, 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.).
| |
# |
% each |
% total |
| Programming projects |
5 |
8 |
40 |
| Written Homeworks |
2 |
5 |
10 |
| Mid-term |
1 |
20 |
20 |
| Final |
1 |
30 |
30 |
Projects
- 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.9 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.9 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.9 multiplier.
- You must submit, by the late deadline,
a good faith attempt to complete each programming 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.
Academic Dishonesty
- The college policy on academic dishonesty is strictly
followed.
All graded materials (whether exams or programming assignments) must be
strictly individual efforts.
- 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
- 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.
- Logging onto another student's account, for any reason, is
academic dishonesty.
- 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
- Discussions with other students about the project should
only be done in an environment with no program listings
available.
- 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.
- We expect you to follow all CSC guidelines for responsible machine
usage.
- 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. As recently as last
semester, a cheater in CMSC 433 received an XF, and cheaters in CMSC 412 were
caught that had cheated on students' work from prior semesters.
