Document URL: http://www.cs.arizona.edu/classes/cs520/spring12/
The University of Arizona

University of Arizona, Department of Computer Science Seal of The University of Arizona

Spring 2012

C SC 520

Principles of Programming Languages

Time and Place Tue, Thu 12:30-1:45, Gould-Simpson 701, running from 1.12.12 to 5.1.12
Description 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.
Prerequisite C SC 453: Compilers and Systems Software
Instructor Peter J. Downey
pete at cs.arizona.edu
(520) 621-4325
Gould-Simpson 745
Office Hour: Before class: Tue 11:00 - 12:15; Thu 11:00 - 12:15
or make an appointment via email
Text Available at UofA Bookstores.
  • Michael L. Scott, Programming Language Pragmatics, 3rd Edition, Morgan-Kaufmann, 2006.(Editions 1 & 2 are out of print, and differ in organization from the 3rd Edition). ISBN 9780123745149.
    Other materials (link available in class)
  • David A. Watt, Programming Language Syntax and Semantics, Prentice-Hall, 1997. See instructor for link.
Course Schedule
date event
Wed Jan 11 First day of class
Thu Jan 12 First day of 520 class
Mon Jan 16 Martin Luther King, Jr. Holiday
Tue Jan 17 520 class
Thu Jan 19 Last UAccess add
Tue Feb 7 Last day to drop without W/E grade (via UAccess)
Sat Mar 10 - Sun Mar 18 Spring Recess
Tue Mar 20 - Tue Mar 27 Midterm Exam (Take-home)
Tue May 1 Last 520 class; final exam out; last grad drop (W/E grade)
Thu May 3 Dead Day: no classes or finals
Tue May 8 Final Exam day;due by 5 pm
Fri-Sat May 11-12 Commencement
Further information can be found in Spring 2012 Dates and Deadlines and the Academic Calendar 2011-12
Course Format Grades for this course will be based in the following items. In addition to regular lectures, papers from the literature on programming languages may 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
30% Homework (4-5 problem sets)
35% Midterm Exam
35% Final Comprehensive Exam
C SC Computer Lab Account Obtaining a C SC Computer Account:
Computer accounts for C SC Department machines are available to any course registrant, either in-person or on-line. The account can be used on any machine in the Department's open labs, or through the Internet via ssh or other virtual terminal connection (e.g., PuTTY, iTerm). Read about obtaining such accounts at http://www.cs.arizona.edu/computing/accounts/accts-key.html. You can initialize or renew an account through the Web page: https://www.cs.arizona.edu/computing/services/main.html.

Login Name and Password:
Your C SC login name (userid, username) will match your current UA NetID. This NetID is the name of your UA email account, as in Your_NetID@email.arizona.edu. This login name is used for remote ssh access to lectura.cs.arizona.edu, and for login to workstations in Gould-Simpson 228 or 930, and throughout the building.

Your initial password for C SC Department machines will be sent to your email.arizona.edu address at the beginning of the semester. For this reason, you must have an active email.arizona.edu account in order to receive a C SC account.

When you log in to lectura.cs.arizona.edu for the first time you will be forced to change your initial password to a more secure password. See Rules for Acceptable Passwords for information on choosing strong passwords.

Access to Gould Simpson and Labs:
On the first day of classes all students who have registered for C SC classes, whether in-person or on-line, will be able to use their CatCards for access to the Gould-Simpson Building, and to the C SC computer labs in Gould-Simpson Rooms 228 and 930. Access will continue around the clock until the end of the semester.

Computer Science ID (CSID):
You will need to know your Computer Science ID (CSID), which is different from your Student ID (SID). To find your CSID at any time, go to www.cs.arizona.edu/computing/services/csid.html. Enter your 9-digit Student ID (SID) without any hyphens, and push the submit button. Record your CSID for future reference. Grades will be posted using your CSID.

For any account problems, send email to lab@cs.arizona.edu.

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

Any appeal to the instructor to review or reconsider a graded item must be made within a week (7 days) of the graded item being handed back in class. After that period, the original grade will stand.

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. In-person students should submit homework in paper form (in labeled envelopes provided). On-line students should submit .pdf files via email. Late homework is not accepted.

It is assumed that: you have the prerequisites for this course, and their prerequisites, etc., recursively.

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

The content of this syllabus is subject to change at the discretion of the instructor.

Academic Integrity

When writing an examination in this course, 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. Other provisions are governed by the University's Code of Academic Integrity which applies to all those in this course.

Accommodation

Students with disabilities, who may require academic adjustments or reasonable accommodations in order to participate fully in course activities or to meet course requirements, must first register with the Disability Resource Center, 1540 E 2nd St, 621-3268, email drc@w3.arizona.edu, URL http://drc.arizona.edu. DRC staff will qualify students for services, and provide a letter to be submitted directly to the instructor during the first week of classes.

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.
Lecture Notes PDF versions of lecture notes are placed here.
Homework, Reading & Exams
Web Page The Web page for C SC520 is: www.cs.arizona.edu/classes/cs520/spring12. This document is the one you are reading now, and contains general information about the course, policies, notes, assignments, schedule information, etc. Reload the page to see any changes. There is also a link to it on your D2L ``Course Home" page. Other information on course status is provided via the University's D2L (``Desire To Learn") course management system. See the section below on D2L to learn how to access this course on-line. (In brief: go to the D2L login page at d2l.arizona.edu. Enter your UA NetID and password. On that page will be a link to your ``Course Home" page)
D2L Both the course Web page and the D2L pages for the course are accessible to all registered students, whether in-person or on-line. It is worth familiarizing yourself with the D2L pages for this course. Changes will occur throughout the semester, particularly in news articles and content. You are expected to visit your ``D2L Course Home" page regularly to keep in touch.
  • Start here: D2L Student Tip Sheet
  • Your D2L ``Course Home" page is accessible via d2l.arizona.edu. You must be registered for C SC520 to gain access. After entering your UA NetID and password, you will be connected with your D2L ``My Home'' page, which was initialized for you at registration. The ``My Home" page contains a link to your ``Course Home" page for C SC520.
  • The D2L ``Course Home" page will have lecture notes, in paper form and video ``podcast" form, as well as homework assignments and any other handouts.
  • To learn more about how to use D2L, see the ``Desire2Learn Help" pages at help.d2l.arizona.edu. There are useful video tutorials at help.d2l.arizona.edu/students/home
About Video Lectures are not broadcast in real time. Instead lectures will be recorded, processed and available for viewing through D2L approximately 24 hours later. These video recordings are available to both on-line and in-person students, and will remain accessible for review throughout the semester.

Lectures will be available in streaming "podcast"("screencast" form.) This means that the lecture slides will be visible on the screencast, along with audio of the lecture. However, full video of the classroom and whiteboards will not be available.

  • Screencasts (Podcasts): an application called Podcast Capture records whatever is showing on the screen (including the cursor), and simultaneously records audio. This allows lecture slides to be recorded along with explanations and discussion. Each day's podcast (a.k.a. screencast) will be available, after some hours of delay, on the D2L site. On the ``Course Home" page, click ``Content" on the navigation bar. Scroll down to ``Screencasts" in the outline of content topics, and choose the lecture for the desired date. The file that opens contains a link http:// ... .mp4 that will open a window for viewing. There are three links for each screencast: a small format lq.mp4, a large format hq.mp4, and a link to the UA iTunes U site, where a large format version will be visible.
Communication
  • Office hours for the instructor are given above. These hours are subject to change during the semester. I will update this web page and email class members when changes have to be made. If you can not attend scheduled office hours, mail the instructor to make an appointment outside the regular ``walk-in" office hours--in person, via telephone or via email.
  • D2L News is accessible on your ``Course Home" D2L splash page. Items of importance involving assignment changes, schedule changes, problem hints, etc. will appear in the D2L News. Review it often.
  • Email questions sent to the instructor should have an informative subject line, and kept brief. It is usually not necessary to include all prior mail correspondence with your mail. Include only what is relevant from earlier exchanges.
Homework Standards

All written work submitted for credit must be prepared using a program that produces typeset output with the appropriate type faces, symbols and notation used in the theory of computation (e.g., TeX, LaTeX, Word + Equation, etc). Figures can be rendered using a drawing tool like xfig, Word, PowerPoint, dia, etc. Do not submit scanned images of handwritten work.

Rules for submitted work:

Start each solution on a new page, repeat the problem statement, and number each page. Write on one side of the paper only. Write concise and clear solutions, since failure to communicate clearly will cost points whether or not the conclusion is correct.

In-person students will submit work at the beginning of class on the due date (labeled envelopes will be provided). Please submit in paper form when at all possible--in-person students should submit .pdf files electronically only in an emergency. On-line students will submit answers electronically, before class time on the due date. Submissions must be in .pdf format only.

All good writing is based upon revision. It is essential to revise your work before submission, and to consider whether your argument will be understandable to the reader. For example, it is never a waste of effort to explain the strategy you intend to use in a proof or construction, before beginning to present the work in technical detail. Think of the reader. Explain as if teaching a colleague in your class. Revise. Revise again.

Reference Links



http://www.cs.arizona.edu/classes/cs520/spring12/
Last updated 1 May 2012