CS 313  Spring 2017
Programming Languages
Announcements

Final Exam:
Selfscheduled (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 signup 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
 Homework 0, due Tuesday 2/14.
Results.
 Homework 1, due Wednesday 2/22.
Solutions.
Grades.
Stories.
 Homework 2, due Wednesday 3/1.
Solutions.
 Homework 3, due Wednesday 3/8.
Solutions.
Grades.
 Homework 4, due Wednesday 3/15.
Grades.
March Madness.
 Homework 5, due Monday 3/20 and Friday 3/24.
Solutions.
 Homework 6, due Wednesday 4/12.
Solutions.
Grades.
 Homework 7, due Wednesday 4/19.
Solutions.
 Homework 8, due Wednesday 4/26.
Solutions.
 Homework 9, due Friday 5/5.
Solutions.
 Homework 10, due Monday 5/15.
Lectures & Readings
 2/13  Course info, introduction (Ch 1)
 2/15  Syntax vs. semantics, contextfree grammars,
expression trees, pre/in/postfix (Ch 2,
BNF,
#YOCO)
 2/20  Expression grammars,
history of programming languages (Ch 2.5, Ch 1, Slides:
pptx /
pdf)
 2/22  Pascal: basics, types, arrays, examples
(3.14, 4.14, 15.1,
Pascal tutorial,
Pascal vs. C)
 2/24  Pascal: types, records, pointers,
examples (Ch 4.14, 4.7)
 2/27  Pascal pointers, parameter passing, examples
(Ch 4.7, 5.12)
 3/1  Parameter passing (Ch 5.23,
worksheet)
 3/3  Scope; C functions, pointers, arrays, examples
(Ch 5.34, 4.8, 15.2)
 3/6  C structs, strings; activation records, examples
(Ch 5.57, figs 5.25, 5.26)
 3/8  Intro to OO
programming and Smalltalk (Ch 77.3, 7.7, 15.4,
Squeak,
by Example)
 3/10  More Smalltalk, blocks (Ch 7.7, 15.4;
A Little Smalltalk Ch 13,
Squeak terse guide)
 3/13  Defining Smalltalk methods; lab (Ch 7.7, 15.4;
SbE 1, 3, 4, 5)
 3/15  Defining Smalltalk classes; examples
(Ch 7.78)
 3/17  Smalltalk classes cont'd, IntList;
OO programming in Python, examples
(Ch 7.78)
 3/20  OO programming in Python, examples; intro to Ruby,
irb log
(Ruby tutorials)
 3/22  Exam review, more Ruby, examples
(Programming Ruby)
 3/24  Writing classes in Ruby, examples
(Programming Ruby)
 4/3  Functional programming, intro to Scheme,
scheme log (Ch 10.1, 15.6,
R5RS,
mitscheme,
random tutorials)
 4/5  Scheme: lists, quoting, car, cdr, cons,
scheme log 2 (Ch 10.23, 10.6, 15.6)
 4/7  Scheme: list functions, tail recursion,
sample.scm,
tail.scm,
fib.scm
(Ch 10.13)
 4/10  Scheme: higherorder functions, lambda,
higherorder.scm,
numderiv.scm,
scheme log 3
(Ch 10.1, 10.6)
 4/12  Let, symbolic differentiation,
deriv.scm
(Ch 10.45)
 4/14  Scheme wrapup,
scheme log 4,
evaluation order, intro to ML,
sml log 1
(Ch 8.4, 8.13, 15.5, ML Ch 2)
 4/17  ML: types, tuples, functions, lists,
sml log 2
(Ch 8.5, 9.12, 9.5, ML Ch 3)
 4/19  ML: let expressions, function definitions by cases, datatypes,
sml log 3, sample.ml
(Ch 9.5, 9.3)
 4/24  ML: Curried functions, odds and ends, higherorder functions, map, filter, reduce,
sml log 4
(Ch 9.5, 9.3)
 4/26 
Functional programming in Python,
logic programming, intro to Prolog,
family.pl,
log
(Ch 11.12)
 4/28  Prolog: arithmetic, lists, Pete's puzzle,
family2.pl,
fact.pl,
pete1.pl,
swipl log
(Ch 11.23)
 5/1  Prolog: list functions, tail recursion, binary search trees,
loop.pl,
fib.pl,
bst.pl,
swipl log 2
(Ch 11.34)
 5/3  Prolog control, unification, rule and goal order
(Ch 11.2, 11.5)
 5/6  Prolog control, cut, negation,
cut.pl,
pete1a.pl
(Ch 11.56)
 5/8  Searching with Prolog and Scheme,
goat.pl,
goat.scm
 5/10 
Postscript,
examples,
Adobe's "Blue book",
online postscript interpreter
 5/12  Haskell (by Nosagie),
examples,
Learn you a Haskell
 5/15  Course summary, final exam review
Links