Completed first chapter of SICP book
– projects
Yesterday, I finished the first chapter of the book Structure and Interpretation of Computer Programs and its exercises. My solutions to those exercises are available in this GitHub repository.
This year, due to a series of unfortunate events that only occur in dysfunctional socialist countries like Venezuela, there wasn’t any subject available for me to enroll during the intensive period. Therefore, I’m totally free of academic activities since mid-June until early October.
Naturally, I turned this into an opportunity for ambitious self-improvement. I decided to follow the Teach Yourself Computer Science guide, written by two instructors at the Bradfield School of Computer Science in San Francisco.
With this guide, anyone can give themselves “a world-class CS education without investing years and a small fortune in a degree program”. The authors explain which subjects are essential and why, and suggests the best book or video lecture series for each.
Of course, there’s still the cost of the time, effort and willpower required to complete all nine subjects. Rational people may ask themselves why go through the trouble at all, and the authors have an answer for that:
There are 2 types of software engineer: those who understand computer science well enough to do challenging, innovative work, and those who just get by because they’re familiar with a few high level tools.
[…]
Currently, the number of people entering the industry is rapidly increasing, while the number of CS grads is essentially static. This oversupply of Type 2 engineers is starting to reduce their employment opportunities and keep them out of the industry’s more fulfilling work. Whether you’re striving to become a Type 1 engineer or simply looking for more job security, learning computer science is the only reliable path.
The classic SICP is the guide’s recommendation for programming, specifically its first three chapters and their exercises. I will complete those three chapters, and ideally the remaining two.
I’m using Trello to track and organise my progress. My planned schedule is one chapter section per week, from Monday to Saturday. Therefore it should take me five weeks to complete chapter 2 and five weeks to complete chapter 3. I’m taking a one week break between each chapter, so I’ll finish chapter 2 on August 24th and chapter 3 on October 5th.