John Boyland
| Instructor | John Boyland |
| Office | 925 EMS, 229-6986 |
| Office Hours | MT 2-4pm or by appt. |
| Course Homepage | http://www.cs.uwm.edu/classes/cs431/cs431-1 |
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 will be familiar with three major paradigms of programming languages: function, object-oriented and logical. They will be able to write programs in ML, Java and Prolog that show the characteristic power of each, in the proper idiom. They will learn how to quickly learn new languages given basic outlines of syntax and semantics. They will understand the main language features and why languages select among them. They will learn the importance of precise definitions.
Students must have received a `C' or better in CompSci 252, In particular, this class assumes the following abilities:
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
/afs/cs.uwm.edu/@sys/usr/afsws/bin/klog PantherID
and type your Kerberos password.
The root directory of your volume has some special subdirectories:
summary.txt lists all the scores and
computes the weighted percentage.homework4 by
typing/afs/cs.uwm.edu/@sys/usr/afsws/fs sa homework4 someoneelse write
| Date | Topic | Reading | ||
|---|---|---|---|---|
| 1/27 | Introduction; Syntax | Ch. 1-2 | ||
| 2/3 | Abstract Syntax; Language Systems | Ch. 3-4 | ||
| 2/10 | Introduction to ML; Type | Ch. 5-6 | ||
| 2/17 | ML Patterns and Nesting; Polymorphism | Ch. 7-8 | ||
| 2/24 | 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 | Midterm; Java Classes | Ch. 1-14; Ch. 15 | ||
| 3/23 | SPRING BREAK | |||
| 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 | Lazy Evaluation; Introduction to Haskell | (handout) | ||
| 5/11 | History of Programming Languages | Ch. 24 | ||
| 5/21 | 3pm: Final Examination | Ch. 1-24 |