Benjamin-Philip

Benjamin-Philip

Thoughts on the Teach Yourself Computer Science curriculum

My Thoughts

I’m a computer science undergraduate student from India, and I’ll be starting my second year (out of 4) of university in little more than a month. I’ve found the courses in Uni to be very superficial and exam-oriented [1], and I would like to go beyond and give myself a strong understanding of at least the foundations of computer science.

While researching a list of topics to self-study over the next 3 years, I came across the Teach Yourself Computer Science (TYCS) syllabus at https://teachyourselfcs.com/. It suggests nine topics along with book and video recommendations that the authors feel "every practising software engineer should know, irrespective of specialty or industry. Looking through the list and their arguments for each choice, it seems like a very grounded line up and there was very little I disagreed with.

I can definitely vouch for the first book in that list, SICP. I started reading SICP in middle school during Covid, and over the course of a year, I was able to work through the first chapter (including exercises). I found the book to be genuinely “mind blowing” (as TYCS puts it), and it gave me a solid base which I used to learn FP languages like Elixir and Erlang, and make meaningful open source contributions in the BEAM community in my teen years. This is inspite of reading only the first of 5 chapters. Unfortunately, I haven’t really been able to get back to SICP since.

My hope is that the items in this list gives a strong base in each of these topics and computer science in general. I’m not yet sure what sub-field of CS I want to work in, and my expectation is that this list would give me the prerequisite knowledge to approach most topics in depth.

I do realize that this is very theory-heavy list, focused on “Computer Science” rather than “Software Engineering” which are different things. I’m focusing on the CS because I have found that I am good at learning “practical skills” from documentation and just using these skills. I’m a moderately active FOSS contributor, and I have picked up some real-world Software Engineering discipline from this. Generally, I find my lack of CS knowledge to be the bigger blocker in the quality and kinds of Open Source work I can do, hence my focus. (Though resources on SE are still appreciated).

Questions

So, here are my questions;

  1. What are your general thoughts on this list?
  2. Is any topic skip-able? Conversely, is any other essential topic missing?
  3. Do you disagree on any of the book/video suggestions?
  4. Is this a well rounded base, with a lot of relevant topics for further in-depth study?
  5. Are there any other resources you would point me to?
  6. What are your thoughts on balancing learning “CS” and “SE”?

Learning Questions

I’m not a disciplined or systematic student, so I have a few questions on actually executing this herculean list:

  1. How do you take fast, effective notes of such dense topics?
  2. How do you organize notes, exercises and projects across topics?
  3. How should you “approach” learning any given topic?
  4. TYCS budgets 100-200 hrs per topic. Taking the worst-case of 1800 hrs for 9 topics, over 3 years, that works out to 12 hrs a week. If I try to match the pace and courses in Uni, this can double upto 25 hrs a week for some semesters. How do I sustainably balance my self-learning, Uni, FOSS commitments and my personal life?

  1. This is a fairly common problem in India, and is a whole another discussion on the Indian Education System and the Indian attitude to Education in general which I don’t want to get into. ↩︎

First Post!

apsori

apsori

Maybe the guide needs to be updated in this age of AI?

Where Next?

Popular General Dev topics Top

brentjanderson
From wikipedia: The zettelkasten (German: “slip box”) is a knowledge management and note-taking method used in research and study. ...
New
PragmaticBookshelf
Craft your dream role at work by guiding your manager to take your priorities into account when making decisions. Ken Kousen @kenko...
New
AstonJ
On my Mac I would just use Apple’s Preview which open’s PDF files, and on the Kindle their standard app. On the iOS devices I am preferr...
New
OvermindDL1
An interesting and yet simple programming question making the rounds the past few days, how does everyone here answer: Given an input f...
New
AstonJ
Have you changed the way you learn? Maybe you started off using docs and tutorials and are now an avid book reader or course watcher? Or ...
New
conwy
I’ve been thinking of trying to apply the concept of “moats” from investing to knowledge acquisition. A business moat is a competitive ...
New
Benjamin-Philip
My Thoughts I’m a computer science undergraduate student from India, and I’ll be starting my second year (out of 4) of university in litt...
New

Other popular topics Top

Devtalk
Reading something? Working on something? Planning something? Changing jobs even!? If you’re up for sharing, please let us know what you’...
1063 24245 395
New
AstonJ
If it’s a mechanical keyboard, which switches do you have? Would you recommend it? Why? What will your next keyboard be? Pics always w...
New
PragmaticBookshelf
Brace yourself for a fun challenge: build a photorealistic 3D renderer from scratch! In just a couple of weeks, build a ray tracer that r...
New
PragmaticBookshelf
From finance to artificial intelligence, genetic algorithms are a powerful tool with a wide array of applications. But you don't need an ...
New
mafinar
This is going to be a long an frequently posted thread. While talking to a friend of mine who has taken data structure and algorithm cou...
New
New
AstonJ
If you’re getting errors like this: psql: error: connection to server on socket “/tmp/.s.PGSQL.5432” failed: No such file or directory ...
New
AstonJ
This is a very quick guide, you just need to: Download LM Studio: https://lmstudio.ai/ Click on search Type DeepSeek, then select the o...
New
PragmaticBookshelf
This book forgoes the abstract and instead provides concrete examples to help you better leverage the unique properties of Elixir, Erlang...
New
PragmaticBookshelf
Quickly turn complex problems into simple, working solutions using functional programming, safe concurrency, and the expressive tools of ...
New