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.
Evaluation. Up to 9 projects. Each project is worth up to 100 points.
Course policies: Policies
Instructor: Prof. Cristina Lopes, DBH 5076, lopes
at ics dot uci
Office hours: Mondays, Wednesdays 11am--12pm
Teaching Assistant: Matias Giorgio, DBH 5209, mgiorgio
at ics dot uci
Office hours: Fridays 12:30-2:30pm
Submission: 1 single file submitted to EEE
|1||Sign Course policies.
Homework Project 1.
|2||Exercises from the book: 3.4, 4.1+4.4, 5.1+5.2, 6.1, one file per chapter named Three, Four, etc. with proper extensions.
Zip the 4 files and upload to Homework 2.
|3||Exercises from the book: 7.1+7.2, 8.1, 9.1||4/19|
|4||Exercises from the book: 12.1+12.2+12.3, 15.1+15.2+15.3||4/26|
|5||Exercises from the book: 16.3 (but use the program from exercise 15, instead of 10 or 11), 19.1. Extra credit (30 points!): 19.3 (note that by "show" I mean "show the code that works")||5/3|
|6||Exercises from the book: 23.1+23.2, 24.1+24.3||5/10|
|7||Exercises from the book: 25.1+25.2, 27.1+27.2||5/17|
|8||Exercises from the book: 28.1, 29.1+29.2 Extra credit: 31.1+31.3||5/24|
|9||Exercises from the book: 32.2 (not in Python) (Extra credit 31.1+31.3 still valid this week)||5/31|
|1||3/31||Historical Overview of PLs||1. Turing's Machine
2. von Neumann's architecture
|2||4/7||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/9||Procedures & Functions Lambda Calculus|
|3||4/14||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||4/21||Objects and Object Interactions||
5. Inversion of Control in Smalltalk
6. Fowler's Inversion of Control
7. The information bus
|5||4/28||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|
|6||5/5||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
|7||5/12||Data-centric: relational model, spreadsheets, reactive, dataflow. Iterators and generators.||
1. Codd's Relational Model for data banks
2. A Brief History of Spreadsheets
4. CLU's "iterators"
|SQL / Spreadsheets|
|5/14||Iterators, Generators, Coroutines|
3. CLOS Map/reduce (Chapter 14.2)
4. Google's MapReduce
|9||5/26*||Interactivity||1. MVC in Smalltalk 2. REST and Fielding's blog post .||*no class|
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.