Lecture Notes for Intro to CS, updates
- 19 Apr 2021; added sections
about for-loops
and
about while-loops
in the chapter about Sequencing in OCaml in Week 12
as well as a chapter about the notion of variables
in Week 14
- 17 Apr 2021: added material for Week 14, just because
- 16 Apr 2021: extended the postlude about Platonism with nat_fold_left
in the chapter about Generic programming with lists in Week 09
- 16 Apr 2021: added the Optional mini-project about a simple variant of the knapsack problem
- 16 Apr 2021: expanded the sections about Call by value,
Call by name, and Call by need
with a paragraph about inlining functions
in the chapter about Evaluation order in Week 11
- 14 Apr 2021: made the naming convention uniform for stream functions
- 11 Apr 2021: adjusted the type of the indexing function in the question about Indexing streams
as well as the optional questions
in the Mini-project about indexing data structures
- 03 Apr 2021: added the Term project
- 03 Apr 2021: added the material for Week 12 and Week 13
- 03 Apr 2021: added the material for Week 11
- 31 Mar 2021: gave a consistent name for the fold function associated to binary trees
in the chapter about Generic programming with binary trees in Week 10
- 31 Mar 2021: added the Interlude about comparing lists
in the chapter about Concrete data types in Week 10
as well as two helpful exercises in the chapter about The polymorphic option type,
also in Week 10
- 30 Mar 2021: added a revisitation of the powerset example
in the chapter about The Art of Computer Science in Week 09
- 29 Mar 2021: added a chapter about The proof is trivial (revisited) in Week 10
- 29 Mar 2021: added a section about Grammatical correctness as type correctness
in the chapter about Concrete data types in Week 10
- 28 Mar 2021: completed the section about mutually recursive types
in the chapter about Concrete data types in Week 10
- 27 Mar 2021: added the material for Week 10
- 24 Mar 2021: added a Hint about Exercise 6 in Week 08
- 21 Mar 2021: finalized the exercises for Week 08 and Week 09
- 20 Mar 2021: added a section about Digital signatures
in the chapter about The events leading to the term project
- 20 Mar 2021: added the material for Week 09
- 18 Mar 2021: added mechanical solutions for two exercises
in the chapter about On simplifying OCaml expressions in Week 07
- 14 Mar 2021: added the material for Week 08
- 11 Mar 2021: added an aftermath, removed the Stringy module, and added an updated String module
in the chapter about Strings in Week 05,
as well as a limited simulation of String.mapi in terms of String.map
- 08 Mar 2021: added solutions for the exercises
in the chapter about On simplifying OCaml expressions in Week 07
- 08 Mar 2021: added more exercises
in the chapter about From complete unit tests to implementation in Week 07
- 07 Mar 2021: added the material for Week 07
- 02 Mar 2021: unified the description of how OCaml expressions are evaluated
in the chapter about Where do we go from here? in Week 05
- 28 Feb 2021: adjusted the definition of a_function in the resource file of the Mini-project: The underlying determinism of OCaml
- 23 Feb 2021: added a chapter about The case of the Fibonacci numbers in Week 06
- 22 Feb 2021: completed the pastiche of Six Strings Down
- 21 Feb 2021: reordered a few questions in the Midterm project
- 21 Feb 2021: added the Midterm project
- 21 Feb 2021: added an initial chapter about The events leading to the term project
- 20 Feb 2021: added the material for Week 06 and the skeleton of the midterm project
- 16 Feb 2021: created the interlude about strings within strings
in the chapter about Unparsing values and formatting strings in Week 05
- 16 Feb 2021: fleshed out the narrative for OCaml’s syntactic constructs
in the chapter about OCaml: a language of algebraic expressions, with names and functions in Week 03,
in the chapter about OCaml: a language with lexical scope and stuff in Week 04, and
in the chapter about Induction and recursion over natural numbers in Week 05
- 16 Feb 2021: expanded the index with complete testing and incomplete testing
- 16 Feb 2021: added an exercise and expanded the
Interlude
to cover the mild extension of formals, including _
in the chapter about OCaml: a language with lexical scope and stuff in Week 04
- 15 Feb 2021: added a chapter about Where do we go from here? in Week 05
- 15 Feb 2021: elaborated the narrative to explain how each syntactic construct is evaluated
in the chapter about OCaml: a language of algebraic expressions, with names and functions in Week 03
and in the chapter about OCaml: a language with lexical scope and stuff in Week 04
- 13 Feb 2021: added the material for Week 05
- 10 Feb 2021: clarified the status of infix operations, the associated operators, and the way they associate,
and defined boolean conjunction and disjunction
in the chapter about OCaml: a language of algebraic expressions, with names and functions in Week 03
- 07 Feb 2021: added
5 exercises in the chapter about On test coverage,
1 exercise in the chapter Unit tests, revisited,
and 1 exercise and its solution in the chapter Exercises for Week 04 in Week 04
- 06 Feb 2021: added the material for Week 04
- 04 Feb 2021: Beefed up Exercise 8
in the chapter about OCaml: a language of algebraic expressions, with names and functions in Week 03
- 02 Feb 2021: added a postlude
in the chapter Towards OCaml in Week 03
- 02 Feb 2021: added a diagram and some bits about functional equality and program equivalence
in the chapter Towards OCaml in Week 03
- 02 Feb 2021: added two examples that immediately illustrate the FUN and APP typing rules
in the chapter about OCaml: a language of algebraic expressions, with names and functions in Week 03
- 02 Feb 2021: elaborated on the definition of use of type environments
in the chapter about OCaml: a language of algebraic expressions, with names and functions in Week 03
- 31 Jan 2021: added a postlude
in the chapter about Finite description of arbitrarily large data in Week 02
- 31 Jan 2021: elaborated the introduction of the section about Code coverage in Week 03
- 30 Jan 2021: added the material for Week 03
- 30 Jan 2021: added a playful exercise about Pinocchio
in the recapitulating chapter Where are we and where do we go from here? in Week 01
- 30 Jan 2021: wordsmithed the opening of the chapter about Background and general introduction in Week 01
- 29 Jan 2021: added a concrete example
in the chapter about Kleene’s S-m-n theorem in Week 02
- 29 Jan 2021: added the recipe for water pudding
in the chapter about Computational paradigms in Week 02
- 28 Jan 2021: added
the meaning of a program in the section about Programs and the function they compute,
the cookbook example in the section about Kleene’s S-m-n function,
the section about I-diagrams, revisited,
the section about Program equivalence,
and
the food for thought about a diagrammatical rendition of PE
in the chapter about Kleene’s S-m-n theorem in Week 02
- 24 Jan 2021: re-hauled the narrative
in the chapter about Kleene’s S-m-n theorem in Week 02
- 24 Jan 2021: adjusted the presentation
in the chapter about Kleene’s S-m-n theorem in Week 02
- 24 Jan 2021: fine-tuned a grammar
in the chapter about Finite description of arbitrarily large data in Week 02
- 23 Jan 2021: added the material for Week 02
- 22 Jan 2021: elaborated a bit more about virtual machines
at the end of the section about I-diagrams
in the chapter about Languages and language processors in Week 01
- 22 Jan 2021: added a section about Compile time, run time, and efficiency
as well as Exercise 22
in the chapter about Bootstrapping in Week 01
- 22 Jan 2021: added the mention of H. L. Mencken in the section about compile time and run time
(Some vocabulary), in the chapter about Languages and language processors in Week 01
- 22 Jan 2021: elaborated some more about towers of interpreters
in the chapter about Languages and language processors in Week 01
- 17 Jan 2021: added the material for Week 01