This page contains links to additional exercises in Python, and resources on various topics learned in the course. Note that some exercise resources may contain topics not covered in our course, and exercises of higher or lower levels than we teach in our course.
If you encounter additional resources that you find appropriate, please notify the course staff.
Exercises
- Python exercises, mostly basic, with solutions: http://www.w3resource.com/python-exercises/
- Python tutorial with many computing notions explored (such as O-notation and complexity, OOP, recursion, data structures, searching and sorting, etc.). Includes a lot of code examples and exercises, some with solutions: http://interactivepython.org/runestone/static/pythonds/index.html
- ProjectEuler: https://projecteuler.net/, with many mathematically oriented challenges.
- Hackinscience, a collection of basic exercises in Python. Once you submit your solution you can see solutions submitted by others. https://www.hackinscience.org/exercises
Useful links by topics:
general
- A map of Computer Science: https://www.youtube.com/watch?v=SzJ46YA_RaA&
- Popular programming languages over the years (guess which is currently on top…): https://www.youtube.com/watch?v=Og847HVwRSI&feature=youtu.be
print vs. return - what's the difference?
Binary numbers and counting in different bases
- Integers in binary and other bases. This site: http://courses.cs.vt.edu/~csonline/NumberSystems/Lessons/index.html contains some really good explanations and demos.
- A nice explanation on counting bases from "לא מדוייק", a wonderful blog by Dr. Gadi Aleksandrowicz: https://gadial.net/2017/06/11/number_bases/
- ASCII and UNICODE, a video by Computerphile: https://www.youtube.com/watch?v=MijmeoH9LT4
- How bits represent numbers, characters and even colors: an interactive learning resource, by CS field Guide: http://csfieldguide.org.nz/en/chapters/data-representation.html
- Two's complement method for representing negative integers: https://youtu.be/4qH4unVtJkE
Floating point numbers
- A video by Computerphile explaining why floating point numbers cannot represent real numbers with 100% accuracy: https://www.youtube.com/watch?v=PZRI1IfStY0
- An example of converting 32-bit floating point to decimal: https://www.youtube.com/watch?v=8afbTaA-gOQ
- An example of the opposite direction (converting a decimal number to 32-bit floating point representation, we do not cover this in this course): https://www.youtube.com/watch?v=8afbTaA-gOQ
Demos od the Newton Raphson method for finding roots of real functions
- https://yihui.name/animation/example/newton-method/
- https://mathsci2.appstate.edu/~cookwj/sage/calculus/Newtons_method.html
- https://www.desmos.com/calculator/kgwfrkiyh8
Binary search and sorting algorithms
- A lion in the desert (binary search) article from "לא מדוייק": https://gadial.net/2009/06/07/lion_in_the_desert/
- Selection sort and Insertion sort are essentially the same, a video by Computerphile: https://www.youtube.com/watch?v=pcJHkWwjNl4
- Quicksort explained, a video by Computerphile: https://www.youtube.com/watch?v=XE4VP_8Y0BU
- Complexity of sorting algorithms measures and visualized: https://www.youtube.com/watch?v=Ou2A-JWszVA
- Quicksort, as illustrated by Hungarian folk dancing: https://www.youtube.com/watch?v=ywWBy6J5gz8
Complexity and the O() notation
- Complexity of operations on Python collections (list, set, dict): https://wiki.python.org/moin/TimeComplexity
Random numbers
- An article from "לא מדוייק":https://gadial.net/2009/04/08/random_numbers/
Recursion
- Explaining recursion via factorial (עצרת): https://www.youtube.com/watch?v=Mv9NEXX1VHc
- Quicksort explained, a video by Computerphile: https://www.youtube.com/watch?v=XE4VP_8Y0BU
- Quicksort, as illustrated by Hungarian folk dancing: https://www.youtube.com/watch?v=ywWBy6J5gz8
- Video on Hanoi Towers and binary numbers: https://www.youtube.com/watch?v=2SUvWfNJSsM. You may also like Part 2 on Hanoi Towers, ternary numbers and Sierpinsky Traingle: https://www.youtube.com/watch?v=bdMfjfT0lKk
Diffie Hellman key exchange, Cryptography and prime numbers
- Miller-Rabin primality testing (using Fermat''s little theorem), article from "לא מדוייק": https://gadial.net/2009/08/09/miller_rabin/
- Video on Diffie-Hellman with colors (very intuitive explanation): https://www.youtube.com/watch?v=YEBfamv-_do
- Diffie-Hellman explained, a video by Computerphile: https://www.youtube.com/watch?v=Yjrfm_oRO0w
- Prime numbers in cryptography: https://www.youtube.com/watch?v=M7kEpw1tn50
- An article on "fake news" in popular science: https://gadial.net/2008/07/20/bad_math_haaretz_on_aks/
Data structures
- Linked lists, video by Computerphile: https://www.youtube.com/watch?v=_jQhALI4ujg&t=32s
- Arrays vs linked lists, video by Computerphile: https://www.youtube.com/watch?v=DyG9S9nAlUM
- hashing: https://www.youtube.com/watch?v=b4b8ktEV4Bg
Compression
- What is compression? a video by Computerphile: https://www.youtube.com/watch?v=Lto-ajuqW3w
- Huffman code explained, a video by Computerphile: https://www.youtube.com/watch?v=umTbivyJoiI. See also a ternary (base 3) version of Huffman: https://www.youtube.com/watch?v=DV8efuB3h2g
- Lempel Ziv compression explained, a video by Computerphile: https://www.youtube.com/watch?v=goOa3DGezUA, and https://www.youtube.com/watch?v=cCDCfoHTsaU
- Zip bomb attack: https://en.wikipedia.org/wiki/Zip_bomb
- A video on video compression, animated GIFs and space vs time: https://youtu.be/blSzwPcL5Dw
Digital images
- An interactive learning resource on image representation, by CS field Guide: http://csfieldguide.org.nz/en/chapters/data-representation.html#images-and-colours
- Enrichment: how image segmentation can be achieved by a clustering appraoch called K-means: https://www.youtube.com/watch?v=yR7k19YBqiw
- Enrichment: Steganography, or how to encrypt using images: https://www.youtube.com/watch?v=TWEXCYQKyDc, ans also see this article: https://gadial.net/2008/09/01/visual_cryptography/
- Enrichment: digital video - https://www.youtube.com/watch?v=yniSnYtkrwQ ,digital audio - https://www.youtube.com/watch?v=1RIA9U5oXro
Error detection and correction codes
- Error correction basics (repetition code) video from Computerphile: https://www.youtube.com/watch?v=5sskbSvha9M
- Hamming code videos from 3Blue1Brown: https://www.youtube.com/watch?v=X8jsijhllIA, https://www.youtube.com/watch?v=b3NxrZOu_CE
General useful links:
- הבלוג "לא מדויק" של ד"ר גדי אלכסנדרוביץ', מאות מאמרים בתחומים שונים הקשורים למתמטיקה ומדעי המחשב, כתובים בשפה ברורה ונגישה - http://gadial.net/
- אתר "הוראת מדעי המחשב בקהילה" שמספק פעילויות בנושאים שונים של מדעי המחשב שלא דורשים ידע מוקדם. התכנים מבוססים על פרוייקט "מדעי המחשב ללא מחשב (http://csu-il.blogspot.com/, גרסת המקור באנגלית: https://csunplugged.org/en/ ):
http://www.csunplugged.org.il/
- "מדריך השדה למדעי המחשב" (CS field guide) - אתה המכיל פעילויות אינטראקטיביות והסברים פשוטים על נושאים שונים במדעי המחשב:
http://csfieldguide.org.nz/en/index.html