CSCI 301 - Final Exam Study Guide

Exam Details

Resources

Course Outcomes

Here are the course-level outcomes. 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

(Midterm Exam Cutoff Here)

Relations 1
Relations 2
Functions
21 - Theory Intro
22 - Languages and DFAs
23 - DFAs and Regular Languages
24 - NFAs
25 - NFA to DFA, Regular Closure
26 - Regular Expressions
27 - Context-Free Grammars 1
28 - Context-Free Grammars 2
29 - Parsing 1
30 - Parsing 2
31 - Pushdown Automata
32 - The Regular Pumping Lemma
33 - Chomsky Normal Form and PDA/CFG Equivalence
34 - Turing Machines
35 - Computability