CompSci 431: Programming Languages Concepts--Spring 2004

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

Introduction

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).

Objectives

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.

Requirements

Students must have received a `C' or better in CompSci 252, In particular, this class assumes the following abilities:

  1. Ability to write, compile and execute C++ programs, including complex programs composed of tens of classes with pointers, inheritance and overriding.

Texts

The required textbook for the course is

Adam Brooks Webber. Modern Programming Languages: A practical introduction. Franklin, Beedle and Associates, Inc., 2003.

Grading

The grade for the course will be computed from the following parts:

40%
Exams
There will be one midterm and one final exam, each worth 20% of the grade.
60%
Homework
There will be a homework every week (13 in all), partly programming and partly text. Each homework is due at the start of lecture. Late homework will not be accepted. Each homework is worth 5% of the grade. The lowest homework grade will be dropped.
Exceptions to these rules can be made only in extraordinary circumstances. Advance notice of a need for an exception should be given whenever possible.

Criteria

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.

Academic Honesty

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.

Course Grades

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
There is no curve, but the instructor reserves the right to increase a grade if he believes it would not reflect the student's mastery of the material. A grade can only be decreased for academic dishonesty.

Special Features of the Filesystem

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:

OldFiles
The directory includes a copy of your volume taken at 1am. If you accidentally delete a file that you need, please look for a backup here before contacting lab staff.
Grades
This directory includes a file giving the grade for each assignment. The first line gives the numeric grade and the remainder of the file gives comments. The file summary.txt lists all the scores and computes the weighted percentage.
If you are told to do the assignment with another person, you can give them permission to write files in a subdirectory such as homework4 by typing

/afs/cs.uwm.edu/@sys/usr/afsws/fs sa homework4 someoneelse write

Schedule


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    

Notes

About this document



John Tang Boyland
2004-01-23