CS 313 - Fall 2012

Programming Languages


Announcements

Course wrap-up and short quiz on Thursday 12/6.

Assignments

  1. Homework 1 (grammars) due Tuesday 9/18 in class. (Solutions)
  2. Homework 2 (Pascal) due Tuesday 9/25 in class. (Solutions)
  3. Homework 3 (C) due Tuesday 10/2 in class. (Solutions)
  4. Homework 4 (Pascal/C/Python) due Tuesday 10/9 in class. (Solutions).
  5. Homework 5 (Smalltalk/Python) Part 1 due Thursday 10/18, Part 2 due Thursday 10/25. (Solutions).
  6. Homework 6 (Scheme) due Tuesday 11/6 in class. (Solutions).
  7. Homework 7 (Scheme) due Tuesday 11/13 in class. (Solutions).
  8. Homework 8 (ML) due Tuesday 11/20 in class. (Solutions).
  9. Homework 9 (Prolog) due Thursday 11/29 in class. (Solutions).
  10. Homework 10 (various) due Friday 12/7 at midnight.

Lectures & Readings

  1. Tuesday 9/11 - Course introduction, syntax vs. semantics, contex-free grammars, expressions, pre-/in-/postfix (Ch 1, 2)
  2. Thursday 9/13 - Expression grammars, History of programming languages (Ch 1, Slides)
  3. Tuesday 9/18 - Pascal, hello.p, max1.p, max2.p (Ch 2.5, 3.1-4, 4.1-4, 15.1, Pascal Tutorial)
  4. Thursday 9/20 - Quiz; Pascal pointers, parameter passing, scope, activation records, makemaze.p, stack.p, qsort.p   (Ch 4.7, 5.2-4, 15.2)
  5. Tuesday 9/25 - C functions, pointers, arrays, division.c, stack.c   (Ch 4.8, 15.2)
  6. Thursday 9/27 - C structs, strings, I/O, wordcount.c, itob.c   (Ch 4.8, 15.2)
  7. Tuesday 10/2 - Python lists, functions; Intro to O-O programming, test.py, matrix.py   (Ch 5.5-7)
  8. Thursday 10/4 - Quiz; Smalltalk, lab: README, Smalltalk/X   (tutorial, method list)   (Ch 7.7, 15.4)
  9. Tuesday 10/9 - Smalltalk method and class definition, MyQueue
  10. Thursday 10/11 - Smalltalk: class vs. instance methods, linked list, IntList   (Ch 7.7-8)
  11. Tuesday 10/16 - Midterm recess - no class
  12. Thursday 10/18 - Midterm exam - in class
  13. Tuesday 10/23 - Python: classes, inheritance, modules, tuples, string formatting, point.py, rect.py, square.py
  14. Thursday 10/25 - Functional programming, intro to Scheme   (Ch 10, R5RS, mit-scheme, other tutorials)
  15. Tuesday 10/30 - Scheme: lists, quoting, list functions, tail recursion, sample.scm, tail-rec.scm   (Ch 10.1-3, 10.6, 15.6)
  16. Thursday 11/1 - Scheme: higher-order functions, lambda, let, equivalence predicates, sum-fun.scm, numderiv.scm   (Ch 10.1-3, 10.6)
  17. Tuesday 11/6 - Scheme: Symbolic differentiation, deriv.scm
  18. Thursday 11/8 - Intro to ML   (Ch 10.4-5, 8.1-4, 15.5)
  19. Tuesday 11/13 - ML: let expressions, lists, function definitions by cases, datatypes, sample.ml   (Ch 8.5, 9.1-2, 9.5, handout)
  20. Thursday 11/15 - ML: higher-order functions, Curried functions, map, filter, reduce   (Ch 9.5, 9.3)
  21. Tuesday 11/20 - Logic Programming, intro to Prolog, SWI Prolog, family.pl, family2.pl, Pete's puzzle, pete1.pl   (Ch 11.1-2)
  22. Tuesday 11/27 - Prolog: lists, list functions, tail recursion, binary search trees, fib.pl, bst.pl   (Ch 11.3-4)
  23. Thursday 11/29 - Prolog: rule order, goal order, execution model, unification
  24. Tuesday 12/4 - Prolog: control, cut, pete1a.pl, negation; searching with Prolog and Scheme, goat.pl, goat.scm   (Ch 11.5-6)
  25. Thursday 12/6 - Postscript, examples, Adobe's "Blue book", Tcl/Tk, examples, Course summary

Related Links