CSc 520 Principles of Programming Languages - Schedule
Introduction
Week 1
Lecture #1, Wed, Jan 16:
Administrivia, Introduction
- Grading policy, Course content
- Lecture note #0 (Administrivia) handed out.
- Language design overview
- Read Scott, Programming Language Pragmatics, pp. 1-15
- Lecture note #1 (Introduction) handed out.
Week 2
Lecture #2, Mon, Jan 21:
MLK
- Martin Luther King Holiday, no class.
Translator Implementation
Lecture #3, Wed, Jan 23:
Interpreters
- The phases of translation.
- Lecture note #2 (Translators) handed out.
- Read Scott, Programming Language Pragmatics, pp. 15-29
Week 3
Lecture #4, Mon, Jan 28:
Interpreters
- The phases of translation.
- Lecture note #3 (Interpreters) handed out.
- Assignment 1 (Interpretation) handed out.
- Note: there were some errors in the assignment handout, mainly that the Pos argument of all instructions went missing. I've updated the compiler (get version 8.1) and the online assignment handout.
Lecture #5, Wed, Jan 30:
Interpreters
- Fast interpreter implementation
Memory Management
Week 4
Lecture #6, Mon, Feb 4:
Introduction
Lecture #7, Wed, Feb 6:
Mark-and-sweep
- Malloc
- Mark-and-sweep
- Lecture note #8 (Memory Management --- GC --- Mark and Sweep) handed out.
- Read Scott, Programming Language Pragmatics, pp. 383-389
- We now have our own mailing-list: csc520@listserv.arizona.edu
- Add yourself by sending an email to listserv@listserv.arizona.edu.
- No subject line is required. In the body of the email, put this command: "subscribe csc520 Firstname Lastname".
- The deadline for assignment 1 has been extended until Midnight, Wednesday. February 13.
- I will from now on have office hours Thu 2pm-4pm. I still have the open door policy and you can, of course, always make an appointment to see me.
Week 5
Lecture #8, Mon, Feb 11:
Copying Collection
- Copying Collection
- Generational Collection
- I handed out the paper Uniprocessor Garbage Collection Techniques. Read the marked sections!
- The Luca compiler version 8.2 is now up. It fixes a minor bug in how type sizes are calculated.
- Lecture note #9 (Memory Management --- GC --- Copying Collection) handed out.
- Read Scott, Programming Language Pragmatics, pp. 387-388
Lecture #9, Wed, Feb 13:
Generational Collection
Type Systems
Week 6
Lecture #10, Mon, Feb 18:
Introduction
- Reference vs. value semantics.
- Lecture note #13 (Types --- Introduction) handed out.
- Read Scott, Programming Language Pragmatics, pp. 307-312
Lecture #11, Wed, Feb 20:
Equivalence
- Classification of types
- Lecture note #14 (Types --- Classification) handed out.
- Read Scott, Programming Language Pragmatics, pp. 312-320,336-361
- Type equivalence
- Lecture note #15 (Types --- Equivalence) handed out.
- Read Scott, Programming Language Pragmatics, pp. 321-335
- I've added one new bytecode, "gc", to the compiler. It triggers a garbage collection. Download Luca 8.3.
- The new version of the Luca language also has a "GC" statement.
- Update: 8.3 had a bug (forgot to remove debugging code...). Get 8.4!
- 5 testcases for assignment 2 have now been uploaded. They're worth 10% each.
- You are allowed to share testcases with each other.
- If you've written some really neat testcase - send it to me! (-:
- Luca version 8.5 is now up. It doesn't fix any bugs, just does better error handling.
Week 7
Lecture #12, Mon, Feb 25:
Polymorphism
- Inclusion polymorphism, parametric polymorphism, conformant arrays
- Pascal, C, Modula-2, Ada, Haskell
- Lecture note #16 (Types --- Polymorphism) handed out.
- Read Scott, Programming Language Pragmatics, pp. 145-149,309-311,330-331,331-332,355-356,434-440,505--508
- Duck typing in Ruby
- Lecture note #17 (Types --- Ruby's Duck Typing) handed out.
Object-Oriented Programming
Lecture #13, Wed, Feb 27:
Introduction
Week 8
Lecture #14, Mon, Mar 3:
Multiple inheritance
Lecture #15, Wed, Mar 5:
Smalltalk
Week 9
Lecture #16, Mon, Mar 10:
Smalltalk
- Blocks
- Read Scott, Programming Language Pragmatics, pp.158-CD--161-CD
Names, Scopes, and Bindings
Lecture #17, Wed, Mar 12:
Introduction
- Scope and binding time
- Non-local variables
- Nested procedures, classes, packages, modules
- Declaration before use
- Read Scott, Programming Language Pragmatics, pp. 103-124
- Lecture note #21 (Names, Scope, Bindings --- Introduction) handed out.
Week 10
Lecture #18, Mon, Mar 17:
Spring Break
Lecture #19, Wed, Mar 19:
Spring Break
Week 11
Lecture #20, Mon, Mar 24:
Modules
- Accessing non-local names
- Read Scott, Programming Language Pragmatics, pp. 117--120, 408--412
- Lecture note #22 (Names, Scope, Bindings --- Nested Procedures) handed out.
- Modules
- Modula-2, Ada
- Information hiding
- Opaque types
- Lecture note #23 (Names, Scope, Bindings --- Modules) handed out.
- Read Scott, Programming Language Pragmatics, pp. 30CD--35CD
Lecture #21, Wed, Mar 26:
Dynamic Scope
Control Structures
Week 12
Lecture #22, Mon, Mar 31:
Introduction
- Short-Circuit Evaluation
- Selection
- If, Case, ...
- Iteration
- while, repeat, for,...
- Lecture note #26 (Control Structures --- Introduction) handed out.
- Read Scott, Programming Language Pragmatics, pp. 233--242, 249--257, 260--278, 284--291
Lecture #23, Wed, Apr 2:
Procedure calls
Week 13
Lecture #24, Mon, Apr 7:
Exceptions
Lecture #25, Wed, Apr 9:
Iterating over data structures
Week 14
Lecture #26, Mon, Apr 14:
Coroutines
Functional Programming
Lecture #27, Wed, Apr 16:
Introduction to Functional Programming
Week 15
Lecture #28, Mon, Apr 21:
Scheme Functions
Logic Programming
Lecture #29, Wed, Apr 23:
Introduction to Logic Programming
Week 16
Lecture #30, Mon, Apr 28:
Prolog Programming
Programming Language Survey Presentations
Lecture #31, Wed, Apr 30:
Object-Oriented Languages
Week 17
Lecture #32, Mon, May 5:
Miscellaneous languages
- LOGO www.cs.berkeley.edu/~bh/logo.html ricarlos jsamdal
- SETL cs.nyu.edu/~bacon/download-setl.html tpatki bhandari
- FORTRAN 95 gcc.gnu.org/fortran xingqu esgreene
- Also, Functional Languages:
- O'caml caml.inria.fr qtung pavank
- APL/J www.jsoftware.com qingju kims
- Erlang www.erlang.org rbailey iryan
Lecture #33, Wed, May 7:
Scripting Languages
- Python www.python.org rtorres fcirett
- Watch Python video
- Perl www.perl.org marshall ghigliom
- Icon www.cs.arizona.edu/icon parags lopa
- gawk www.gnu.org/software/gawk amit nithya
- JavaScript www.njs-javascript.org natashag pallavic
- TCL/TK www.tcl.tk balajir xuchenw