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. ↩︎

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
Hello Devtalk World! Please let us know a little about who you are and where you’re from :nerd_face:
New
dasdom
No chair. I have a standing desk. This post was split into a dedicated thread from our thread about chairs :slight_smile:
New
AstonJ
I’ve been hearing quite a lot of comments relating to the sound of a keyboard, with one of the most desirable of these called ‘thock’, he...
New
PragmaticBookshelf
Tailwind CSS is an exciting new CSS framework that allows you to design your site by composing simple utility classes to create complex e...
New
PragmaticBookshelf
Learn different ways of writing concurrent code in Elixir and increase your application's performance, without sacrificing scalability or...
New
DevotionGeo
The V Programming Language Simple language for building maintainable programs V is already mentioned couple of times in the forum, but I...
New
PragmaticBookshelf
Create efficient, elegant software tests in pytest, Python's most powerful testing framework. Brian Okken @brianokken Edited by Kat...
New
New
PragmaticBookshelf
A concise guide to MySQL 9 database administration, covering fundamental concepts, techniques, and best practices. Neil Smyth MySQL...
New
xiji2646-netizen
There’s a GitHub repo at forrestchang/andrej-karpathy-skills that’s sitting at 97.8k stars. It’s a single CLAUDE.md file with four behavi...
New