This course is in a very rough shape. Please wait until it has reached a first release. All links here are subject to change.
What is this course?¶
This course teaches selected topics in computer science and mathematics in detail with lots of examples. Most of these topics are useful for Software Engineering or ML/Data Scientist interviews; hence the URL.
This is not a comprehensive course. This course does not cover everything you need to pass a softwar engineering interview. We highly recommend that you look at many other resources to prepare for interviews. One recommendation is the excellent Cracking the Coding Interview book. Nor is this course a replacement for any formal university or MOOC course in computer science and mathematics.
Instead, this course examines some selected topics that are often not covered in sufficient detail in any interview preparation book. The topics we discuss can individually be found in CS or Math textbooks but you may need to search multiple textbooks and combine their knowledge. It is unlikely that you will find the entire selection of topics we discuss in this course in any single textbook.
The aim of this course is to provide a serialized knowledge source for some of the mental processes and unsaid, unformalized, interstitial realizations that nearly every person obtains, wittingly or unwittingly, while practicing algorithms. Author(s) of this course have realized a vicious cycle - these ephemeral but essential thought processes and ideas are forgotten when the person is out of practice only to be rediscovered once the person prepares for another interview. It is best for someone to write down these ideas so they are available as needed.
This course is intended for readers who have already obtained or are in the process of obtaining at least one degree in CS, mathematics, engineering, or a similar discipline. The readers must have done some programming before, ideally in python.
Assuming that the pre-requisites below are met, each topic in this course is explained in a self-contained style. Most topics discuss the underlying mathematics and provide python code.
Readers who have obtained a degree in a non-CS but technical field (such as chemical engineering, statistics, or physics) are probably the ideal audience for this course. This course may very well contain material that most CS graduates would consider painfully obvious. The reason is that many CS graduates often build up the unsaid, interstitial algorithms knowledge by doing multiple rounds of algorithm courses during their university degree. This is similar to how physical scientists/engineers learn to write a mass/energy balance equation and then just know whether they can solve it analytically or if they need a computer simulation.