Previous Lecture | Lecture 20 |
Lecture 20, Thu 12/10
Wrap up / Review
Recorded Lecture: 12_10_20
Final Exam Review
'''
Final Exam Logistics
* The final exam will be on Gradescope as an online assignment.
* The window to take the final exam will start at 7:30pm and close
on 9:30pm PST on Wednesday 12/16
* The final exam will be cumulative
* The final exam will be in a similar format as the hws and quizzes
on Gradescope (except it'll be longer and cover more material)
* True / False
* multiple choice
* given some code, write the output
* write code satisfying a specification
* short answers
* ...
* The final exam must be done independently (no group work allowed)
* We will be monitoring Piazza during the final exam time
* For any CLARIFYING questions, you may post a PRIVATE question
on Piazza where we can provide an answer
* If there needs to be a change / modification in any question,
then I will post any clarifications publicly on Piazza
(which will send everyone an email as well)
Topics
* Python Basics
* Types
* int, float, boolean, strings, lists, sets, dictionaries, ...
* conversion functions (int(), float(), ...)
* Mutable vs. Immutable types
* Relational / Logical Operators (==, <, <=, >, >=, ...)
* Python Lists
* Supporting methods (count, pop, ...)
* Understanding under-the-hood workings 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)
* Writing pytests
* Python Errors
* Syntax vs. Runtime
* Exceptions
* Exception types (nameError, TypeError, ZeroDivisionError, ...)
* Exception handling
* Try / except / raise
* Flow of execution
* passing exceptions to the caller of the function
* Catching multiple exceptions
* Catching inherited type exceptions
* Object Oriented Programming
* Defining our own Python classes and methods
* Class constructors
* Defining / initializing default parameters
* Shallow vs. Deep Equality
* overloading the __eq__ method
* Overloading operators
* __str__, __add__, __le__, __ge__, ...
* Inheritance
* Know the implementation details
* Know what gets inherited and the mechanics
* Know the pattern on how to construct inherited classes
* Understand hierarchy of types (applies to exception handling)
* Understand how to explicitly call super class' methods
* Algorithm Analysis and O-notation
* Know how to derive O-notation for various data structures and code
segments
* Binary Search
* Search for items in a SORTED list
* Know the implementation and O-notation
* Recursion
* Understanding how recursive algorithms are managed by the call stack
* How to write recursive solutions
* How to analyze (O-notation) various recursive functions
* Linear Data Structures
* Know implementation (as discussed in lecture / book) and O-notation
for various functionality of data structures
* Stacks, Queues, Deques, LinkedLists, Ordered Linked Lists
* Sorting Algorithms
* Know the implementation and O-notation analysis (best and worst-case
scenarios) of various sorting algorihtms
* Bubble Sort (includes the "optimized" version), Selection Sort,
Insertion Sort, Merge Sort, Quick Sort
* Trees
* Understand terminology
* Know minHeap / maxHeap data structure implementation and analysis, tree
conceptualization, and underlygin Python list representation
* Binary Trees
* Know the nodes and references implementation
* Tree traversals: pre, in, post order traversals
* Binary Search Trees
* BST property and how insertion order affects the structure
* Understanding implementation on various BST methods (put, get, delete, ...)
Where to go from here?
* At UCSB, there are CoE CS courses
* CS 16 (intro to C++), CS 24 (data structures in C++),
CS 32 (Object-Oriented programming in C++)
* Upcoming DS major proposal, and there are programming courses dealing
more with data science!
* Join clubs such as UCSB's Data Science Club
* Work on projects!!
* Helps with technical skills and expands you resume
* Never let a course dictate what to learn!
Good luck!!!