Course Notes, Practice Problems, and Solutions

Week 9:   Formal Languages/Automata Theory intro, Regular expressions
      Language intro, Regular Expressions
      Reg exprs are not always useful, problem given to me:
          Reg expr for language: Even number of a's, b's, c's
      Humorous cartoon: Saving the day with regular expressions
      When stuck writing a reg expr, drawing its finite state machine helps me:
          Languages, Finite Automata   (not responsible for)

Week 10:   Context-free grammars, Turing machines
      Languages, Context-free Grammars
      Compiler phases example and parse tree
      Video (me describing example 2 in the notes): Developing a grammar for declaration list
There is a small mistake on the video at the very end. For the non-terminal <type>, I show the rule:
      <type> --> <int> | <float> | <char> | <bool>
Showing <int>, <float>, <char>, <bool> as non-terminals is wrong. They are terminals, just the actual characters. It's correct in the notes; the rule should be:
      <type> --> int | float | char | bool


For week 10, focus on the grammars. I will go over Turing machines during lecture (you don't need to know them in detail - only what they are in general and what they are good for):
      Alan Turing, the man -- history and accomplishments   Summary
      UK apology to Turing
      Languages, Turing Machines     Turing Machine example
      What are Turing machines good for?

Supplementary material
      Video (University course: CSC 236):   Regular expression examples
      Video (University course: CSC 236):   Regular expression tips

      Video (Matthew Might):   Interesting way to look at context-free grammars

      Video (EngMicroLectures):   Turing machines

Practice Problems
      Regular Expression problems     .................. solutions
      Context-free Grammar practice problems ........... solutions