most recent semester
Lectures
Note that pages might change, even just before or just after a lecture.
The lecture notes are intended as an aid,
but are no replacement for attending class.
-
language-affects-choice--arithmetic—Why study programming languages?
-
start-design-recipe.rkt
(and, the distance-section version)
- using cond (and, distance section)
- language-families—Families of languages
- language-vocab-and-concepts-slides.rkt
- lect09-struct-intro.rkt
and ../../2016summerIII-ibarland/Lectures/Book.java
(and,
distance section)
- lect10-struct-cont.rkt (structs, continued)
(and,
distance section for the week)
- lect11-union-of-structs.rkt (returning structs; union of structs)
- lect13-grammar-intro—intro grammars/BNF
- lect14-grammar-cont—grammars, cont.
- lect16-list-intro-before-lect.rkt, and
lect16-list-intro-sect01.rkt, and
lect16-list-intro-sect11.rkt, and
-
lect19-natnum-def-lol*.rkt
lect20-passing-functions-end.rkt
-
oct12-dist-part1.rkt (let vs let*),
oct12-dist-part2.rkt (natnums; bullseye),
oct12-dist-part3.rkt (passing functions)
-
lect22-my-map.rkt (and the distance version)
-
lect23-tail-recursion.rkt (and the distance version)
-
lect27-ancestor-tree.rkt
and
lect27-dist-ancestor-tree.rkt.
- Lect 27 finish-up: Union types in Java ("Composite Pattern"):
AncTree.java,
Unknown.java,
Child.java.
(See also the notes at the end of lect27-ancestor-tree.rkt.)
- lect29.rkt
(syntaxes for calling a Java function; advantages/disadvantages of immutable data)
- lect29-dist.rkt
(syntaxes for calling a Java function; advantages/disadvantages of immutable data)
-
../../2016summerIII-ibarland/Homeworks/Project/Q0.html: code overview
- lect34-prolog-basics1—prolog intro
and
lect34.P
- Continue lect34-prolog-basics1—prolog intro;
And: Q0 test-harness overview.
- lect36-law-of-racket.rkt
The semantics of racket.
- lect37-prolog-recursion1—prolog intro
- lect38-prolog-lists—lists in prolog
- Prolog, sorting and quicksort -- SKIPPED
- lect40-scope-objects—let over lambda (and source)
Helpful Links
-
Other resources on learning racket/scheme.
Please comment on the discussion boards, about how helpful you do (or don't) find these,
so that I can recommend them more/less highly to others.
-
a Racket Style Guide
(sections 4 and 5 are pertinent for learners).
-
Adding type-checking:
If you want (run-time) type-checking in your Racket programs,
see contract-examples.rkt.
-
Understanding quote and backquote.
Distance lectures
Note that the distance-section lectures can diverge from the in-class lectures,
based on questions people ask, etc..
These recordings are not a substitute for students in the in-class lectures.
However, they're posted, because why not?
-
dec-07 part3 (0h:40m)
brief overview of macros; wrap-up.
-
dec-07 part2 (0h:42m)
let-over-lambda (in context of refactoring a random-number-generator, to achieve pseudo-objects)
-
dec-07 part1 (0h:59m)
hw08 discussion
- (no transcript, sorry)
-
nov-30 part3 (0h:52m)
Prolog w/ lists: writing `append`.
(See lect38-dist-append3-prolog.rkt.)
-
nov-30 part2 (0h:48m)
Prolog cont; lists.
-
nov-30 part1 (1h:01m)
Review hw07-soln. Prolog recursion.
- (no transcript, sorry)
-
nov-16 part3 (0h:50m)
prolog intro
-
nov-16 part2 (0h:38m)
law-of-racket!
-
nov-16 part1 (0h:56m)
discuss Q0's test harness
- transcript for Nov.16; not readable by itself, but good for searching alongside the video.
-
nov-09 part3 (0h:33m)
recursive-descent parsing
-
nov-09 part2 (0h:42m)
Q0 representation in Java
-
nov-09 part1 (0h:58m)
Q0 representation in racket
- transcript for Nov.09; not readable by itself, but good for searching alongside the video.
-
nov-02 part3 (0h:39m)
fields vs methods: a false dichotomy;
ponder inventing our own syntax.
-
nov-02 part2 (0h:55m)
advantages and disadvantages of functional (immutable) -- memory usage;
How many syntaxes to write a function, in Java?
-
nov-02 part1 (0h:52m)
review hw, and reflect on how it all fit together.
- transcript for Nov.02; not readable by itself, but good for searching alongside the video.
-
oct-26 part3 (0h:47m)
AncTree.java
(union-types in Java -- classes AncTree/Child/Unknown).
-
oct-26 part2 (0h:57m)
functions on anc-tree -- size, change-name, all-names; entitle.
-
oct-26 part1 (0h:54m)
(quick re-cap, and:) anc-trees: data def'n.
- transcript for Oct.26; not readable by itself, but good for searching alongside the video.
-
oct-19 part3 (0h:42m)
define 'tail-recursive', having just walked throug the example.
-
oct-19 part2 (0h:59m)
calling my-map (using lambda); how the template gives non-tail-recursive answers
-
oct-19 part1 (0h:53m)
Writing my-map
- transcript for Oct.19; not readable by itself, but good for searching alongside the video.
-
oct-12 part3 (0h:45m)
-
oct-12 part2 (0h:41m)
-
oct-12 part1 (1h:02m)
- transcript for Oct.12; not readable by itself, but good for searching alongside the video.
-
oct-05 part3 (0h:35m):
more list practice; motivating local variables (my-max)
-
oct-05 part2 (1h:01m):
list-processing II (returning a list)
-
oct-05 part1 (1h:02m):
list-processing I
- transcript for Oct.05; not readable by itself, but good for searching alongside the video.
-
sep-28 part3 (0h:30m):
grammars, cont; parse-trees
-
sep-28 part2 (1h:08m):
grammar intro
-
sep-28 part1 (0h:24m):
discuss hw04 and object-design; begin grammars (recording-start delayed)
- transcript for Sep.28; not readable by itself, but good for searching alongside the video.
-
sep-21 part3 (0h:36m):
union-of-structs (delay, before recording resumed)
-
sep-21 part2 (0h:39m):
more struct-processing (recording got paused, and never resumed!)
-
sep-21 part1 (0h:42m):
define-struct (delay, before recording resumed)
- transcript for Sep.21; not readable by itself, but good for searching alongside the video.
-
sep-14 part3 (0h:38m):
finish vocab slides [some not recorded, oops!]; define-struct intro (racket v. java)
-
sep-14 part2 (0h:46m):
union data types cont.; some vocab slides
-
sep-14 part1 (1h:04m):
cond and handling union-types; the design recipe expanded
- transcript for Sep.14; not readable by itself, but good for searching alongside the video.
-
sep-07 part3 (0h:47m):
families of languages; quick intro to `cond` syntax
-
sep-07 part2 (0h:49m):
practice design recipe
-
sep-07 part1 (0h:57m):
review hw01-mini; intro Design Recipe
- transcript for Sep.07; not readable by itself, but good for searching alongside the video.
-
aug-31 part3 (0h:40m):
racket intro: types; calling functions; nesting expressions (top-down vs bottom-up)
-
aug-31 part2 (1h:02m):
continue: how language-choice influences how you choose to solve your problem: arrays vs lists vs hash-tables example.
-
aug-31 part1 (0h:49m):
intro; why study langs? How language-choice effects how you choose to solve your problem: example: arithmetic.
- transcript for Aug.31; not readable by itself, but good for searching alongside the video.
Much appreciated:
If you have any improved description or info, please send it to me
and I'll add it to this page.
E.g.:
-
“dec24 part2 has dropped audio from 0h:50m-0h:55m”
-
“dec24 part1 is mostly about parsing, not an intro-to-grammars.”
-
“dec24 part3 is really only 0h:50m long; there is just 20m of silence at the end.”
-
“sep15 dist-week03a:
for the first half, he says ‘card-rank’
when he really means ‘c-rank’ — possibly
confusing since card-rank is an accessor, not a type.”
You can also access recordings from a previous semester.
most recent semester