Previous Lecture | Lecture 20 |
Lecture 20, Thu 03/13
Wrap up / Review
Recorded Lecture: 3_13_25
Final Exam Logistics
* Final Exam next Wednesday 3/19 @ 12pm - 2pm in class
* Closed book, closed notes, no electronic devices
* Please write LEGIBLY (if we can't read it, we can't grade it)
* When leaving the room, you must present your Student ID
and hand in your exam before exiting (it's your ticket out!)
* 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
* Write code satisfying a certain specification
* Given some algorithm we covered (or some variation),
fill in the blank to make it work
* Draw a diagram, write the state of something, ...
* Multiple choice
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) using pytests
* Python Errors
* Syntax vs. Runtime
* Exceptions
* Exception Types (NameError, TypeError, ZeroDivisionError, KeyError, ...)
* Exception handling
* try / except / raise
* Flow of execution
* Passing exceptions back to the function caller
* Catching multiple exception types
* 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__, __ge__, __gt__, __lt__, ...
* Inheritance
* Know the implementation and inheritance behvior 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-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
* Able to write recursive solutions
* 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 implementation and O-notation analysis (best and worst-case
scenarios) of various sorting algorithms
* Bubble (optimized version), Selection, Insertion, Merge, Quick sort
* Trees
* Terminology
* Know min-heap / max-heap data structure (and underlying list
representation)
* Binary Trees
* Know the nodes and references implementation
* Tree traversals: pre, in, post order traversals
* Binary Search Tree (BST)
* Know BST property and how insertion order affects structure
* Know various BST methods (put, get, deletion)
* Know the behavior / implementation / performance