Augustana Faculty logo and wordmark


COMPUTING SCIENCE 370
Programming Languages

COURSE MATERIALS INDEX

Fall Term, 2004


This document was last modified Monday, 16-Apr-2007 20:41:48 MDT



Course Information

. Course Description and Regulations

. Course Outline

. Instructor Office Hours and Contact Information

. Percentage to Alpha Grade Conversion Chart

. Policy on Academic Integrity

. Expectations regarding Attendance and Course Work


Programming Assignments and Exercises

(in reverse chronological order)

. Programming Assignment 4 - Prolog (due before midnight on Friday, December 10)      [large print]

. Programming Assignment 3 - Prolog (due before midnight on Friday, December 3)      [large print]

. Exercise Set 2 - Implementation of Block Structured Languages (due at the start of the lab session on Friday, November 19)     [large print]

. Programming Assignment 2 - Lisp: One-Dimensional Life (due before midnight on Friday, November 5)     [large print]

. Programming Assignment 1 - Lisp: The k-nearest-neighbours problem (due before midnight on Friday, October 15)     [large print]

. Exercise Set 1 - EBNF (due Friday, September 24, 12:50 p.m.)     [large print]


Password for Assignment Submissions

Your assignment submissions are password-protected. These passwords apply only to form data submitted via the Web server. They are separate from (and typically different from) your Augustana network password or the password for your Unix account (if you have one).


Lecture Notes

. Programming Languages: An Overview      [large print]

. Programming Language Paradigms      [large print]

. BNF and EBNF      [large print]

. Chomsky's Hierarchy of Languages      [large print]

. LISP -- Structural Organization      [large print]

. LISP -- Data Structures      [large print]

. LISP -- Control Structures      [large print]

. LISP -- Name Structures      [large print]

. LISP -- Storage Reclamation      [large print]

. Pseudo-code Interpreters      [large print]

. Fortran -- Syntactic Structure and Control Structures      [large print]

. The Compilation Process      [large print]

. Fortran -- Data Structures and Name Structures      [large print]

. Fortran Exercises      [large print]

. Algol -- Structural Organization and Syntactic Structures      [large print]

. Algol -- Name Structures and Data Structures      [large print]

. Algol -- Control Structures      [large print]

. Algol Exercises      [large print]

. Pascal      [large print]

. Implementation of Block-Structured Languages      [large print]

. Notes about C      [large print]

. Prolog -- Programming in Logic      [large print]

. Prolog -- Structural Organization and Control Structures      [large print]

. Prolog -- Data Structures      [large print]

. Ada      [large print]

. Smalltalk      [large print]


Resources

SSH

PuTTY is a Windows client which implements both the telnet and SSH protocols. You can download PuTTY and install it on your home machine in order to connect to the server Berio to do your assignments. When configuring PuTTY, type 'berio.augustana.ca' in the 'Host Name' box, click the 'SSH' radio button, then type 'Berio' (or 'Augustana" or 'My CSC lab machine' or whatever you want to call this connection) in the 'Saved Sessions' box and click the 'Save' button. You may also wish to change some other settings, but it shouldn't be necessary; for example, I like to change the size of the window (select the 'Window' panel) to 40 rows, instead of the default 24.

LISP

. Running Lisp under Emacs      [large print]

. Xanalys® LispWorks® Personal Edition Download
A freeware version of Common Lisp for the Windows platform. The editor uses Emacs-like keystroke commands (heh, heh, heh).

. The complete text of Common Lisp the Language, 2nd edition, by Guy L. Steele, Thinking Machines, Inc., in HTML format.

. A collection of links to LISP resources by Marty Hall.

. A collection of links to LISP, Scheme, and Prolog resources.

. Lisp: Good News, Bad News, How to Win Big [in PDF format] by Richard P. Gabriel (formerly of Lucid, Inc, now with Sun Microsystems)

. Worse is Better by Richard P. Gabriel

Algol

. Revised Report on the Algorithmic Language Algol 60

. A60 Algol interpreter (freeware)

Pascal

. Why Pascal is Not My Favorite Programming Language by Brian W. Kernighan, AT&T Bell Laboratories (1981)

. Learn Pascal - a tutorial by Tao Yue (MIT)

. GNU Pascal - an Open Source Pascal compiler

. P2C - an open source Pascal-to-C translator (pseudo-compiler), written in C for portability

Prolog

. Ninety-Nine Prolog Problems by Werner Hett

. Logic, Programming and Prolog (2e) by Ulf Nilsson and Jan Maluszynski (available in PDF format for free online; previously published by John Wiley & Sons Ltd.)

Ada

. Ada 95 Language Reference Manual (HTML version)

. Introducing Ada 9X, Ada 9X Project Report (February 1993), Office of the Under Secretary of Defense for Acquisition, Washington, DC

. Rationale for the Design of the Ada® Programming Language (HTML version)

. Ada 83 Software Technology Review (Software Engineering Institute)

. GNAT - The GNU Ada Translator - a free Ada 95 compiler

Java

. Pass-by-value semantics in Java applications by Peter Haggar (IBM) - explains that all parameters are passed by value in Java: objects are passed by reference, but the references are passed by value.

. Growing a Language: A Conversation with Guy Steele

Aspect-Oriented Programming

. Aspect Oriented Programming by Yasser EL-Manzalawy

Emacs

. A sample '.emacs' file for Emacs or Xemacs, including some functions and key bindings by Thomas R. Ioerger (Dept of Computer Science, Texas A&M University) for simplifying the use of Lisp (GCL) from within Emacs/Xemacs. (See the end of the '.emacs' file.)

Commands (after prefix of Control-t):
l = start Lisp (GCL)
e = evaluate current expression
w = switch to Lisp buffer
q = quit from debugger back to top-level
b = evaluate buffer
x = kill Lisp process

. Emacs tutorial [Free Software Foundation,1985]

. GNU Emacs Reference Card (for version 19)    [alternative source]
This is an online version of the reference card that comes with Emacs in PostScript form.

. GNU Emacs FAQ    [alternative source]

A Variety of Languages

. The Language Guide

. The Language List -- " an attempt to enumerate all known programming languages," maintained by Bill Kinnersley

Sample Exams

. Mid-Term Exam 1998            [Instructor]

. Mid-Term Exam 1999            [Instructor]

. Other Sample Mid-Term Exam Questions            [Instructor]

. Sample Exam Question -- Implementation of Block Structured Languages

. Sample Final Exam Questions

Copyright © 2002, 2003, 2004 Jonathan Mohr