INF 212 Analysis of Programming Languages

Synopsis

Purpose. The study of programming languages and their use in software systems engineering -- partly theoretical, partly empircal. Includes an introduction to the formal aspects of programming languages, program analysis techniques and large-scale analysis of software projects.

Evaluation. Projects (90%) + Class participation (10%)

Pedagogy:
The course's 20 or so lecture slots will be half formal lectures and half discussion sessions.
- Lectures give overview of the material
- Projects are hands-on vehicles for learning the material.

Instructor: Prof. Cristina Lopes, DBH 5076, lopes at ics dot uci dot edu


Projects

There will be 6 to 9 projects.

Submission

EEE plus F2F discussion.

Important dates

Project Topic Due date Demo date
1 Lambda Calculus 4/15 4/16
2 Operational Semantics 4/15 4/16
3 Haskell 4/29 4/30
4 JavaScript 4/29 4/30
5 Reflection 5/13 5/14
6 Type Systems 5/13 5/14
7 Modularity 5/27 6/4
8 Virtual Machines 6/3 6/4
9 Program Analysis 6/12 6/13


Syllabus:

Week Date Topic Weekly materials Notes
1 4/1 Lambda Calculus 1. Alonzo Church and Lambda Calculus
2. Church's original paper
3. Handout 1
4. Handout 2
Slides
4/4 Slides
2 4/9 Operational Semantics 1. Pierce
2. Moore and Grossman
3. Wasserrab et al
4. Mathews and Findler
Slides
4/11  
3 4/16 Closures, continuations, monads,
and assorted functional programming goodies
1. Goto Considered harmful
2. The discoveries of continuations
3. Programming with continuations
*demos
4/18 Slides

4 4/23 Haskell and JavaScript 1. How to declare an imperative
2. You could have invented monads
Slides
4/25 Slides
5 4/30 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. Reflection in Smalltalk
*demos
5/2 Slides
6 5/7 Type Systems 1. Type Systems
2. Types and Programming Languages
3. Dependent Types
4. The End of the Cold War
Slides
5/9 Slides
7 5/14 Modularity 1. Parnas' "On the Criteria..."
2. AOP
3. Execution in the Kingdom of Nouns
*demos
5/16 Slides
8 5/21 Virtual Machines 1. Lean and Mean JVM
2. The Jalapeno VM
3. SlimVM
Slides
5/23 Prof. Xu's slides
9 5/28* Program Analysis 1. Representation and Analysis of Software
2. A Survey of Program Analysis Techniques
3. Abstract Interpretation
4. Dynamic Program Slicing
*no class
5/30

Slides

10 6/4 Recap   *demos
6/7 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.