WHAT: A short course covering time complexity, why it matters, and how can it help us think differently about our code to write programs that scale (and possibly impress interviewers).
In terms of time, I estimate the course to take about 20 hours or personal work (which can be extended).
This course can be completed individually, by following the material. A number of workshops can be attended to unblock different parts. All workshops have been recorded for you to watch in your own time!
Material: https://github.com/makersacademy/course/tree/master/algorithmic_complexity
Slack channel (to share your work with other and ask questions): #algorithms
Youtube playlist - for the workshops (see descriptions below): https://www.youtube.com/playlist?list=PLc4BYny7PXeSNl4uAOiDIbgX6GumDDqPC
We’ll introduce the context for the course, and talk about why we will use a timing framework.
Recording: https://www.youtube.com/watch?v=riIds-Ggvak&list=PLc4BYny7PXeSNl4uAOiDIbgX6GumDDqPC
We'll talk about a process to follow when creating algorithms. No prerequisite, but having a working timing framework is recommended.
Recording: https://www.youtube.com/watch?v=uclAQBy1Epc&list=PLc4BYny7PXeSNl4uAOiDIbgX6GumDDqPC
We will explore how memory works and use that knowledge to make our algorithms faster.
Prerequisite: Having created your timing framework, and written your own version of "shuffle" and "reverse".
Recording: https://www.youtube.com/watch?v=Vc8kuSBouPA&list=PLc4BYny7PXeSNl4uAOiDIbgX6GumDDqPC
We will design a data structure to solve the efficiency issues found in arrays and explore the trade-offs that are made in data structures.
Prerequisite: Having created your timing framework, and written your own version of "shuffle", "reverse", "find duplicates" and "most frequent words".
Recording: https://www.youtube.com/watch?v=osPEozXe4JY&list=PLc4BYny7PXeSNl4uAOiDIbgX6GumDDqPC
We will look at a common way to make very fast algorithms, and use that knowledge to create the most efficient sorting algorithms.
Prerequisite: Having created your timing framework, and written your own version of "shuffle", "reverse", "find duplicates", "most frequent words" and "sorting 0s and 1s". Before the workshop, I’ll ask you to think about your own sorting algorithms (how would you sort a deck of cards?)
Recording: https://www.youtube.com/watch?v=ObkYFDoIKwI&list=PLc4BYny7PXeSNl4uAOiDIbgX6GumDDqPC