Lecture Presentations
Class No. | Date | Topics | Slides | Code + additional material | Comments |
1 | 31/12 | Course administration Python basics |
ID.py log1.txt |
Install Python: http://tau-cs1001-py.wikidot.com/python | |
2 | 3/1 | Python basics (cont.): Conditionals, Boolean values and operators, loops, range, lists | sum.py conditionals.py |
||
3 | 7/1 | More Python basics: list comprehension, functions, Python's memory model | xor.py palindrome.py memory.py |
Python Tutor: http://www.pythontutor.com/visualize.html#mode=edit Examples in class lists, linear-combination, modify_list, nullify |
|
4 | 10/1 | Python's memory model (cont., see material from lec3), More Collections (tuple, set, dict), Randomness |
char_count.py random_walk.py |
||
5 | 14/1 | Types of errors; Guidelines for "good" programming | |||
6 | 17/1 | Integer representation in binary (and other bases) Text representation, ASCII and Unicode |
text2bits.py | See highly recommended sources for more exercise in the slides | |
- | 21/1, 24/1 | No regular class | |||
7 | 28/1 | Floating points representation Basic Algorithms: Binary Search in sorted sequences |
pi.py search.py |
||
8 | 31/1 | Basic Algorithms (cont.): Selection-sort, Merging sorted lists Complexity and the O() notation |
select_sort.py merge.py | ||
9 | 4/2 | Complexity and the O() notation (cont., using slides from last lecture) Recursion (part 1): factorial, fibonacci, binary search |
factorial_and_fibonacci.py rec_bsearch.py | ||
10 | 7/2 | Recursion (part 2): Quick-Sort, Merge-Sort, Towers of Hanoi | quicksort.py mergesort.py sorting_race.py hanoi.py |
||
11 | 11/2 | Recursion (part 3): Monster of Hanoi (using slides from the previous lecture), Memoization Integer Exponentiation |
fib_memo.py power.py |
||
12 | 14/2 | Integer Exponentiation (cont., using slides from the previous lecture) Randomized primality testing |
primality.py | ||
13 | 18/2 | Randomized primality testing (cont., using slides from the previous lecture) Diffie-Hellman key exchange |
DH.py | ||
14 | 21/2 | Intro to Object Oriented Programming (OOP) Data structures: Linked lists |
student.py linked_list.py |
||
15 | 25/2 | Data Structures: Linked lists (cont., using slides from the previous lecture) Data Structures: Binary Search Trees |
binary_search_tree.py printree.py |
||
16 | 28/2 | Data Structures: Binary Search Trees (cont., using slides from the previous lecture) Data Structures: Hash functions and Hash Tables |
hash.py | ||
17 | 3/3 | Data Structures: Hash functions and Hash Tables (cont., using slides from the previous lecture) Data Structures: Generators for streams |
generators.py | ||
18 | 6/3 | Data Structures: Generators for streams (cont., using slides from the previous lecture) Text compression: Huffman algorithm |
huffman_comp.py | ||
19 | 10/3 | Text compression: Huffman algorithm (cont., using slides from the previous lecture) Text compression: Lempel-Ziv algorithm |
LZ.py | ||
20 | 13/3 | Text compression: Lempel-Ziv algorithm (cont., using slides from the previous lecture) Summary |