|Number||Lecture Date||Presentation||Codezzzzzzzzzzzzzzzzzzzzzz||Last Updated||Topics zzzzzzzzzzzzzzzzzzzzzz|
|1||16 Feb||Course administration; Python basics|
|2||19 Feb||Python basics (conditionals, iteration, lists)|
|3||23 Feb||23 Feb., 7pm||Iteration over lists and strings; slicing; functions; mutable and immutable classes; equality vs. identity; Python's memory model.|
|4||26 Feb||Functions, side effects and the memory model; Integer representation: Unary, binary, and other bases|
|5||2 March||4 March, 11am||Integer exponentiation; Search: sequential and binary search. An explanation of the binary number representation (in Hebrew) can be found here|
|6||5 March||Basic algorithms: Binary search (reminder), Selection sort, Merge; Complexity and the O notation.|
|7||8 March||8 March, 11pm||Lambda expressions. High order functions. Numerical derivatives and integrals. Floating point arithmetic. Finding roots of real valued functions.|
|8||12 March||Finding roots of real valued functions: Newton-Raphson method.
Software testing, IDLE debugger, code styling.
|9||17 March||Software testing, IDLE debugger, code styling (remains from lecture 8).
Randomized primality testing: the bottle coin is your friend.
|10||23 March||modified March 24, 4pm||Randomized primality testing, recapping. Encryption. The discrete logarithm problem. Diffie-Hellman exchange of secret key over a public network. Integer greatest common divisor.|
|11||26 March||pdf updated March 27||Recursion 1: Fibonacci, factorial, binary search, quicksort|
|12||29 March||Recursion 2: Merge sort, towers of Hanoi, towers of Hanoi nightmare, tail recursion.|
|13||2 April||Recursion 3: memoization, 8 queens|
|14||6 April||Slides 34-35: Fixed Munch! recursion. (April 17). Removed linked list slides that were not actually covered in the lecture (April 26). Slide 34: "at most" (June 7)||Intro to object oriented programming.
Data structures: Linked lists
|15||23 April||Data Structures: linked lists and trees|
|16||27 April||Data Structures: Hash functions and hash tables.|
|17||30 April||pdf updated May 2 with minor fixes||More data structures: Cuckoo Hashing, Finite and Infinite Iterators, generators.
Note: We did not cover slides 48 onward. Slides 48-49 (merging infinite iterators) show another good example for iterators, and we recommend going over them. Slides 50-end (exception handling) are not in the material for the exam.
|18||May 4||Characters and Text Representation: Ascii and Unicode. Letter Frequencies in Text. String matching.|
|19||May 7||String matching: DFA
|20||May 11||minor changes in IDLE outcomes of slides 16, 52 (May 11)||Compression: Huffman, codebook, intro to Ziv-Lempel|
|21||May 14||Digital image representation and processing, noise reduction
Download Pillow: http://www.lfd.uci.edu/~gohlke/pythonlibs/#pil
|22||May 18||pdf updated 20/5||More digital image processing: noise reduction, edge detection (segmentation is for reference only - not for the exam).
log file contains executions done in the later lecture (but very similar to the earlier log).
|24||May 25||Introduction to error correction and error detection codes
Popular exposition: http://www.csunplugged.org.il/lessons/error-correcting.html
|25||May 28||Geometric bounds for error correction and error detection codes. Hamming (7,4,3) code.
Integer greatest common divisor. Euclid's algorithm.
|26||Jun 1||Integer greatest common divisor. Euclid's algorithm.
Exercise on error detection and correction
|27||Jun 8||pdf updated 8/6||An old debt: cycles in linked lists
Recap on computational problems, algorithms and complexity (we did not have time for slides 37-44 and 48-52).
|28||June 11||Graphs, maps, and coloring.
Popular exposition: http://www.csunplugged.org.il/lessons/graph-theory.html .
The halting problem is undecidable.