ICOM 4036 – Structure and Properties of Programming Languages (Spring 2006)

Comparative study of programming paradigms including imperative, object-oriented, functional, logic, and concurrent programming with focus on main features produced by different languages for specific applications. Formal specification of the syntactic structure of a language, context-free grammars, parsing, and principles of language design.

General Information

- Course Information Sheet A.K.A. Prontuario (PDF)

Course Outline  (PDF)

Lectures Tuesday & Thursday (4:10 – 5:25) @ Stefani 228

- Lecture   1 – Administrivia, Course Overview, Brief PL History, PL design criteria (PDF)
- Lecture   2 – The Nature of Computing (PDF)
- Lecture   3 – Programming Language Specification and Translation (PDF)
- Lecture   4 – Programming Language Paradigms I – Low-level programming (PDF)
- Lecture  5 – Programming Paradigms II – Imperative Programming (e.g. Fortran) (PDF)
- Lecture 6 – Programming Paradigms III – Functional Programming (e.g. Scheme) (PDF)
- Lecture 7 – Programming Paradigms IV – Logic Programming (e.g. Prolog) (PDF)
- Lecture 8 – Subroutines and Control Abstraction (PDF)


- Exam 1:March 9, 2006 in class (Topics, Practice, Solution, Stats)
- Exam 2: TBA (Topics, Practice, Solution, Stats)
- Exam 3: TBA (Topics, Practice, Solution, Stats)
- Final Exam: May 16 9:45AM S-227 (Topics, Practice, Solution, Stats)

Problem Sets

- Problem Set 1. Nature of Computing, Translation and Specification (PDF, Solution)
- Problem Set 2. Low-level Programming DUE March 15 in class (PDF, Solution)
- Problem Set 3. Double Integrals in FORTRAN (PDF, Solution)
- Problem Set 4. TBA (Doc, Solution)

Programming Assignments

- Programming Assignment 1. TBA  (Word, PDF, Solution)
- Programming Assignment 2. Integral Determinant (Word, PDF, Solution)
- Programming Assignment 3. TBA (RefCode, Doc, Solution)
- Programming Assignment 4. TBA (RefCode, Doc, Solution)

Email Lists

- icom4036-profs
- icom4036-students  (Subscribe) (Archives)
- icom4036-forum (staff & students)(Archives)

Software Development Tools

- Emacs for Windows (download)
- .emacs File (download)
- SPIM Simulator (home site, windows version)
- UC Berkeley  SPIM including SPIM for Mac OS (home site, macOS X)
- X Server for Windows (download)
- Check you linux account User id (section 156, section 166)

Supplementary Readings

- “The Nature of Computing”. Bienvenido Velez. COMPEL 2002 Plenary Talk. (PDF)
- RFC 1855: Netiquette Guidelines. ABSTRACT: This document provides a minimum set of guidelines for Network Etiquette (Netiquette) which organizations may take and adapt for their own use. As such, it is deliberately written in a bulleted format to make adaptation easier and to make any particular item easy (or easier) to find. It also functions as a minimum set of guidelines for individuals, both users and administrators. This memo is the product of the Responsible Use of the Network (RUN) Working Group of the IETF.
- “Lambda: The Ultimate Imperative”.  Guy Steel and Gerald Sussman. MIT AI Lab Memo 353. (PDF)
- Computability and Turing Machines

  1. CS 110 Notes University of Alberta
  2. Turing Machines in Stanford’s Encyclopedia of Philosophy

Language References and Documentation

- MIPS Assembly Language and SPIM

  1.  “Assemblers, Linkers and the SPIM Simulator”. This is Appendix A of Hennessy & Patterson, Computer Organization and Design: The Hardware/Software Interface. Coutersy of Morgan Kaufmann Publishers.
  2.  SPIM/MIPS Instruction Set Sheet (PlainText)
  3. Useful website with lots of MIPS/SPIM documentation (click)
- Fortran 77

  1. Getting Started with G77 (Windows)
  2. Gilberto Urroz’s Fortran 77 page
  3. Professional Programmer’s Guide to Fortran77 (HTML)
  4. Fortran Language Reference @ Sun Product Documentation (Web)
- Scheme

  1. Scheme home site @ MIT
  2. Revised Report on The Algorithmic Language Scheme” (HTML)
- Prolog

  1. Prolog Tutorial (HTML)
- Perl

  1. Picking up Perl Tutorial (Available here in several formats)
- Ada

  1. Quick Ada Tutorial (pdf)

Other Reference Links

- Página del curso ICOM4036 del Profesor Wilson Rivera (click)
- Introduction to Programming Languages by Anthony A. Aaby (HTML)
- MIT 6.004 Computation Structure course Fall 2002 (HTML)
  1. The Digital Abstraction (PDF)
  2. CMOS Computers (PDF)
  3. Gates (PDF)

Course Evaluation

- Evaluación del curso por los estudiantes durante el examen parcial I (PDF)