We will use a flipped-classroom model,
where we watch these videos before class-time,
and then use class-time for working through example problems.
The videos are screen-captures of lectures from a previous offering of the class.
opening notes in .rkt files:
Many of the lecture-notes links are .rkt files (not .html).
You should (a) download the file (say, via right-click or save-as),
(b) start DrRacket, and then (c) choose File » Open… them.
If you copy-paste into an empty DrRacket buffer, the language-preference won't
be set correctly, and the initial lines may be goofed up.
Here are the time-stamps for the 2015 videos below.
Video(originally aug-31 part1; 0h:49m)
intro; why study langs? How language-choice effects how you choose to solve your problem: example: arithmetic.
Video(originally aug-31 part2; 1h:02m)
continue: arithmetic and language-choice. Racket intro: types of values; signatures.
Video(originally aug-31 part3; 0h:40m)
go over syllabus;
note that Java encourages arrays over lists;
racket intro: practice calling functions; nesting expressions (top-down vs bottom-up)
transcript for 2015.Aug.31; not readable
by itself, but helpful for searching keywords within the video.
Self-practice problem: task-week01-blend.rkt(download, then open in DrRacket) Self-practice problems will be discussed
as a group during the next lecture, if people aren't asking other
questions.
They are not required to be worked out in advance,
but they are intended as a way for you to practice
(some of) the skills covered during the previous week's lecture.
transcript for Oct.26; not readable by
itself, but helpful for searching for keywords within the video.
Video
(nobody ever reported the bad link to me, except buried in the timestamps!)
(originally nov-02 part1; 0h:52m)
review hw, and reflect on how it all fit together.
midterm exam (available via D2L, Jul.05; due Jul.11).
It will cover material up through list-processing, but not ancestor-trees.
Here is a practice exam,
and solutions (don't look at solutions until you've actually
attempted doing the practice-exam!)
We'll discuss this during class, along w/ list-processing as used in hw06.
Video(originally nov-02 part2; 0h:55m)
advantages and disadvantages of functional (immutable) -- memory usage;
How many syntaxes to write a function, in Java?
Video(originally nov-02 part3; 0h:39m)
fields vs methods: a false dichotomy;
ponder inventing our own syntax.
transcript for Nov.02; not readable by
itself, but helpful for searching for keywords within the video.
Video(originally nov-09 part1; 0h:58m)
Q0 representation in racket
Video(originally nov-09 part2; 0h:42m)
Q0 representation in Java
Our in-class discussion for 2016-Jul-26:
part 1: review Q4 solution (0h56m);
part 2: prolog lists (1h12m, except the last ~10min is silence (kept recording after finish of class).
Video(originally dec-07 part2; 0h:42m)
let-over-lambda (in context of refactoring a random-number-generator, to achieve pseudo-objects)
Video(originally dec-07 part3; 0h:40m)
brief overview of macros; wrap-up.
(no transcript, sorry)
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.”
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.