John Boyland
| Instructor | John Boyland |
| Office | 925 EMS, 229-6986 |
| Office Hours | M 12:30-1:30pm, W 10:00-11:00am, R 1:00-2:00pm |
| Course Homepage | http://www.cs.uwm.edu/classes/cs431/ |
CompSci 431 introduces a variety of programming languages for those who already know at least one (we expect C++). The course briefly covers ML, Java and Prolog, but also gives a broad overview to the field of programming languages. In this section of the course, we will use a distributed filesystem (AFS).
Students must have received a `C' or better in CompSci 351. In particular, this class requires that student be able to use and implement
The required textbook for the course is
Adam Brooks Webber. Modern Programming Languages: A practical introduction. Franklin, Beedle and Associates, Inc., 2003.
The grade for the course will be computed from the following parts:
Programs and written assignments will be graded for correctness, suitability, style, clarity and practicality. Although we will provide solutions to some assignments, there are usually a wide variety of correct answers to any particular assignment.
Unless an assignment explicitly says otherwise, all graded assignments must be your own work (your own words), but you may work with other people as long as you list their names prominently on the first page of the assignment, and/or in a comment at the top of the assignment. For this course, verbal communication and collaboration using non-code text or hand-written code is permitted, as long as it is properly documented. Documentation must also be made for help from anyone not in the course, such as a tutor, friend, or relative, and for information off the Web.
You may not make copies for other people of assignments through email, disks, scanning or any other automatic copying technique, except where specifically permitted in an assignment. Whether or not you have permission of the other, submitting someone else's work as your own is plagiarism, a serious instance of academic misconduct. Everyone is responsible for learning the material themselves. Some of the assignments may be graded in person, especially in cases where the individual contribution to the assignment is not clear. If you are graded in person, you will be expected to demonstrate that you have mastered techniques used in the material you submitted.
In this course, you will be running code written by course staff. None of these programs are ``Trojan horses'': none will ever attempt to perform covert tasks that invade privacy or destroy data. Similarly, you may not submit Trojan horses as regular assignments. Any such action will be dealt with severely.
At the end of the course, the numeric grade will be converted into a letter grade according to the following scale:
| Letter Grade | A | A- | B+ | B | B- | C+ | C | C- | D+ | D | D- | F |
| Minimum Score | 92 | 90 | 87 | 82 | 80 | 77 | 72 | 70 | 67 | 62 | 60 | 0 |
All your work should be done in the AFS volume assigned to you.
The root directory of the volume is accessible from your UNIX account
using the afs-home link. The absolute pathname is
/afs/cs.uwm.edu/users/classes/cs431/001/PantherID.
Before you can access this directory, you will need to obtain
authenticate yourself to AFS using Kerberos. This can be done using
/usr/afsws/bin/klog PantherID
and type your Kerberos password.
The root directory of your volume has some special subdirectories:
summary lists all the scores and
computes the weighted percentage.
homework4 by
typing/usr/afsws/bin/fs sa homework4 someoneelse write
| Date | Topic | Reading | ||
|---|---|---|---|---|
| 1/26 | Introduction; Syntax | Ch. 1-2 | ||
| 2/2 | Abstract Syntax; Language Systems | Ch. 3-4 | ||
| 2/9 | Introduction to ML; Type | Ch. 5-6 | ||
| 2/16 | ML Patterns and Nesting; Polymorphism | Ch. 7-8 | ||
| 2/23 | Higher Order; Scope | Ch. 9-10 | ||
| 3/2 | ML Datatypes; Activation Records | Ch. 11-12 | ||
| 3/9 | Introduction to Java; Memory Management | Ch. 13-14 | ||
| 3/16 | SPRING BREAK | |||
| 3/23 | Midterm; Java Classes | Ch. 1-14; Ch. 15 | ||
| 3/30 | Object Orientation; Exceptions | Ch. 16-17 | ||
| 4/6 | Parameters; Introduction to Prolog | Ch. 18-19 | ||
| 4/13 | Procedural Prolog; Cost Models | Ch. 20-21 | ||
| 4/20 | Arithmetic in Prolog | Ch. 22 | ||
| 4/27 | Semantics | Ch. 23 | ||
| 5/4 | History of Programming Languages | Ch. 24 | ||
| 5/11 | 10am: Final Examination | Ch. 1-24 |