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

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,HandwrittenNotes, MITSlides)
- 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:TBA (Topics, Practice, Solution, Stats)
- Exam 2: TBA (Topics, Practice, Solution, Stats)
- Exam 3: TBA (Topics, Practice, Solution, Stats)
- Final Exam: (Topics, Practice, Solution, Stats)

Problem Sets

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

Programming Assignments

- Programming Assignment 1. TBA  (Word, PDF, Solution)
- Programming Assignment 2. TBA (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


Pagina 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)

Si descubres algún enlace útil para la clase  avísame para colocarlo aquí.