Previous Lecture | Lecture 20 |
Lecture 20, Thu 12/01
Wrap up / Review
Recorded Lecture: 12_1_22
''' Final Exam Logistics
* Final Exam in-person, Thursday 12/8 @ 8am - 10am, BUCHN 1910
* 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
* Types of questions
* True / False (if False, explain why)
* Short Answers
* Briefly describe / define / state / ...
* Given some code, write the output, state the O-notation, ...
* Write code satisfying a certain specification
* Given some algorithm we covered, fill in the blank to make
it work.
* Draw diagrams, write next iteration of, ...
'''
''' Topics
Python Basics
* Types
* int, float, boolean, strings, lists, sets, dict,...
* conversion functions (int(), float(), str())
* Mutable vs. Immutable
* Relational / Logical operators (==, <, <=, and, or, ...)
* Python Lists
Supporting methods (count, pop, ...)
* Understanding under-the-hood functionality of lists and
dictionaries
* List / String slicing [:]
* Strings
* Supporting methods (replace, split, find, ...)
* Function definitions
* Control structures
* If, else, elif, for, while, ...
Testing
* Test Driven Development (TDD)
* pytests
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 Python classes and methods
* class constructors
* Defining / initializing default parameters
* Shallow vs. Deep Equality
* overloading __eq__ method
* overloading operators
* __str__, __add__, __le__, ...
* 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 (applies to exception
handling)
* Know how to explicitly call super / base class(es)
methods
Algorithm Analysis and O-notation
* Know how to derive O-notation from a Time function for
various data structure functionality and code segments
Binary Search
* Search for items in a SORTED list
* Know the implementation and O-notation
Recursion
* Understand how recursive algorithms are managed by the
call stack
* Derive O-notation for various recursive functions
* Linear Data Structures
* Know implementations (as covered in textbook / lecture)
and O-notation for various functionality
* Stacks, Queues, Deques, Linked Lists, Ordered Linked
Lists
* Sorting Algorithms
* Know the implementation and O-notation analysis (best /
worst case scenarios) of various sorting algorithms
* Bubble Sort (including optimized version), Selection
Sort, Insertion Sort, Merge Sort, Quick Sort
* Trees
* Terminology
* O-notation
* Know the min-heap / max-heap data structure implementation
(and underlying list representation)
* Binary Trees
* Know the nodes and references implementation
* Tree traversals: pre, in, post order
* Binary Search Trees
* BST property and how insertion affects the structure
* add, search, and remove functionality
'''