Topics

Topic Readings
Accepting languages
Alternative DFA representations hopcroft2 §2.2.2-2.2.5
Applications of regular expressions hopcroft2 §3.3
Backus-Naur form
Basics of Haskell Haskell doc ("Prelude"), Learn you a Haskell
Basics of Perl
C# and polymorphism
CFG derivations hopcroft2 §5.1.4-5.2.2
Case-based code generation
Church-Turing thesis
Code generation cont'd
Complexity and P hopcroft2 §10.0-10.1.2
Context-free grammars hopcroft2 §5.1-5.1.3
Contradiction proofs hopcroft2 §1.3.2-1.3.4
Decidability hopcroft2 §8.1
Finite automata hopcroft2 §2.1-2.2.1
Functions and relations
Grammars
Grammars for Scheme, C, Perl
Integer induction hopcroft2 §1.4.1
Interpreting vs compiling
Intro to C#
Intro to LaTeX Overleaf LaTeX tutorial
Intro to Racket Racket website, Racket documentation
Lambda calculus
Languages as sets of strings hopcroft2 §1.5
Languages as syntax
Lazy evaluation and currying in Haskell
Logic review
More Racket Racket modules (require, provide), Testing in Racket
More recursive functions
Nondeterministic finite-state automata hopcroft2 §2.3.1-2.3.2
Parse trees
Parsers hopcroft2 §5.3-5.3.1
Parsing to abstract syntax trees
Perl-compatible regular expressions
Proofs hopcroft2 §1.2
Racket first-class functions
Racket lists and recursive functions
Recurrence relations in analysis
Recursive definitions
Recursively enumerable languages
Regular expressions hopcroft2 §3.1
Regular expressions and FSAs hopcroft2 §2.5.1-2.5.2
Review Big-O notation
Review language translation pipeline
Sets review; set equivalence hopcroft2 §1.3.1
Static and dynamic type checking
Structural induction hopcroft2 §1.4.3-1.4.4
Syntax-driven semantics
The Master theorem Master theorem
The halting problem hopcroft2 §9.1-9.2
The pumping lemma hopcroft2 §4.1
Tokenising LISP-family languages
Turing machines hopcroft2 §8.2-8.2.3
Manufactoria (game)
Type inference in Haskell Haskell doc ("Prelude")
Verifiability, NP, and NP-completeness hopcroft2 §10.1.3-10.2.1