Previous Lecture Lecture 19

Lecture 19, Thu 12/02

Wrap up / Review

Recorded Lecture: 12_2_21

''' Final Exam Logistics
* The final exam will be in-person (LSB 1001), Wed 12/8 @ 7:30 - 9:30pm PST
* Bring a writing utensil and photo ID
	* Please write LEGIBLY (if we can't read it, we can't grade it)
	* Preferrably ink / dark led
	* When leaving the room, you musts present your ID and hand in
	your exam before leaving (it's your ticket out!)
	* Closed book: (No notes / book / electronic devices)
* The final will be cumulative
* Questions
	* True / False (if false, explain why)
	* Short answer
		* Briefly explain / describe / define / state / ...
	* Given some code, write the output
	* Write code satisfying a certain specification (similar to quizzes)
	* Given some algorithm we covered, fill in the blank to make it work
	* Draw diagrams
* I plan to design the exam such that 2 hours should be enough time
asuming students prepare and study the material.
* TAs and I will be proctoring the exam and can help answer any CLARIFYING
questions
'''
''' Topics
* Python Basics
	* Types
		* int, float, boolean, strings, listtts, sets, dictionaries, ...
		* conversion functions (int(), float(), str(), ...)
		* Mutable vs immutable
	* Relational / logical operators (==, <, <=, >=, >, and, or, ...)
	* 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
	* TDD
	* pytests
* Python Errors
	* Syntax vs Runtime
* Exception
	* 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 classes and methods
	* class constructors
		* Defining / initializing default parameters
	* Shallow vs. Deep Equality
		* Overlaoding the __eq__ method
	* overloading operators
		* __str__, __add__, __le__, __lt__, __ge__, __gt__, ...
	* Inheritance
		* Know the implementation and inheritance 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 is related to 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 aa 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 the implementation (as covered in the textbook / lecture) and
	O-notation for various functionality of data structures
		* 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,
		MergeSort, QuickSort
* Trees
	* Terminology
	* Know min-heap / max-heap data structure implementation (and the
	underlying list)
	* Binary Trees
		* Nodes / references implementation
		* Tree traversals: pre, in, post order
	* Binary Search Tree
		* Known as BST. Know BST property and how insertion order
		affects structure.
		* Know various BST methods (put, get, deletion)
'''