I highly recommend everyone to check out this MIT open course Introduction to computational thinking. All the course videos and assignments can be found on the website. Initially, I started watching it because 3B1B also taught in the course, but the content turned out to be even more interesting than I imagined.
The course seems to cover a wide range of topics, including data science, climate change modeling, Ray Tracing, partial differential equations, statistics, image processing, and more. However, all these topics revolve around the concept of computation. I think this approach actually helps in developing the ability to solve problems using computers.
For example, in the first two lessons, they teach image convolution, breaking down the problem into matrix multiplication. The assignment is to implement a simple Gaussian blur. The concept of convolution can be further extended to tasks like edge detection or even Fourier transform. This step-by-step approach of breaking down seemingly difficult problems into mathematically representable methods, and teaching how to apply them elsewhere, is a fantastic learning method and a skill that many people lack.
Next, they discuss seam carving, a technique to change the aspect ratio of an image without making it look "weird". Usually, when we change the aspect ratio of an image, one dimension of the image gets stretched or compressed, making it look strange. This algorithm can identify unimportant areas in the image and remove them, making the whole image still look normal.
They also cover how to process data, using COVID-19 as an example, which I think is quite relevant to current events. Learning with real-life examples is beneficial. They also mention the significance of techniques like PCA dimensionality reduction and singular value decomposition, while briefly explaining statistical concepts.
I didn't have much interest in the later lessons, and I was a bit lazy, so I only skimmed through them. Here is an outline for your reference:
- Random walks
- Discrete mathematics
- Partial differential equations
- Climate change modeling
I personally find all these concepts quite practical, and if I have the time, I would continue to complete the entire course.
The course primarily uses Julia as the programming language, and I found it very comfortable to write in. I think I'll use Julia for simple matrix operations or data analysis in the future. For experienced engineers, it should be easy to learn, and when combined with Pluto, you can write code directly on the web page (similar to Jupyter notebook) and see the results in real-time.
p.s: Grant Sanderson's delivery and videos are truly exceptional. I believe he is one of the best among the professors.