CS 313 - Spring 2017

Programming Languages

Announcements

Final Exam: Self-scheduled (pick up at my office), Tue 5/16 noon - Sun 5/21 5pm (hand in by 5pm).
The exam is 3 hours, open book / notes. You may not use a computer or access material online during the exam.
Use the sign-up sheet on my office door to "check out" the exam when you are ready to take it. You must return it within 4 hours of checking it out. Slide it under my office door when you are finished.

Quiz 10 language popularity results.

Homework

  1. Homework 0, due Tuesday 2/14. Results.
  2. Homework 1, due Wednesday 2/22. Solutions. Grades. Stories.
  3. Homework 2, due Wednesday 3/1. Solutions.
  4. Homework 3, due Wednesday 3/8. Solutions. Grades.
  5. Homework 4, due Wednesday 3/15. Grades. March Madness.
  6. Homework 5, due Monday 3/20 and Friday 3/24. Solutions.
  7. Homework 6, due Wednesday 4/12. Solutions. Grades.
  8. Homework 7, due Wednesday 4/19. Solutions.
  9. Homework 8, due Wednesday 4/26. Solutions.
  10. Homework 9, due Friday 5/5. Solutions.
  11. Homework 10, due Monday 5/15.

Lectures & Readings

  1. 2/13 - Course info, introduction   (Ch 1)
  2. 2/15 - Syntax vs. semantics, context-free grammars, expression trees, pre-/in-/postfix   (Ch 2, BNF, #YOCO)
  3. 2/20 - Expression grammars, history of programming languages   (Ch 2.5, Ch 1, Slides: pptx / pdf)
  4. 2/22 - Pascal: basics, types, arrays, examples   (3.1-4, 4.1-4, 15.1, Pascal tutorial, Pascal vs. C)
  5. 2/24 - Pascal: types, records, pointers, examples   (Ch 4.1-4, 4.7)
  6. 2/27 - Pascal pointers, parameter passing, examples   (Ch 4.7, 5.1-2)
  7. 3/1  - Parameter passing   (Ch 5.2-3, worksheet)
  8. 3/3  - Scope; C functions, pointers, arrays, examples   (Ch 5.3-4, 4.8, 15.2)
  9. 3/6  - C structs, strings; activation records, examples   (Ch 5.5-7, figs 5.25, 5.26)
  10. 3/8  - Intro to OO programming and Smalltalk   (Ch 7-7.3, 7.7, 15.4, Squeak, by Example)
  11. 3/10 - More Smalltalk, blocks   (Ch 7.7, 15.4; A Little Smalltalk Ch 1-3, Squeak terse guide)
  12. 3/13 - Defining Smalltalk methods; lab   (Ch 7.7, 15.4; SbE 1, 3, 4, 5)
  13. 3/15 - Defining Smalltalk classes; examples   (Ch 7.7-8)
  14. 3/17 - Smalltalk classes cont'd, IntList; OO programming in Python, examples   (Ch 7.7-8)
  15. 3/20 - OO programming in Python, examples; intro to Ruby, irb log   (Ruby tutorials)
  16. 3/22 - Exam review, more Ruby, examples   (Programming Ruby)
  17. 3/24 - Writing classes in Ruby, examples   (Programming Ruby)
  18. 4/3  - Functional programming, intro to Scheme, scheme log   (Ch 10.1, 15.6, R5RS, mit-scheme, random tutorials)
  19. 4/5  - Scheme: lists, quoting, car, cdr, cons, scheme log 2   (Ch 10.2-3, 10.6, 15.6)
  20. 4/7  - Scheme: list functions, tail recursion, sample.scm, tail.scm, fib.scm   (Ch 10.1-3)
  21. 4/10 - Scheme: higher-order functions, lambda, higherorder.scm, numderiv.scm, scheme log 3   (Ch 10.1, 10.6)
  22. 4/12 - Let, symbolic differentiation, deriv.scm   (Ch 10.4-5)
  23. 4/14 - Scheme wrapup, scheme log 4, evaluation order, intro to ML, sml log 1   (Ch 8.4, 8.1-3, 15.5, ML Ch 2)
  24. 4/17 - ML: types, tuples, functions, lists, sml log 2   (Ch 8.5, 9.1-2, 9.5, ML Ch 3)
  25. 4/19 - ML: let expressions, function definitions by cases, datatypes, sml log 3, sample.ml   (Ch 9.5, 9.3)
  26. 4/24 - ML: Curried functions, odds and ends, higher-order functions, map, filter, reduce, sml log 4   (Ch 9.5, 9.3)
  27. 4/26 - Functional programming in Python, logic programming, intro to Prolog, family.pl, log   (Ch 11.1-2)
  28. 4/28 - Prolog: arithmetic, lists, Pete's puzzle, family2.pl, fact.pl, pete1.pl, swipl log   (Ch 11.2-3)
  29. 5/1  - Prolog: list functions, tail recursion, binary search trees, loop.pl, fib.pl, bst.pl, swipl log 2   (Ch 11.3-4)
  30. 5/3  - Prolog control, unification, rule and goal order   (Ch 11.2, 11.5)
  31. 5/6  - Prolog control, cut, negation, cut.pl, pete1a.pl   (Ch 11.5-6)
  32. 5/8  - Searching with Prolog and Scheme, goat.pl, goat.scm
  33. 5/10 - Postscript, examples, Adobe's "Blue book", online postscript interpreter
  34. 5/12 - Haskell (by Nosagie), examples, Learn you a Haskell
  35. 5/15 - Course summary, final exam review

Links