ICOM 4036 – Structure and Properties of Programming Languages (Fall 2004)

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 (3:00 – 4:20 & 4:30-5:50) @ Stefani 229

- Lecture   1 – Administrivia, Course Overview, Brief PL History, PL design criteria (PDF)
- Lecture   2 – Programming Paradigms I – Low-level Programming (e.g. MIPS Assembly) (PDF)
- Lecture   3 – Programming Language Specification and Translation (PDF)
- Lecture   4 – Programming Paradigms II – Imperative Programming (e.g. Fortran) (PDF)
- Lecture   5 – Programming Paradigms III – Functional Programming (e.g. Scheme) (PDF)
- Lecture   6 – Programming Paradigms IV – Logic Programming (e.g. Prolog) (PDF)


- Exam Parcial 1: October  7 in class (Topics, Practice, Solution, Stats)
- Exam Parcial 2: November 10  in class (Topics, Practice, Solution, Stats)
- Exam Parcial 3: December 2 in class (Topics&Practice, Solution, Stats)
- Final Exam: December 15, 2004 9:45 AM Fisica A  (Topics, Practice, Solution, Stats)

Problem Sets

- Problem Set 1. TBA (PDF, Solution)
- Problem Set 2. TBA (Doc, Solution)
- Problem Set 3. TBA (Doc, Solution)
- Problem Set 4. TBA (Doc, Solution)
- Problem Set 5. TBA (Doc, Solution)

Programming Assignments

- Programming Assignment 1. Low-level Programming  (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)
- Programming Assignment 5. 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)

Language References and Documentation

- MIPS Assembly Language and SPIM

bullet  “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.
bullet SPIM/MIPS Instruction Set Sheet (PlainText)
bullet Useful website with lots of MIPS/SPIM documentation (click)
- Fortran 77

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

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

bullet Prolog Tutorial (HTML)
- Perl

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

bullet Quick Ada Tutorial (pdf)

Other Reference Links

-  Pagina del curso ICOM4036 del Profesor Wilson Rivera (click)
- Introduction to Programming Languages by Anthony A. Aaby (HTML)

Course Evaluation

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