Previous Lecture Lecture 19

Lecture 19, Thu 12/04

Wrap up / Review

Recorded Lecture: 12_4_25

Final Exam Logistics
* Final Exam next Wednesday 12/10, in class 12pm - 2pm
* Please write LEGIBLY
* When leaving the room, you must present your Student ID and hand
in your exam before leaving (it's your ticket out)
* Types of Questions
    * True / False (if False, explain why)
    * Short answer
        * Briefly describe / define / state / ...
    * Given some code, write the output
    * Write the code satisfying a certain specification
    * Given some algorithm we covered, fill in the blank to make it
    work
    * Draw a diagram / ...
    * Multiple choice

Topics
* Python Basics
    * Types
        * int, float, bool, strings, lists, sets, dictionaries, ...
        * coversion functions (int(), float(), str(), ...)
        * Mutable vs. Immutable
    * Relational / Logical Operators (==, <, <=, >=, and, or, ...)
    * Python Lists
        * (cout, pop, append, ...)
    * Dictionaries and lists (under-the-hood workings)
    * Strings
        * Supporting methods (replace, split, find, ...)
    * Function definitions
    * Control structures
        * if, else, elif, for, while
* Testing
    * TDD
    * pytest
* Python Errors
    * Syntax vs. Runtime
* Exceptions
    * Exception types (NameError, TypeError, ZeroDivisionError, ...)
    * Exception handling
    * try / except / raise
    * Flow of execution
    * Passing exceptions to function caller
    * Catching multiple exception types
    * Catching inherited type exceptions
* Object Oriented Programming
    * Define Python Classes and methods
    * Class constructors
        * Defining / initializing default parameters
    * Shallow vs. Deep Equality
        * Overload __eq__ method
    * Overload operators
        * __str__, __add__, __le__, __lt__, ...
    * Inheritance
        * Know the implementation and inheritance behavior of fields /
        methods and how to override inherited methods
        * Know the pattern on how to construct inherited classes
        * Know the hierarchy of types (and how this affects exception
        handling)
        * Know how to explicitly call super / base class(es) methods
* Algorithm Analysis and O-notation
    * Know how to derive the O-notation from a Time function for
    various data structures and code segments
* Binary Search
    * Search for items in a SORTED list
    * Knowing the implementation and O-notation
* Recursion
    * Understand how recursive algorithms are managed by the call stack
    * Able to derive O-notation for variour recursive functions
* Linear Data Structures
    * Know implementations (as covered in the textbook/lecture) and
    O-notation for various functionality of data structures
        * Stacks, Queues, Deques, Linked Lists, Ordered Linked Lists
* Sorting Algorithms
    * Know the implementation and O-ntation (best and worst cases) of
    various sorting algorithms
        * Bubble Sort (including optimized version), Selection Sort,
        Insertion Sort, Merge Sort, and Quick Sort
* Tree Algorithms
    * Terminology
    * Know min-heap / max-heap data structures (and underlying list and
    conceptual binary complete tree)
    * Binary Trees
        * Know the nodes and references implementation
        * Tree traversals: pre, in, and post order
    * Binary SEARCH Trees (BST)
        * Know BST property and how insertion order affects the
        structure
        * Know various BST methods (put, get, deletion)
            * Note: The code for deletion wasn't covered in this quarter
            but put and get were covered