Overview

Welcome! This is the course webpage for the course CS 101: Introduction to Languages and the Theory of Computation.

What is computation? What problems can be solved through computation?
This course will seek to answer these questions. We will introduce and study increasingly powerful models of computation, including finite-state machines, push-down automata and Turing machines. We will develop the mathematical tools of formal languages and computability theory to characterize what problems can / can not be solved in these models. We will also explore connections to applications such as programming language and compiler design. Along the way there will be proof-writing and coding in Haskell.

The prerequisites for the class are CS 54 and CS 62. Send me, Prof. Zlatin, an email if you have questions about these requirements.

Resources

Professor Zlatin

The professor for this class is me, Professor Zlatin. I grew up in New Jersey and got my Ph.D. from Carnegie Mellon University in Pittsburgh, PA. I'm an avid rock-climber, movie-watcher, and puzzler. My research focuses on the mathematical foundations of algorithms and optimization, and I am very excited to facilitate your learning in this class! My office hours are Tuesdays 10:00-11:30am and Wednesdays 4:00-5:00pm in Edmunds 223, or by appointment. I am happy to talk about the class or any CS related topics that are on your mind.

In addition, we have four wonderful mentors this semester (no, these are not my clones, real photos incoming!):

The class mentors will hold weekly mentor sessions which take place on the 1st or 2nd floor of Edmunds at times TBD. Please make use of these! There may be occasional changes and cancellations; these will be posted on Slack.

We will mainly use Canvas for class resources, but assignments will be turned in on Gradescope. The course staff will also use Slack extensively for announcements and questions.

The primary textbook for the course is:

In addition, since you'll be writing code in Haskell, it's recommended that you have access to something such as the following:

You are encouraged to look for and to use other resources to aid in your learning. Some others that people have found useful are:

  • Lydia's videos on the Theory of Computation
  • Peter Drake's videos on Haskell (which were designed for use with Lipovača's book)
  • Ryan Dougherty's YouTube Channel, Easy Theory
  • If you need accommodations please contact the Disability Coordinator on your home campus. The process for Pomona students is available here.

    Logistics

    The basic flow each week will be as follows:

    The lectures will be in Edmunds 114.

    An important component of this course are your learning communities! In the first week of class, you will be assigned to a small group of four or five students who you will meet with weekly throughout the semester. Each group will have an associated TA who will attend your group meeting, answer questions, talk through concepts, etc. Each week there is a low-stakes group assignment to be turned in by 10pm Friday evening on Gradescope.

    There is a weekly problem set due Sundays at 10pm. The assignments will be submitted on Gradescope and generally be done in pairs. I will assign the pairs for the first few problem sets, then you can choose your own pair. You may discuss the problems with others in the class, or course staff but each pair must write up their own solutions independently. You must acknowledge who you worked with and what their contribution was. Submitting an answer found on the internet or generated by an AI-powered system such as ChatGPT is not allowed. A full discussion of the AI policy can be found here.

    Occasionally, there may be in-class quizzes consisting of questions heavily based on the recent problem set. Finally there are three written, in-class checkpoints .

    The breakdown of grades will be as follows:

    Calendar

    This is a high-level outline of the planned schedule. It may change.

    Unless stated otherwise, each week's work will have the following due dates:

    The textbook referred to below as "ACC" refers to the book "Automata, Computability, and Complexity" by Elaine Rich.

    Week Day Date Topic Reading Due
    1 M 8/31 (review) sets, logic, function, relations, proofs; Haskell datatypes ACC: Ap A intro survey due 10pm on 8/29
    W 9/2 basic definitions, languages, FSM ACC: Ch 5.1
    F 9/4 week01-group
    Su 9/6 week01-ps (coding)
    2 M 9/7 no class - Labor Day
    W 9/9 regular languages, constructing FSM, proving correctness ACC: Ch 5.1-3
    F 9/11 week02-group
    Su 9/13 week02-ps (written, coding)
    3 M 9/14 closure properties of regular languages, NDFSM ACC: Ch 5.4
    W 9/16 Myhill-Nerode, minimization ACC: Ch 5.7
    F 9/18 week03-group
    Su 9/20 week03-ps
    4 M 9/21 regular grammars, expressions (remote) ACC: Ch 6, 7
    W 9/23 non-regular languages and the pumping lemma (remote) ACC: Ch 8
    F 9/25 week04-group
    Su 9/27 week04-ps
    5 M 9/28 Haskell data types, modelling DFSM, lexers
    W 9/30 review
    F 10/2 week05-group
    6 M 10/5 checkpoint 1 in class
    W 10/7 pushdown automata ACC: Ch 12.1-3
    F 10/9 week06-group
    Su 10/11 week06-ps (written, coding)
    7 M 10/12 CFGs ACC: Ch 11.1-8
    W 10/14 CFGs, CFLs, PDAs; ambiguity and parse trees ACC: Ch 11.6-7, 12.3-6
    F 10/16 week07-group
    8 M 10/19 no class - Fall break
    W 10/21 closure for CFLs, algorithms for CFLs ACC: Ch 14
    F 10/23 week08-group
    Su 10/25 week08-ps
    9 M 10/26 non-CFLs, pumping lemma for CFLs ACC: Ch 13.1-4
    W 10/28 recap on regular and CF languages, lexers and parsers, LL(k) grammars parsing handout
    F 10/30 week09-group
    Su 11/1 week09-ps
    10 M 11/2 parsers: recognizing LL(1) grammars parsing handout
    W 11/4 parsing big picture, review
    F 11/6 week10-group
    11 M 11/9 checkpoint 2 in class
    W 11/11 Turing machines ACC: Ch 17.1-3
    F 11/13 week11-group
    Su 11/15 week11-ps (written, coding)
    12 M 11/16 Turing machines; D and SD
    W 11/18 Turing machines variations
    F 11/20 week12-group
    Su 11/22 week12-ps
    13 M 11/23 universal Turing machines, halting problem ACC: Ch 17.3, 17.6-7
    W 11/25 no class - Thanksgiving
    14 M 11/30 reductions; decidable, semi-decidable, undecidable ACC: Ch 17.6-7, 19
    W 12/2 more reductions: not decidable, not semi-decidable, Rice's theorem, Church-Turing ACC: Ch 19, 21
    F 12/4 week14-group
    Su 12/6 week14-ps
    15 M 12/7 course evaluations, review ACC: Ch 21.1-7, 18
    W 12/9 checkpoint 3 in class