| Previous Lecture | Lecture 20 |
Lecture 20, Thu 03/11
Wrap up / Review
Recorded Lecture: 3-11-21
''' Logistics
* The final exam will be on Gradescope as an online assignment.
* THE WINDOW TO TAKE THE FINAL EXAM WILL START AT 4PM PST and CLOSE
ON 6PM PST on TUESDAY 3/16
* The final exam will be cummulative
* The final exam will be in a similar format as the hws and quizzes
(except it will be longer and cover more material).
* True / False
* Multiple Choice
* Write code satisfying a certain specification
* Short Answers (briefly define / explain)
* ...
* For CLARIFYING questions, you may post a PRIVATE question on Piazza
where we will answer them
* If there needs to be a change / modification in the 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 function (int(), float(), ...)
* Mutable vs. Immutable
* Relational / Logical Operators (==, <, <=, >=, >, ...)
* Python Lists
* Supporting methods (count, pop, ...)
* 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
* TDD
* Writing pytests
* Python Errors
* Syntax vs. Runtime Errors
* Exceptions
* Exception types (nameError, TypeError, ZeroDivisionError, ...)
* Exception handling
* Try / except / raise
* Flow of execution
* passing exceptions to the function / method 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
* Overload __eq__ method
* Overloading operators with special methods
* __str__, __add__, __le__, __ge__, ...
* Inheritance
* Knowing the implementation and inheritance of fields and
methods, and how to override inherited methods
* Know the pattern on how to construct inherited classes
* Know the hierarchy of types (also how this affects
exception handling)
* Know how to explicitly call super class' 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 SORTED list
* Covered iterative and recursive 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
* the implementation and O-notation analysis (best and worst-case
scenarios) for various functionality of data structures
* Stacks, Queues, Deques, Linked Lists, Ordered Linked Lists
* Sorting Algorithms
* Know the implementation and O-notation analysis (best and worst-
case scenarios) of various sorting algorithms
* Bubble Sort (included optimized version), Selection Sort,
Insertion Sort, Merge Sort, and Quick Sort
* Trees
* Terminology
* Min / Max heap data structure implementation (and underlying
Python List representation)
* Binary Trees
* Node / references implementation
* Tree traversals: pre, in, post order traversals
* Binary Search Trees
* Understand BST property and how insertion order affects
the structure
* Understand various BST methods (put, get, deletion)
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 and have a great spring break!!!
'''