Monday, April 28, 2025

Problems With Modern CS Education

I have noticed this weird pattern that when something is not in my academic syllabus and is interesting to me, it becomes an active pursuit, but for some reason when the same topic is up for the test, I procrastinate too much. Maybe it's just me, but it's an interesting recent finding.

I pondered about it for a long time, and as with everything in my life, I will blame this to something completely external—not taking accountability for a single thing wrong with my life.
 
 Attractive Latin Computer Science Freelancer Looking Screens While Sitting  Fingers — Stock Photo © tonodiaz #313541196
 

Modern computer science education is bad. Not only is it outdated, but even the stuff they teach does not cover first principle thinking. And I am not talking about a certain type of institution; most of the problems discussed in this article apply to almost all of the institutions and even bootcamps. This article consists of rants and maybe possible solutions that can be applied to practice, but all of these are just my views. I will try to add references to all external sources I can find so that you can delve further into the topic of education and learning.

But first, let's focus on addressing the issue, as no problem is worth researching if we don't acknowledge the existence of one. I have spent my recent few months hiring people for tech roles, and without any surprise, they are not industry-ready even after we decided that we are ready to train inexperienced candidates. This is nothing new. At the current market conditions, even the people who deserve to get a job are facing resume rejections. It is way harder to get into the tech industry now than it was, say, a decade ago. This can be blamed on market conditions, an overflow of tech candidates, AI, and whatnot. But we are not here to rant on the system because, whether we want to or not, we are a part of it. We are here to know how to become the best. But we can't easily because modern education is failing us.

The first problem is their degree itself. Most of them report about how their CS major includes a whole tonne of non-tech stuff and just diagrams and equations instead of teaching them how to build stuff. While the syllabus does look good on paper, it depends on how institutions follow and teach them, which is still up to them. And unsurprisingly, most of them fail to do so.

Recently there is a rise of institutions which enroll the growing amount of interested students into their degree programs, and get accredited weird government benchmarks and sell dreams to vulnerable people. Most people I know have never learnt anything important from their college anyways.

Nevertheless, this is also the case with famous and overall reputable institutions with their useless assignments and subject placements. Like, for example the missing semester of MIT have stuff like version control and Bash? I wonder why they didn't teach them in the curriculum itself. I get it. Computer science is a theoretical subject, and software engineering is a whole different field. But still that does not explain why first-principle thinking is not applied to most approaches. Maybe it's just me who believes that going right into the project and dirtying your hands is a good idea? I am not the first one. Read the page; understand why those things are not incorporated in most schools (except some, which is amazing, btw).

From the transistor has a very novel approach to CS, and I like it. First-principle thinking is not only about understanding the inner workings of things, but it's also about why the thing exists there in the first place. You may know what an assembler is, but you will be shocked how many people don't know where it fits in or why it's even important, for example. This is a shitstorm.

Sunday, January 19, 2025

Introduction

 

This was originally posted in Q1 of 2022

Hello All

Welcome to the first post on my blog. I used some other platforms to blog before, but I think having a custom website for my writing and archives is a better choice. This post will be a little bit about me and what I will post on this website.

About Me

I started programming seriously when I was in 8th grade (around the age of 13). I'd written some code before, but only to experiment with computer science; I was just doing it because I enjoyed tinkering with my computer in addition to playing games.

I am working on hackarmour, as well as researching and developing compilers and blockchain projects. I have a couple of them on my GitHub. This blog won't have much educational content because I believe there are enough resources out there to learn anything (in computer science) for free. But that doesn't stop me from posting some free advice and rants.

Web Dev

I made some websites. It helped me understand browsers and how the internet and servers work. Most of my work, even today, deals with the web in some way or the other. I use the full stack JavaScript and sometimes Golang. So I may post some posts featuring some of my work related to microservices, cool server architectures, project demonstrations, and my rants about the node package manager and useless things in web development. Do not expect me to post tips or tutorials on this blog. I may explain some concepts at times and will link most of the resources you may need to research more on a particular topic. I have already created a resource list which has some really good web development resources.

Hacking

I started learning about some security from a developer point of view around the end of 2019. I started out with web security because that’s what made sense back then. Then I got familiar with cryptography, forensics, more Linux, and CTFs. I also stumbled upon a LiveOverFlow video about how CPUs work, and all those experiences made me more aware of how computers work. I still don't know how to hack stuff. Web hacking feels very boring, and I hate scanning or brute forcing. But I’m trying out some reverse engineering and exploitation these days with my malware research, so I may post some cool hacking content as well.



Systems Programming

This is the main topic of this blog. I mainly made this blog to document my progress in the 3 yearlong system programming roadmap I created for anyone to follow to get familiar with the concepts and make cool projects on topics like compiler engineering, browsers, malware, and exploitation. And even some references to learn about OSDev.

I haven’t had much experience in systems programming apart from making a programming language, (which I will be documenting actively on this blog). I also have to do more research on malware, OS, and also make a project on simulation. I will also be writing about some cool concepts which I liked in the process of learning those topics and will also give resources and techniques I used to learn them.

Conclusion

I will try to keep this blog active by posting twice a month but may fail to do so because of some unforeseen circumstances. Thanks for reading this far. Have a good day/night and happy hacking.

Problems With Modern CS Education

I have noticed this weird pattern that when something is not in my academic syllabus and is interesting to me, it becomes an active pursuit,...