Module 1 involved a high-level discussion of what computing really means, as well as a review of proof techniques, cardinality, and other related topics. This list is NOT EXHAUSTIVE and there may be questions on the quiz that do not cleanly fall into any of the categories below. Students should be able to do the following on an assessment:
Any problem from any of the homework assignments on this module, including new problems that are similar but have slight variations.
Discuss Input/Output of computers as Strings using formal notation and interpretation simple descriptions of alpabets and sets of strings. Example questions:
Understand and describe the properties of functions:
Create bijections between two sets to show they have equal cardinality.
Understand and perform a proof by diagonalization to show that a set is uncountably infinite.
Module 2 involved the introduction of the DFA and NFA machines, including the class of languages they recognize (regular languages). We always introduced the regular expressions, a different way of describing the same class of languages. This list is NOT EXHAUSTIVE and there may be questions on the quiz that do not cleanly fall into any of the categories below. Students should be able to do the following on an assessment:
Any problem from any of the homework assignments on this module, including new problems that are similar but have slight variations.
Understand and describe the difference between a function and a language. Describe how these are effectively the same but are presented in a different manner. Convert function descriptions into equivalent languages descriptions:
Show an understanding of Deterministic Finite Automata, how they work / operate. Be able to:
Show an understanding of the formal description / notation for a DFA. Write out the description of a DFA using formal notation instead of a picture (graph notation).
Show an understanding of the formal definition of a valid computation on a DFA.
Do all of the above, but for an NFA
Show a proof of closure for regular languages under union, concatenation, and star.
Read and write regular expressions as defined in this module. Answer any of the previous types of questions using regular expressions.
Explain the proof that regular expressions are equivalent to DFA/NFA.
Answer questions about the validity of the pumping lemma
Module 3 was a shorter module that discussed context-free grammars, push-down automata, and the pumping lemma for CFGs. This list is NOT EXHAUSTIVE and there may be questions on the quiz that do not cleanly fall into any of the categories below. Students should be able to do the following on an assessment:
Module 4 introduced the Turing Machine and the notion of decidability. We also discussed reductions, and some computational classes (TM non-recognizable, etc.) This list is NOT EXHAUSTIVE and there may be questions on the quiz that do not cleanly fall into any of the categories below. Students should be able to do the following on an assessment:
Interpret a Turing Machine that is described or drawn in detail. What strings does it accept? What strings does it not accept, etc.
Write a TM (in high level prose) that recognizes a given language
Describe non-deterministic turing machines accurately that solve problems using non-determinism.
Discuss the difference between decidability and recognizability.
Discuss the definition of complement, and why the complement language can sometimes be harder to recognize than the language itself.
Prove problems are undecidable through reduction.
Module 5 took a closer look at different complexity classes within the decidable functions. We started to look at time complexity as you have seen it in past courses, and break down major complexity classes that are important to understand as they seem to be on the edge of our current computing capabilities. This list is NOT EXHAUSTIVE and there may be questions on the quiz that do not cleanly fall into any of the categories below. Students should be able to do the following on an assessment:
State the definition, in multiple ways if applicable, of the sets P, NP, NP-Hard, NP-Complete. These definitions should be in relation to Turing Machines and how Turing Machines solve problems.
Understand the differences between function, decision, and verification problems. Understand how solutions to one of these helps (or does not help) in solving the others.
Understand the relationship between DTMs and NTMs and how they can or cannot solve problems in the different categories above in different amounts of time. Proofs of interest include:
Understand and be able to explain the Cook-Levin Theorem and its proof of correctness.
Be able to identify problems that are NP-Complete are prove they are NP-Complete: