Programming: Beyond the Basics
Please rate the course
Course short description
There are countless ways to write any program. This course is designed so that you have all the tools necessary for fully expressing your ideas through code, including functional composition and recursion, object-oriented programming, and basic knowledge of parallelism.
If you are already familiar with the concepts discussed above, you can choose interesting tasks or move on to studying computer systems.
I also use this course to share my programming philosophy and my preferences in the approach to programming. I do not claim to have the final opinion on these matters, as there is no single correct way. Nevertheless, others have found my thoughts useful, and perhaps you will too.
The backbone of this course is a sequence of tasks for each topic. You should strive to solve each task, using ready-made solutions and additional explanations if necessary.
As additional material, I recommend "Composing Programs" by John DeNero or the classic textbook SICP, on which it is based, be it in the original version in Scheme or the newer version in JavaScript. For a more playful, task-oriented approach, I also recommend "The Little Schemer," especially on the topics of higher-order functions and recursion.
Primarily, I will be using Python as the main language, but you can work in another language if you prefer. Languages that do not support higher-order functions and/or classes may pose difficulties in adapting some tasks.