Summer Session II, Aug 9 – Sep 15, 2004
Instructor: Chris Stork
(Office hours after class and by appointment)
Teaching Assistant:
Chris Fensch
(Office hours at labs and by appointment)
Lectures: MWF 2:00–3:50pm in MSTB 120
Discussion: Mondays 4:00–5:50pm in MSTB 120
Labs: Wednesdays 4:00–6:00pm in CS192 or
Fridays 4:00–6:00pm in CS189
Mailing List: 36400-Z04@classes.uci.edu
Online Archive
My didactic approach will be a mix of the two predominant approaches:
Obviously, these two approaches don't exclude each other. But there are trade-offs: the former provides a deeper understanding of the specific features while requiring more effort, the latter gives a broader overview of languages while a detailed understanding of the workings and costs of certain language features might be neglected.
As my personal twist to this class I will try to equip the students—as far as this is possible under the given constraints—with a deeper understanding of more advanced features that are sure to appear in future programming languages, e.g., type inference. I will also emphasize functional programming in order to balance the fact that ICS (and ECE) are a bit ignorant in this respect.
"In-depth study of several contemporary programming languages stressing variety in data structures, operations, notation, and control. Examination of different programming paradigms, such as logic programming, functional programming and object-oriented programming; implementation strategies, programming environments, and programming style."
You have to like programming and thinking about programming! You should also be comfortable with basic concepts of mathematical logic such as propositional logic and inductive proofs.
| Date | Topic | Resources | Assignments | |
|---|---|---|---|---|
| Week 1 |
Monday, August 9 |
Intro, Survey, Functions, Halting Problem, Scheme | lecture01.pdf | |
|
Wednesday, August 11 |
Compilers, Lambda-Calculus | lecture02.pdf (includes corrected substitution example) |
Read chapters 2, 3, and sections 4.1, 4.2 in Mitchell. Get started with DrScheme and have a look at Revised5 Report on the Algorithmic Language Scheme (R5RS). |
|
|
Friday, August 13 |
More Lambda Calculus and Scheme, Garbage Collection, Functional vs Imperative | lecture03.pdf (includes extra slides on modelling booleans in lambda-calculus for your own enjoyment), transcript03.txt | Read sections 4.2 and 4.3 in Mitchell. | |
| Week 2 |
Monday, August 16 |
Quiz 1 Again Functional vs Imperative, Macros, Denotational Semantics |
lecture04.pdf | Read sections 4.3 and 4.4 in Mitchell. |
|
Wednesday, August 18 |
Embedding a Database Query Language in Scheme | lecture05.pdf, query.scm (especially check out the test section at the end to see what the functions do!) |
Play with Scheme! Homework 1 (actually due Thursday, 19 August 2004, 11:59pm) hw1-solutions.tex hw1-solutions.pdf | |
|
Friday, August 20 |
Queries and Backtracking | lecture06.pdf (with some corrections), infer.scm |
Study query.scm. Read chapter 15 in Mitchell. |
|
| Week 3 |
Monday, August 23 |
Quiz 2 Unification and Prolog |
lecture07.pdf |
Study infer.scm. Read chapter 15 in Mitchell. |
|
Wednesday, August 25 |
ML | lecture08.pdf, transcript08.txt |
Read chapter 5 in Mitchell. Homework 2 (actually due on Thursday, 26 August 2004, 11:59am) hw2-solutions.tex hw2-solutions.pdf pure-infer-no-global-db.scm pure-infer-no-counter.scm (The last two contain only code changes, i.e., comments are the ones from infer.scm, in order to facilitate easy diffing.) |
|
|
Friday, August 27 |
More ML, Types | lecture09.pdf, transcript09.txt, Using Moscow ML | Read chapter 5 and 6 in Mitchell. | |
| Week 4 |
Monday, August 30 |
Type Inference, First-Order Functions (Scope and Memory Management) | lecture10-4up.pdf lecture10.ppt |
Play with ML. Read chapter 6 and 7 in Mitchell. |
|
Wednesday, September 1 |
Implementing Higher-Order Functions, Structured Programming | lecture11-4up.pdf lecture11.ppt transcript11.txt zerodups-extended.ml |
Read chapter 7 and section 8.1 in Mitchell. Homework 3 (actually due on Tuesday, 31 August 2004, 2:00pm), Template for question 3. hw3-solutions.tex hw3-solutions.pdf |
|
|
Friday, September 3 |
Exceptions,
Data Abstraction and Modularity Quiz 3 |
lecture12-4up.pdf lecture12.ppt | Read section 8.2, 8.4 and chapter 9 in Mitchell. | |
| Week 5 |
Monday, September 6 |
Labor Day Holiday | ||
|
Wednesday, September 8 |
Generic Abstractions, Guest lecture by Peter Fröhlich: Intro to Object-Orientation |
lecture13-4up.pdf lecture13.ppt ml-sets infer.hs | Read chapter 10 in Mitchell. | |
|
Friday, September 10 |
More OOP, Smalltalk | lecture14-4up.pdf lecture14.ppt lecture13-14-OOP-4up.pdf additional OOP slides singelton.cpp stack-closure.sml | Read chapter 11 in Mitchell | |
| Week 6 |
Monday, September 13 |
C++ and Java | lecture15-4up.pdf lecture15.ppt |
Read chapter 12 and 13 in Mitchell Homework 4 (actually due on Sunday, 12 September 2004, 2:00pm) hw4-solutions.tex hw4-solutions.pdf |
|
Wednesday, September 15 |
Final Exam | |||
I had a request to also post the Latex sources for my lecture. So here's how I generated lecture 3: lecture03.tex. Be warned though that this Latex code was never intended for public scrutiny! Some of it might not make sense to you and it might be because it does not make sense. ;-)
Grades are on a 0-100 points scale which will be translated to A,B,.. at the end of the session. The final is an exception. It's worth 300 points.
Estimated time requirement for this class is ~30 hours/week.
All homeworks are submitted electronically via Checkmate. Non-programming homework is due as LaTeX and PDF documents. Details are given during the first lab session. (Information on preparing and submitting the homework)
The syllabus lists (reading) assignments and homeworks. It is very beneficial to read the assigned reading ahead of time!
Attend the discussion sessions and monitor the EEE course mailing list for my announcements!
The course mailing list is furthermore intended for any kind of out-of-class discussions. Send all questions or comments related to the course's content to this list! Do not email the instructor or TA personally with questions that are relevant to the whole class!
John C. Mitchell: Concepts in Programming Languages. Cambridge University Press, 2003. Errata. Recent text, written by an active researcher in the area. Emphasizes functional programming and type systems, but covers object-oriented programming and logical programming as well. A little more theoretical than other texts. The course does not cover everything in the book, and the book does not cover everything in the course.
Robert W. Sebesta: Concepts of Programming Languages, 6th edition. Addison-Wesley, 2004. This is the standard text book used by other courses here at UC Irvine.
Ravi Sethi: Programming Languages: Concepts and Constructs, 2nd edition. Addison-Wesley, 1996. By the man who co-authored the dragon book (the classic in compiler construction). I just discovered this book and it makes a very good impression on me even though it's a bit dated by now.
Daniel P. Friedman, Mitchell Wand, Christopher T. Haynes: Essentials of Programming Languages, 2nd edition. MIT Press, 2001. Errata. Classic text studying a range of programming language concepts through interpreters implemented in Scheme. Somewhat advanced, so grab this after the course if you were bored too often.
Carlo Ghezzi, Mehdi Jazayeri: Programming Language Concepts, 3rd edition. John Wiley & Sons, 1998. Popular alternative text, frequently used at UC Riverside for example.
Michael L. Scott: Programming Language Pragmatics. Morgan Kaufmann, 2000. Errata. Interesting combination of programming languages, computer architecture, and compiler construction. If you are looking for a single text covering all three areas to some extent, give this one a try.
Collaboration in form of discussions is strongly encouraged, but they must be acknowledged. Researching solutions on the Web or in the library is good too, but must be acknowledged as well.
Collaboration on code is not allowed. Don't even look at other's code!
ICS's policy on academic (dis)honesty applies and will be enforced! Furthermore be aware that we are using an automated plagiarism detection system.
Many thanks to Peter Fröhlich for discussions and for letting me build upon his lecture notes.