INF 212 Analysis of Programming Languages

Synopsis

Purpose. The study of programming languages and their use in software systems engineering. See beyond hypes, know the past, grasp fundamental concepts.

Textbook: Exercises in Programming Style
Code: Github

Evaluation. Projects (70%) + Readings (20%) + Class participation (10%)

Pedagogy:
- Lectures give overview of the material
- Projects are hands-on vehicles for learning the material.

Course policies: Policies

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


Weekly Assignments

There will be 6 to 9 assignments. Each one is a small set of programming exercises plus paper summaries

Submission: 1 single zip file submitted to EEE

Project Topic Due date
1 - Sign Course policies. Turn in to "Policies" DropBox.
- Exercises from book 1.1, 1.2, 2.1, 2.2 + Week 1 readings (*). Turn in to "Homework 1" DropBox
1/11
2 - Exercises from book 3.4, 4.3, 5.1, 5.2, 6.1 + Week 2 readings (*). Turn in to "Homework 2" DropBox 1/18
3 - Exercises from book 7.1, 7.2, 8.1, 9.1 + Week 3 readings (*). Turn in to "Homework 3" DropBox 1/25
4 - Exercises from book (11.1, 11.2) or (12.2, 12.3) + 13.1 + (14.1, 14.2) or (15.1, 15.2) + Week 4 readings (*). Turn in to "Homework 4" DropBox 2/1
5 - Exercises from book 18.4 + 19.1 + Week 5 readings (*). Turn in to "Homework 5" DropBox 2/8
6 - Exercises from book 22.3 + 24.1 + 24.2 + 24.3 + Week 6 readings (*). Turn in to "Homework 6" DropBox 2/15
7 - Exercises from book 26.1+26.2 (one single solution) + 27.1+27.2 (one single solution)+ Week 7 readings (*). Turn in to "Homework 7" DropBox 2/22
8 - Exercises from book 28.1 + 29.1+ 31.1 + 31.3 + Week 8 readings (*). Turn in to "Homework 8" DropBox 3/1
9 - Exercises from book 32.1 + 32.3 + 33.1 + 33.2 + Week 9 readings (*). Turn in to "Homework 9" DropBox 3/8


Syllabus:

Week Date Topic Weekly materials Notes
1 1/6 Historical Overview of PLs 1. Turing's Machine (*)
2. von Neumann's architecture
3. Forth (*)
Intro
Turing Machines
Forth
1/8* *no class*
2 1/13/9 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 (*)
6. LISP
7. Stratchey's lectures -- semantics
8. Backus' case for functional programming
Imperative
1/15 Procedures & Functions
Lambda Calculus
3 1/20* Function Composition 1. Dijkstra's Recursive Programming (*)
2. The discoveries of continuations
3. Moggi's Monads
4. Wadler's The essence of functional programming (*)
*no class*
1/22 Function Composition

4 1/27 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
Smalltalk
JavaScript
1/29 ADTs
Frameworks
5 2/3 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
Reflection
2/5 Plugins
6 2/10 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
Adversity
2/12 Type Systems
7 2/17* 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" (*)
*no class*
2/19 SQL / Spreadsheets
Iterators, Generators, Coroutines
8 2/24 Concurrency 1. Actors
2. Linda (*)
3. CLOS Map/reduce (Chapter 14.2)
4. Google's MapReduce (*)
Concurrency I
2/26 Concurrency II
9 3/3 Interactivity 1. MVC in Smalltalk (*)
2. REST and Fielding's blog post (*).
Interactivity
3/5

 

10 3/10 Recap   Wrap up
3/12 Slides

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.