CS60
Final Concept Review
There may be a couple of things I've left out,
but these seem to be the key points covered in this offering of the course.
General concepts:
- What is a partial function? A function?
What do we mean by the "partial
function" computed by a program?
- Relations, directed and undirected graphs
- What is meant by "state"? by
"transition"?
Techniques:
- Information structures: lists, trees,
trees as lists, lists as trees, graphs
- Use of higher-order functions and predicates, anonymous
functions
- Use of recursion
- Number representations and encodings,
conversion from one to another
- List manipulation in rex and Java
- Difference between [A, B] and [A | B]
(list, cons) and append(A, B)
- S expressions, R expressions
- Stacks, queues
- Arrays, linear addressing principle
- Grammars, parsing
- Object-oriented programming
- Constructors
- Inheritance
- Over-riding methods
- Use of references
- Static methods
- Proposition logic
- Truth table, hypercube, and map
representations of functions
- Expressing one function in terms of others
- Sum-of-products form
- Simplifying combinational logic
expressions
- Determining whether an expression is a
tautology
- Boole/Shannon expansion
- Minterm expansion
- Karnaugh maps
- Don't cares
- Predicate Logic
- Meaning
of quantifiers
- Simple logic programming in Prolog
- Specifying a program
- Ascertain program correctness
- Loop invariants
- Energy function for proving termination
- Complexity
- "O"
notation for run-time bounds
- Simple algorithm analysis (deriving the
run-time for a program)
- Sorting programs
- Bucket sort
- Radix sort
- Quicksort
- Heap sort
- Merge sort
- Empirical analysis
- Finite-State Machines
- Regular expressions
- Languages which aren't finite-state
- Synthesizing a finite-state machine
from combinational logic and flip-flops or registers
- Interconnecting finite-state machines,
e.g. parallel connection
- Computer structure
- Register-transfer level
- Interpretation of machine instructions
- Implementation of arrays