This document is at URL http://www.cs.arizona.edu/classpage/cs520/

[ Texts | Course Format | Course Schedule | Lab Account | Policies | Syllabus | References | Other Info | Notes | Homework/Exams ]


University of Arizona, Department of Computer Science

CSc 520

Principles of Programming Languages
Spring 2002


Call Number 58233
Time and Place MW 12:00-1:15, Gould-Simpson 701
Descrip- tion This course will define, analyze and evaluate important concepts found in current programming languages. Its goals are to build an ability to evaluate and compare programming languages, both from the user's and implementor's view, and to develop precise mechanisms for specifying the semantics of programming languages. Specific topics include: data abstraction, datatypes, control structures, storage management and runtime support, operational and denotational semantic specification, applicative and object-oriented languages.
Pre- requisite CSc 453: Compilers and Systems Software
Instructor Peter J. Downey
pete@cs.arizona.edu
(520) 621-2207
Gould-Simpson 739
Office Hour: MW 1:15 - 2:30
These are walk-in office hours. Outside of these hours, make an appointment in advance through Sue Drexel (sdrexel@cs.arizona.edu), Administrative Associate, Gould-Simpson 745, 621-2018
Texts For prices and availability, see the UofA Bookstores link
  • Michael L. Scott, Programming Language Pragmatics, Morgan-Kaufmann, 2000. (Clothbound, ISBN 1-55860-442-1) (Paperbound, ISBN 1-55860-578-9)
  • Excerpts from David A. Watt, Programming Language Syntax and Semantics, Prentice-Hall, 1997, available at the ASUA Bookstore Fast Copy Center.
Course Format In addition to regular lectures, papers from the literature on programming languages will be assigned for reading. Grades for this course will be influenced by interaction in the classroom, and by your preparation and familiarity with the reading material.

weight item
45% Homework (4-5 problem sets)
25% Midterm Exam
30% Final Comprehensive Exam

Course Schedule
date event
Wed Jan 9 First class
Mon Jan 21 Martin Luther King, Jr Holiday - no class
Wed Jan 30 Last add without $250 charge
Tu Feb 5 Last RSVP/WebReg drop (no W on transcript)
Sat Mar 9 - Sun Mar 17 Spring Recess
Wed Mar 27 Midterm
Wed May 1 Last class
Fri May 10 Final Exam: 11:00 am - 1:00 pm, G-S 701

Spring 2002 Academic Calendar

Graduate Lab Account

All students must run the APPLY program each semester, and enter all the C SC courses in which they are enrolled. This applies whether or not you have a pre-existing account.

Directions for new accounts: If you do not already have a computing account in the Department's Instructional Laboratory, you can obtain an account on the instructional processor (lectura). To do so, repair during the first week of class to the Department on the 7th Floor of Gould-Simpson Bldg. Follow the lobby signs to the machines in Room 737 that run the account initialization program. Select a machine that is logged in, or log on under the account name apply, password apply. Respond to the prompts for your Student ID (SID), course number, etc., to initiate the account registration process. Complete, read and sign a copy of the Appropriate Use Guidelines document, available near the machines, and turn it in to the Reception Desk in Room 721. Your registration information will be verified and an account will be created for you, along with a keycard allowing lab access. After 3 working days, you can pick up your keycard at the Reception Desk (Room 721) by presenting a valid picture ID.

You need to know your Computer Science ID (CSID). To find it, log on to lectura under the name csid with password CSID. At the prompt, enter your Student ID (SID). Hyphens are optional. Write down your CSID for future reference. It will be used in any public or web grade postings.

On lectura, various language processors are available, but may require some hunting using man -k. For example, versions of the Scheme programming language are available on lectura under scm (or scheme) and scheme48. Other functional languages of interest are Kyoto Common Lisp (kcl), other Lisps (lisp, clisp) and Standard ML of New Jersey (sml).

Policies

Each graded item, such as a homework or examination, is first awarded a raw score; raw scores vary with the number of questions, their difficulty, and their length. For each graded item, the raw scores is normalized to a ``traditional'' scale in which 90 - 100 is an A, 80 - 89 is a B and 70 - 79 is a C. For each graded item, only the normalized score is recorded. The final cumulative course grade is computed as a weighted average of these normalized scores, using the weights described under Course Format above. The resulting weighted average is then converted to a letter grade using the ``traditional'' scale. Decisions on whether borderline scores (such as 89) will be recorded as the next highest letter grade will be made using (a) performance on the final examination and (b) evidence of accomplishment in the subject that is cumulative over the term.

Attendance is not enforced, but you are responsible for all material covered in lecture or assigned as reading.

Without prior arrangements, missed exams result in a grade of zero. Homework is due at the start of class on the due date; late homework is not accepted.

Assignments in this course require individual attention and effort to be of any benefit. All work is expected to be that of each student alone, without consultation with others, without reference to borrowed solutions, and not the product of team efforts or collaboration with other authors. Plagiarism or the incorporation of another author's words or ideas constitutes theft of intellectual property; it will result in a grade of zero. Copying work from another student, whether currently or formerly enrolled in this course, copying from a book or paper, or copying text from a web page all constitute plagiarism. These and other provisions are governed by the Code of Academic Integrity which applies to all those in this course. It is a violation of the Code to use another person's solutions as your own, whether those solutions are taken from a student in this course, or taken from solutions obtained from an earlier offering of this course, or from a student who took this course earlier.

It is assumed that: you have the prerequisites for this course, and their prerequisites, etc., recursively; that you are literate in a few modern computer languages; that you are both literate and a competent programmer in C; and that you are skilled in the use of the programming environment and Unix tools available in the Department's Graduate Instructional Laboratory.

The instructor reserves the right to fail for the course any student failing the final comprehensive examination.

Syllabus
  1. Programming Linguistics
    1. Introduction: Syntax, semantics and pragmatics. Criteria for language design. Imperative vs. Applicative languages. Operational, denotational and axiomatic semantics. History and evolution.
    2. Variables, Expressions and Statements: Binding time spectrum. Variables and expressions. Assignment. l-values and r-values. Environments and stores. Storage allocation. Constants and initialization. Expressions. Statement-level control structures.
    3. Types: Primitive types. Pointers. Structured types. Coercion. Notions of type equivalence. Polymorphism: overloading, inheritance, type parameterization.
    4. Procedure Mechanisms: Declarations and activations. Parameter passing. Exceptions. Coroutines. Concurrency. Generators.
    5. Referencing Environments: Static, semidynamic and dynamic activation records. Local vs. global references. Static chain and display. Central referencing environment. Funargs. Deep vs. shallow binding. Parameter passing. Aliasing. Block structure.
    6. Data Encapsulation: Abstract datatypes. Information hiding and abstraction. Visibility. Procedures. Modules. Classes. Packages. Objects and Object-Oriented Programming: inheritance, subtypes and extensions. Simula 67 classes. Smalltalk-80. C++.
  2. Programming Language Semantics
    1. Symbol and Meaning: Metalanguage and object language. Semantic maps. Mathematical background: functions, operators, relations, partial orders.
    2. Syntax: Abstract vs concrete syntax. Syntactic domains. Static and dynamic semantics. Abstract syntax trees.
    3. Semantic Description: denotational semantics; operational semantics; axiomatic semantics. Examples with a simple imperative language.
    4. Lambda Calculus: Abstraction and application. Free/bound variables. Reduction. Normal forms and divergence. Church-Rosser theorem. Typed lambda calculus. Semantics of a simple applicative language.
    5. Recursive Definition: The problem of recursive definition. Semantic domains. Continuous functions. Strictness. Fixpoint theory. Successive approximation. Domain-theoretic semantics of an applicative language. Operational semantics: minimal fixpoints and computation rules.
    6. Denotational Semantics of Imperative Languages: Environment/state semantics. Expressions. Commands. Loops. Environments and blocks; refs and dynamic storage. Product types and arrays. l-values and r-values. Jumps and environment/continuation/state semantics. Semantics of parameter passing modes.
Library Referen- ces Appropriate links to the library system are: The following books are on reserve at the Main Library Reserve Book Room. They may prove helpful as collateral readings. Others may be added from time to time.
Reference Links
Other Course Information
  • cs.course520 is the CSc 520 newsgroup. Regularly check this newsgroup either through the above link or via some other news reader (pine, trn, etc.). The newsgroup is the place for homework updates, text errata, changes of due date, and advice from the instructor. Answers to student questions of public interest will be posted here.

  • http://www.cs.arizona.edu/classes/cs520/ is the URL for this document, which is the official course syllabus. It will be kept it up-to-date with information on assignments and exams. Reload it regularly to see any changes.
Notes

Home- work & Exams

Final Grades

Grades are posted here and outside Room 739 Gould-Simpson. Grades are posted by your "Computer Science ID" (CSID), which can be discovered by telnet to lectura, login as "csid", password "CSID" and responding to prompts.

Exam envelopes may be picked up in Room 721 Gould-Simpson after 12:00 pm Tuesday 14 May.



[ Top of Page | Texts | Course Format | Course Schedule | Lab Account | Policies | Syllabus | References | Other Info | Notes | Homework/Exams ]
http://www.cs.arizona.edu/classpage/cs520/
Last updated 13 May 2002