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

[ 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 2006


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 Tessa Chalberg (chalberg@cs.arizona.edu), Administrative Associate, Gould-Simpson 917A, 621-8448
Texts For prices and availability, see the UofA Bookstores link
  • Michael L. Scott, Programming Language Pragmatics, 2nd Edition, Morgan-Kaufmann, 2006.
  • Excerpts from David A. Watt, Programming Language Syntax and Semantics, Prentice-Hall, 1997. I will announce when this packet is available from Student Union FAST COPY (621-5306), probably in late January.
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
40% Homework (4-5 problem sets)
30% Midterm Exam
30% Final Comprehensive Exam

Course Schedule
date event
Wed Jan 11 First class
Mon Jan 16 Martin Luther King, Jr Holiday - no class
Mon Jan 23 Last day to add
Tue Feb 7 Last WebReg drop
Sat Mar 11 - Sun Mar 19 Spring Recess
Wed Mar 22 Midterm
Wed May 3 Last class
Fri May 5 Final Exam: 2:00 pm - 4:00 pm, G-S 701

Spring 2006 Academic Calendar

Graduate Lab Account

All students need to run the apply program each semester. This is the case whether or not you have a pre-existing account.

For Everybody: All students are required to fill out the web page entitled Computer Account Application Request Form at URL www.cs.arizona.edu/~apply. Do so whether or not you already have an account, and whether you are a Computer Science major or not. (This updates a Department database with your course selections, and you can be assigned a correct Computer Science ID (CSID) number). NOTE: If you have not done this update by Census Day (Tue 7 Feb), your account will be closed.

For a student with a currently active account in C SC: At the web page, under TYPE of APPLICATION, select UPDATE an OPEN account for new classes. Read the Appropriate Use Guidelines before pushing ACCEPT.

For a student without a currently active account in C SC: To obtain a new account on the Department's instructional processor lectura, or to re-activate an existing account, use any machine to go to URL www.cs.arizona.edu/~apply. (During the first week of classes, the Department provides machines for this purpose in Room 919 Gould-Simpson Bldg.) At the web page, under TYPE of APPLICATION, select either NEW account on CS systems, or RE-activate an EXISTING closed CS account. Read the Appropriate Use Guidelines before pushing ACCEPT.

Your registration information will be verified within a few minutes, and an account will be created for you, along with a keycard allowing round-the-clock lab access. The keycard will be available in Room 919 while the account registration machines are set up there, and at the Reception Desk in Room 917 thereafter.

For Everybody: You will need to know your CSID, since grades will be posted using this identifier. To find your CSID at any time, go to http://www.cs.arizona.edu/~apply/CSID.html At the prompt, enter your University of Arizona Student ID (SID). (Hyphens are optional). Record your CSID for future reference.

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 (Revised August 2005) 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 References 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/spring06/ 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 logging in as "csid", password "CSID" and responding to prompts.

Exam and homework envelopes may be picked up in Room 901 Gould-Simpson.



[ Top of Page | Texts | Course Format | Course Schedule | Lab Account | Policies | Syllabus | References | Other Info | Notes | Homework/Exams ]
http://www.cs.arizona.edu/classes/cs520/spring06/
Last updated 12 Feb 2007