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)
'''