Previous Lecture Lecture 20

Lecture 20, Thu 12/07

Wrap up / Review

Recorded Lecture: 12_7_23

''' Final Exam Logistics
* The final exam will be in person (ILP 2302) Wed 12/13, 12pm - 2pm
* Bring a writing utensil and a photo ID
    * Please write legibly (if we can't read it, we won't grade it)
    * When leaving the room, you must present your ID and hand in your
    exam before leaving (it's your ticket out)
    * Closed Book: No notes / book / electronic devices)
* The final exam will be cummulative (emphasis on post-midterm material)
* Type of questions
    * True / False (If false, briefly explain why)
    * Short answer (describe, define, state, ...)
    * Given same code, write the output
    * Write code satisfying a specification (plan on short code examples
    (~5 - 10 lines))
    * Given some algorithm we covered, fill in the blank to make it work
    * Draw diagrams, write states of list, ...

Topics
* Python Basics
    * Types
        * int, float, boolean, strings, lists, sets, dictionaries,...
        * conversion functions (int(), float(), str(), ...)
        * Mutable vs. Immutable
            * Has an effect on parameters passed into functions
        * Relational / Logical operators (==, <, <=, >, >=, and, or, not, ..)
        * Python Lists
            * supporting methods (count, pop, ...)
        * Understanding under-the-hood fucntionality of dictionaries vs lists
        * List / string slicing [:]
        * Strings
            * supporting methods (replace, split, find, ...)
        * Function definitions
        * Control structures
            * if, else, elif, for, while
    * Testing
        * Test Driven Development (TDD)
        * pytest
    * Python Errors
        * Syntax vs Runtime
    * Exceptions
        * Exception types (NameError, TypeError, ZeroDivisionError, KeyError, ...)
        * Exception handling
            * try/except/raise
            * Flow of execution
            * Passing exceptions to function caller
            * Catching multiple exceptions
            * Catching inherited type exceptions
    * Object Oriented Programming
        * Defining Python classes and methods
        * Class constructors
            * Defining / initializing default parameters / attributes
        * Shallow vs Deep Equality
            * Overloading __eq__ method
        * Overloading operators
            * __str__, __add__, __le__, __ge__, __gt__, __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 (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-ntation for various data structures and code
        segments (including recursion)
    * Binary Search
        * Search for items in a SORTED list
        * Know implementation and O-notation
    * Recursion
        * Understand how recursive algorithms are managed by the call stack
        * Able to derive O-notation for various recursive functions
    * Linear Data Structures
        * Know implementations (as covered in 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-notation (best and worst-case scenarios)
        of various sorting algorithms
            * Bubble Sort (including optimized version), Selection sort, insertion
            sort, merge sort, and quick sort
    * Trees
        * Terminology
        * Know min-heap / max-heap data structure (and underlying list representation)
        * Binary Tree
            * Know the nodes and references implementation
            * Tree traversals: pre, in, post order traversals
        * Binary Search Trees
            * Know BST property and how insertion order affects structure
            * Know various BST methods (put, get, deletion)
'''