Previous Lecture Lecture 18

Lecture 18, Thu 12/05

Final Review

Logistics:
- Bring studentID and writing utensil
    - ink or dark led
- Please write LEGIBLY
- No electronic devices
- No book, no notes
- Tuesday 12/10 @ 4 - 6pm (CHEM 1171)

Format:
- Similar to midterms, but designed to take two hours
(~ twice as long as the midterm)
    - short answer
    - Briefly decribe / define / state ...
    - Write code
    - Fill in the blank / complete the table / ...
    - T / F, if False explain why
    - Given code, what is the output

topics
- Will cover everything from the start of the quarter
up to today (12/5)
- Covers lecture, labs, homework, and reading
    - use lecture notes as breadth of topics, and all
    other course material (lecture, hw, labs, etc.)
    as depth
- Makefiles
- STL (vector, map, unordered_map, string, iostream, ...)
    - Know the libraries and methods discussed in
    lecture.
- Class design
    - Abstract Data Types
    - Build Process
    - Big Three (copy constructor, destructor, assignment
    operator)
    - Scope Resolution Operator (::)
    - Template
- Structs and Classes
    - Differences
    - Memory storage (hex notation / padding)
    - Syntax
- Memory padding
- Namepsaces
    - Naming collisions (and how to avoid them)
    - Global namesspace
- Quadratic Sorting
    - Bubble/selection/insertion Sort
    - Optimizations
    - Running Times
- Hash Tables
    - Performance and Functionality
    - Open-address, double-hashing, chained-hashing
    - STL implementation (unordered_map)
        - Also know std::map and implementation
- Mergesort / Quicksort
    - Know the algorithm / running times / pros / cons
- Inheritance
    - Concepts and behavior
    - memory allocation of base / sub class Types
    - Class hierarchies and Types
- Polymorphism
    - Understand concepts and behavior in various
    scenarios
    - virtual vs. non-virtual
    - Abstract classes and pure virtual functions
    - Virtual Destructors
- Exceptions
    - Try / catch /throw mechanisms and flow control
    - Inherited types and how catches work with various
    types
- Function Pointers
    - Syntax of function Pointers
        - How to declare, assign, and call functions
        via function Pointers
    - Using function pointers with threads
    - Write code utilizing function pointers
- Testing
    - Understand main ideas and terminology
    - tddFuncs way of testing
- OS Concepts
    - Role of the OS
    - kernel
    - Relationship to software and hardware
    - Processes
    - threads
    - Basic Unix commands
        - Know the commands covered in lecture
    - foreground vs. background Processes
        - How they relate to the terminal Processes
    - Fork / Exc
- Heaps
    - MinHeap and MaxHeap
    - Conceptual tree structure
    - implementation
    - Array representation and indices between children
    and parent
    - Performance / Runtime analysis
- threads  
    - Concurrency
    - .detach vs. .join (what they do)
    - Race conditions
    - Atomic operations
    - In general the <thread> library syntax for creating /
    running threads