Previous Lecture | Lecture 20 |
Lecture 20, Thu 06/02
Wrap up / Review
Recorded Lecture: 6_2_22
- Link to previous F21 in-person Final: F21 Sample Final
- Note: use this as a supplemental study guide. A remote final will contain different types of questions, and the difficulty may vary.
'''
Reminders:
* h08 is due tomorrow 6/3 @ 11:59pm
* Lab09 due Sunday 6/5 @ 11:59pm
* Quiz5 on Gradescope tomorrow 6/3
* Final Exam (remote on Gradescope), Thursday 6/9 @ 8 - 10am
* Course Evals are open
'''
# CS 9 Review
''' Logistics
* The final exam will be on Gradescope Thursday 6/9 @ 8 - 10AM PST
* The final exam with be cummulative
* It will look similar to Quizzes / homeworks in terms of questions asked,
but will be longer in length
* True / False
* Short answers
* Briefly describe / define / state / ...
* Write code satisfying a certain specification
* Write solutions (autograded)
* We will be monitoring Piazza during the final exam time.
* For CLARIFYING questions, you may post a PRIVATE question to instructors
* If there needs to be a change/modification in any question, then we will
publicly post this on Piazza.
'''
''' Topics
* Python Basics
* Types
* int, float, boolean, strings, lists, sets, dictionaries,...
* conversion functions (int(), float(), str(), ...)
* Mutable vs. immutable
* Relational / Logical operators (==, <, <=, >=, >, and, or, not, ...)
* Python Lists
* Supporting methods (count, pop, ...)
* Understanding under-the-hood functionality of dictionaries vs. lists
* List / String slicing [ : ]
* Strings
* Suporting 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 the 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
* Overlading operators
* __str__, __add__, __le__, __ge__, __lt__, ...
* Inheritance
* Know the implementation and behavior of fields / methods and how to override
inherted 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 for various data structures and code segments
* Binary Search
* Search for items in a SORTES list
* Know implementatio 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 / lectues) as well as possible
variations
* Stacks, Queues, Deques, Linked Lists, and Ordered Linked Lists
* Sorting Algorithms
* Know the implementation and O-notation analysis (best and worst case scenarios)
of various sorting algorithms
* Bubble Sort (optimized version), Selection Sort, Insertion Sort, Merge Sort,
Quick Sort
* Trees
* Terminology
* Know min-heap / max-heap data structure implementation (and underlying list
representation)
* BinaryTrees
* Know the nodes and references implementation
* Tree traversals: pre / in / post order
* Binary Search Tree (BST)
* Know the BST property and how insertion order affects structure
* Know various BST methods (put, get, delete)