INF 102 Concept of Programming Languages II


Purpose. In-depth study of major programming paradigms: imperative, functional, declarative, object-oriented, aspect-oriented, and much more! Understanding the role of programming languages in software development and the suitability of languages in context.

Textbook: Exercises in Programming Style
Code: Github

Evaluation. Up to 9 projects. Each project is worth up to 100 points.
Level Points   Level Points   Level Points   Level Points
A+810 B+675 C+540 D 350
A 765 B 630 C 495   
A-720 B-585 C-450   

Course policies: Policies

Instructor: Prof. Cristina Lopes, DBH 5076, lopes at ics dot uci dot edu
Office hours: Mondays, Wednesdays 10am--11am

Teaching Assistant: Aniket Shivam (
Office hours: Tuesdays, 9-11am, DBH 3072

Weekly Assignments

Project Topic Due date
1 Sign Course policies.
Homework Project 1.
2 3.4, 5.1+5.2, 6.1. One file per chapter named Three.txt, Five.xx, Six.xx, where xx stands for the extension of the language you choose. Additional constraint for Five: cannot be done in C++ or Clojure. Additional constraint for Six: cannot be done in Clojure, Ruby or Scala. 4/9
3 12.1+12.2 (Twelve.xx), 14.1 (FourteenOne.xx), 14.2 (FourteenTwo.xx), 15.1 (Fifteen.xx) 4/16
4 7.1+7.2 (Seven.xx), 8.1 (Eight.xx), 9.1 (Nine.xx). Additional for 9.1: cannot be done in Scala 4/23
5 16.3 (Sixteen.xx): use either the Python program in chapter 10 or any of your implementations with classes.
19.1+19.4 (Nineteen.xx)
6 23.2 (in Python), 24.1+24.2 5/7
7 25.1+25.2 (TwentyFiveWriter.xx, TwentyFiveReader.xx), 27.1+27.2 (TwentySeven.xx)
Extra credit (10 points): 26.2, use the given Python program (
8 28.1+28.2 (TwentyEight.xx), 29.1+29.2 (TwentyNine.xx)
Extra credit (25): 30.1 (Thirty.xx)
9 33.1+33.2 (ThirtyThree.xx)
Extra credit (25): 30.1 (Thirty.xx) -- second chance, for those who didn't do it last week!


Week Date Topic Weekly materials Notes
1 3/28 Historical Overview of PLs 1. Turing's Machine
2. von Neumann's architecture
3. Forth
3/30 Turing Machines
2 4/4 Basics of PLs: control flow, procedures, functions, expressions, statements, side effects, libraries 1. Dijkstra's GOTO Considered Harmful
2. McCabe's Complexity metric
3. Dijkstra's Notes
4. Global Variables considered harmful
5. Church's Lambda Calculus
7. Stratchey's lectures -- semantics
8. Backus' case for functional programming
4/6 Procedures & Functions
Lambda Calculus
3 4/11 Objects and Object Interactions 1. Simula
2. Smalltalk
3. Self
4. ADTs
5. Inversion of Control in Smalltalk
6. Fowler's Inversion of Control
7. The information bus
OOP Basics
4/13 ADTs
4 4/18 Function Composition 1. Dijkstra's Recursive Programming
2. The discoveries of continuations
3. Moggi's Monads
4. Wadler's The essence of functional programming
4/20 Function Composition

5 4/25 Reflection and Metaprogramming 1. Reflection and Semantics in LISP
2. Concepts and Experiments in Computational Reflection
3. Reflection in logic, functional and OO programming
4. Aspect-Oriented Programming
5. Aspects as latent topics
6. Conic
7. Fowler's Dependency Injection
4/27 Plugins
6 5/2 Adversity: dealing with the outside world 1. Proto-exceptions: error handling in PL/I (pages 105--114)
2. Cardelli's Type Systems
3. Hanenberg's Static vs. Dynamic empirical study
4. Imperative Functional Programming
5. Wadler's How to declare an imperative
5/4 Type Systems
7 5/9 Data-centric: relational model, spreadsheets, reactive, dataflow. Iterators and generators. 1. Codd's Relational Model for data banks
2. A Brief History of Spreadsheets
3. Coroutines
4. CLU's "iterators"
SQL / Spreadsheets
5/11 Iterators, Generators, Coroutines
8 5/16 Concurrency 1. Actors
2. Linda
3. CLOS Map/reduce (Chapter 14.2)
4. Google's MapReduce
Concurrency I
5/18 Concurrency II
9 5/23 Interactivity 1. MVC in Smalltalk
2. REST and Fielding's blog post .
*no class


10 5/30* Recap   Wrap up

No exam


Academic Honesty

I trust all students are honest and do not cheat. Those who break my trust at any point will get an F in the course - no excuses or apologies will be accepted.Additional penalties may also be imposed by the department and the university. Very severe incidents of academic dishonesty can result in suspension or expulsion from the university.

Students with Disability

Any student who feels he or she may need an accommodation based on the impact of a disability should contact me privately to discuss his or her specific needs. Also contact the Disability Services Center at (949) 824-7494 as soon as possible to better ensure that such accommodations are implemented in a timely fashion.