I also agree with Ilya on the important algorithmic ideas, with one addition: algorithmic analysis. Just as you can describe the movement of the planets with a few simple equations, and that’s beautiful, you can describe any sequence of steps to finish a task as an algorithm. And you can mathematically analyze the efficiency of that sequence: as the task gets larger, do the number of steps required to finish it grow linearly, quadratically, logarithmically (we hope)?
This is a broadly applicable and powerful idea, since pretty much everything (even learning) involves a sequence of steps or process.
I also agree with Ilya on the important algorithmic ideas, with one addition: algorithmic analysis. Just as you can describe the movement of the planets with a few simple equations, and that’s beautiful, you can describe any sequence of steps to finish a task as an algorithm. And you can mathematically analyze the efficiency of that sequence: as the task gets larger, do the number of steps required to finish it grow linearly, quadratically, logarithmically (we hope)?
This is a broadly applicable and powerful idea, since pretty much everything (even learning) involves a sequence of steps or process.
I am currently enjoying Tim Roughgarden’s course on algorithms: https://www.coursera.org/course/algo. Luay Nakhleh’s course on Algorithmic Thinking is also excellent: https://www.coursera.org/course/algorithmicthink.