Previous Lecture Lecture 17 Next Lecture

Lecture 17, Wed 09/13

Wrap up / Review

Recorded Lecture: 9_13_23

'''
Final Exam Logistics
* Final Exam: in-person
    * Thursday 9/14 @ 9:30am - 10:50am
* Bring a writing utensil and studentID
* No books / notes / electronic devices
* Please write LEGIBLY (if we can't read it, we
won't grade it)
* Final Exam will be cummulative, but have a heavier
emphasis on post-midterm material
* Types of Questions
    * True / False, if False briefly state why
    * Short answers (briefly describe / state / define)
    * Given some specification, write code
    * Given some algorithm we covered, fill in the
    blank to make it work
    * Draw diagrams
    * ...
'''
''' Topics
* Python Basics
    * Types
        * int, float, boolean, strings, lists, sets,
        dictionaries, ...
        * conversion functions (int(), float(), str(), ...)
        * Mutable vs. Immutable
    * Relational / Logical operators (==, <, <=, >, >=, and, or, ...)
    * Python Lists
        * Supporting methods (count, pop, append, ...)
    * Under-the-hood functionality 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, ...)
    * Exception handling
        * try / except / raise
        * flow of execution
        * passing exceptions to function caller
        * Catching multiple exceptions
        * Catching inherited type exceptions
* Object Oriented Programming
    * Defining classes and methods
    * class constructors
        * Defining / initializing default parameters
    * shallow vs. deep equality
        * overloading __eq__ method
    * overloading operators
        * __str__, __add__, __le__, __lt__, ...
    * inheritance
        * know the implementation and behavior of inherited 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 methods
* Algorithm Analysis and O-notation
    * Know how to derive O-notation from a time function for various
    data structures and code segments
* 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, Queue, Deque, Linked Lists, ordered Linked Lists
* Sorting Algorithms
    * Know the implementation and O-notation analysis (best and
    worst-case scenarios)
    * Bubble Sort, Selection Sort, Insertion Sort, Merge Sort,
    Quick Sort
* Trees
    * Terminology
    * Min/Max heap data structure implementation (and underlying
    list representation)
    * Binary Trees
        * Nodes and References implementation
        * Tree traversals: pre, in, post order traversals
    * Binary Search Trees
        * Know the BST property
        * How insertion order affects the structure
        * Know various BST methods (put, get)
        * Conceptually understand BST deletion operation
'''