CSCI 301 - Final Exam Study Guide

Exam Details

Resources

Course Outcomes

Here are the course-level outcomes, lightly annotated with some specifics. I will refer to these when writing the exam.

  1. Thorough understanding of the mathematical definitions of concepts important to computer science, including sets, tuples, lists, strings, formal languages, functions and relations.
  2. The ability to prove basic theorems involving these mathematical concepts including proofs by contradiction and inductive proof
  3. The ability to employ effectively the functional programming style in a functional programming language
  4. Solid understanding of the Chomsky hierarchy, including regular and context free languages, and their corresponding accepting machines and describing grammars
  5. Basic understanding of Turing machines and computability
  6. Basic understanding of important algorithms, including conversion of finite automata to different forms, conversion of grammars to machines
  7. Basic understanding of LL(k) and LR(K) grammars and the parsing techniques used for LL(1) grammars

Per-Lecture Outcomes

Here are the per-lecture outcomes (Goals). I will refer to these when writing the exam.

Sets 0
Racket 0
Sets 1
Racket 1
Racket 2
Sets 2
Logic 1
Logic 2
Logic 3
Logic 4
Direct Proof
Contrapositive Proof
Proof By Contradiction
Proving Non-Conditional Statements
Proof by Induction
Relations 1
Relations 2
Functions

(Midterm Exam Cutoff Here)

Theory Intro
Languages and DFAs
DFAs and Regular Languages
NFAs
NFA to DFA, Regular Closure
Regular Expressions
Context-Free Grammars 1
Context-Free Grammars 2
Parsing 1
Parsing 2
Pushdown Automata
The Regular Pumping Lemma
Chomsky Normal Form and PDA/CFG Equivalence
34 - Turing Machines
Computability