I started skimming this but it seemed to be more of a learning how to learn CS book. I'm a fan of his other works. This one, I'm not so sure the right folks are going to find it when they need it/ should use it.
Most reputable CS courses will have one or two math subjects (often called "Discrete Mathematics" or some variation).
Does anyone have any advice on tackling subjects like these for someone who hasn't done any math since high school more than a decade ago (and has forgotten it)?
I'd recommend going on Thriftbooks and ordering a textbook. I can't remember the exact copy I had years ago when I was self-learning CS, but it was like $4.00 for a really incredible textbook.
Now, I don't have a degree, so take my advice with a grain of salt, but the book was really really good, and honestly, if you've been programming for awhile, I think most of the concepts didn't require a heavy math background (of course, it would probably help). The chapters were like: Symbolic Logic, Set Theory, Proofs, Algorithms, Cryptography, and other things which I can't remember.
Edit: The book is free to read online
EDIT EDIT: Removed link as I don't know if that was a "legal" link.
It's out of stock on Thriftbooks, but looks to go for $6-8 on there.
Math Academy is a good option, but I wrote about the issues I had with it here.
Recently, I've been going through Introduction to Graph Theory by Richard J Trudeau. It's from the 70s, and I'm doing all the exercises. It really is an intro, and teaches some set theory and proof stuff. Doing Math Academy at least taught me that doing exercises is incredibly important for mathematics learning.
It's a different kind of math from the continuous math they teach in school. Personally I found it a lot more intuitive. Like it wasn't the easiest thing ever, but I did better than I thought I would.
I’ve had Beej’s Guide to C and Beej’s Guide to networking bookmarked for an embarrassing amount of time.
But this is the first guide that I know the material! I have “learned computer science” (somewhat). And I have to say it has propelled Beej’s other guides to the top of my reading list. The subchapters I skimmed and their content are just so relevant and I know many new and experienced devs (myself included) who would still benefit greatly from reading this. Just exceptionally well done.
He also taught me networking in C in the early 2000's! A few years ago I moved from the Bay Area up to Bend, Oregon and ended up running into him in-person at one of the tech meetups.
I was so floored to meet him in person, and as you'd probably imagine, he's super kind and relaxed =D
A++ human being who's contributed so much to our field.
Well done but is this a guide to Computer Science or to Software Engineering? In a Guide to CS I expected to find information theory, computability, complexity, finite state automa, language grammars etc.
Anyway, the audience is
> Undergrad students just getting into programming
so it's naturally biased toward the engineering part of the subject.
> So, while it’s clearly possible to have a career in a lucrative field you dislike, it’s (a) going to be harder for you than for people who like it and (b) maybe you should consider a field that you do like?
> You gotta want it. Do you want it enough to go through the tremendous amount of effort it takes to learn it? Maybe you hate programming, but you want the money enough. Maybe you don’t care about the money, but you want to program every second of the day.
> Just make sure you have the drive to make it happen.
I feel stupid saying this over and over each time one of his guides pop up, and I know he lurks here, but thanks Beej.
All of his material is absolutely top notch. His guide to network programming was instrumental to both my understanding and career. It often feels like thanks isn't quite enough.
I did Beej's Guide to Network Programming and it was fantastic, I learnt a lot, and it was easy enough that I was able to do it in Rust.
I'm sure this one is as good as all the others.
Point 7.5 of this guide reminds me of the Einstellung effect, I built my own "pomodoro" timer with notifications saying "go stretch" or "go drink water" (https://github.com/reciperium/temporis in case someone is interested)
On a side note, has anyone noticed the disparity of attitude and level of intensity of dialogue when it comes to AI in different HN posts?
Given that there are many threads where 80% act as if AI would cause second coming I suspected that main topic of discussion here would be "is it worth learning CS at all in 2026?". To my (pleasant) surprise the discussion here is much more "normal". Does anyone suspect that some HN posts have a lot of astroturfing from AI-adjacent organisations?
> I suspected that main topic of discussion here would be "is it worth learning CS at all in 2026?"
Considering the current state of the job market I don't think it is good idea to go into CS in 2026 expecting a lucrative career. People who just love to program will find a job eventually, of course.
> Does anyone suspect that some HN posts have a lot of astroturfing from AI-adjacent organisations?
Why does it have to be AI? I don't work for OpenAI/Anthropic/etc. and am an "AI-skeptic" overall. I don't believe that the current job market conditions are caused by AI. I think the issue is that the field has become saturated with all your regular "fullstack web ninjas" while higher education institutions are still pumping hordes of CS(-adjacent) grads. Things will get worse (people that went into CS before the downturn are still graduating) before they get better (smaller number of people who are truly interested are choosing the field these days which will result less people of higher average quality graduating in a few years).
My perception of AI discussions in HN is that it's typically negative to very cautiously optimistic, I have no clue what the possible astroturfing would be.
Talking to meat-space people in the industry, I find that there's a pretty well represented population across the board from "AI is no big deal, and we're going to crash the entire economy when the bubble bursts" to "AI is the most important technology since the dawn of computing, and we're going to reshape the world for the better". IMO, the most amusing people are the people who think that AGI is both possible, likely, and will be disastrous, but still are actively working towards building it. I think there's something humorously absurd about "machine-god cultists" being a real population that I can interact with on a regular basis.
I have used the guide when at college and it was an extremely good read at the time. Learnt so much. I should probably buy a printed copy.
Being that said, at the moment I'm trying to implement a simple non-blocking TLS server in Python with a custom protocol (no external deps, only built-ins) and couldn't find a single guide online that treats the topic. Having read the Python documentation it appears that there are a lot of nuances and pitfalls to correctly implement it. This was my impression after reading the docs, though I could be wrong.
I haven't checked if current Beej's guide covers the topic, in case it doesn't, did anyone embarked in doing this with success?
Takes drastically less effort to get good at programming than other disciplines
Want to be a professional accompanist? Good luck. You better have been taught since you were a child and quickly picked up sight-reading and were good at it for the last 20 years.
I see people argue “But other people hate their jobs in other industries, just push through and grind, money is money”
Sure, but I want to point out that software development is kind of unique. I can’t think of too many other professional jobs where the line between hobby and work blends, for so many of its workers.
Let us be honest with ourselves, many of the toxic things in this industry are caused by a strong culture and “It’s my hobby, and I’m extremely passionate about it” mentality.
So people are willing to learn new skills in their spare time, unpaid of course. They’re willing to pull OT and weekend work, for the mission.
And those that don’t, are deemed lazy or fakes, not passionate enough.
You don’t see investment bankers / lawyers / management consultants / etc. go on about side projects, leveling up their skills during the weekend, and other things that are considered completely normal in this industry.
My point is - those are the types of people you’re up against. Those are the type of people many employers love.
If you have zero interest for the craft, and just plan on grinding for the money, there are other similarly lucrative ventures, which might align with your own interests, and where it is accepted to be in it for the money.
it's the same in any industry with the exception of insurance and bureaucracy, I think (IMO and from the top of my head)
but I believe no other industry has a greater gap between "i can't believe the shit I (have to) do at work" and "hobby" except in the many cases of voyeurs, stalkers, laissez-faire criminal investigators and passionate MiniTrue partisans, all of which are variations of the "true" human nature of the bulk of the population left after the many wars, including a great many of the ones who came home unharmed but with stories to tell
> And because the problems aren’t real, AI can solve them all really easily. There’s tons of training material out there for them to learn from.
> But don’t be fooled. Just because AI can solve your school problems doesn’t mean it can solve the real-world problems you’re going to face in your work. (As of now, it can’t.)
This is a good point. And it’s unfortunate we can’t see how much these things are tuned for demos like solving classic HW problems.
I still have trouble getting used to the fact that “computer science” is often used to just mean “programming” in the US. This is a guide to learning how to program.
ice overview. A personal struggle of mine as someone who is self taught (with a degree in statistics) and has a full time job that does not constantly require programming, I struggle with learning fundamentals alongside doing actual projects. If someone has any advice in this regard, it would be much welcome.
31 comments
[ 2.7 ms ] story [ 53.3 ms ] threadDoes anyone have any advice on tackling subjects like these for someone who hasn't done any math since high school more than a decade ago (and has forgotten it)?
Now, I don't have a degree, so take my advice with a grain of salt, but the book was really really good, and honestly, if you've been programming for awhile, I think most of the concepts didn't require a heavy math background (of course, it would probably help). The chapters were like: Symbolic Logic, Set Theory, Proofs, Algorithms, Cryptography, and other things which I can't remember.
Edit: The book is free to read online
EDIT EDIT: Removed link as I don't know if that was a "legal" link.
It's out of stock on Thriftbooks, but looks to go for $6-8 on there.
Recently, I've been going through Introduction to Graph Theory by Richard J Trudeau. It's from the 70s, and I'm doing all the exercises. It really is an intro, and teaches some set theory and proof stuff. Doing Math Academy at least taught me that doing exercises is incredibly important for mathematics learning.
https://news.ycombinator.com/item?id=46124247
But this is the first guide that I know the material! I have “learned computer science” (somewhat). And I have to say it has propelled Beej’s other guides to the top of my reading list. The subchapters I skimmed and their content are just so relevant and I know many new and experienced devs (myself included) who would still benefit greatly from reading this. Just exceptionally well done.
I was so floored to meet him in person, and as you'd probably imagine, he's super kind and relaxed =D
A++ human being who's contributed so much to our field.
Anyway, the audience is
> Undergrad students just getting into programming
so it's naturally biased toward the engineering part of the subject.
> You gotta want it. Do you want it enough to go through the tremendous amount of effort it takes to learn it? Maybe you hate programming, but you want the money enough. Maybe you don’t care about the money, but you want to program every second of the day.
> Just make sure you have the drive to make it happen.
Man this is so true
All of his material is absolutely top notch. His guide to network programming was instrumental to both my understanding and career. It often feels like thanks isn't quite enough.
Point 7.5 of this guide reminds me of the Einstellung effect, I built my own "pomodoro" timer with notifications saying "go stretch" or "go drink water" (https://github.com/reciperium/temporis in case someone is interested)
Given that there are many threads where 80% act as if AI would cause second coming I suspected that main topic of discussion here would be "is it worth learning CS at all in 2026?". To my (pleasant) surprise the discussion here is much more "normal". Does anyone suspect that some HN posts have a lot of astroturfing from AI-adjacent organisations?
Considering the current state of the job market I don't think it is good idea to go into CS in 2026 expecting a lucrative career. People who just love to program will find a job eventually, of course.
> Does anyone suspect that some HN posts have a lot of astroturfing from AI-adjacent organisations?
Why does it have to be AI? I don't work for OpenAI/Anthropic/etc. and am an "AI-skeptic" overall. I don't believe that the current job market conditions are caused by AI. I think the issue is that the field has become saturated with all your regular "fullstack web ninjas" while higher education institutions are still pumping hordes of CS(-adjacent) grads. Things will get worse (people that went into CS before the downturn are still graduating) before they get better (smaller number of people who are truly interested are choosing the field these days which will result less people of higher average quality graduating in a few years).
Being that said, at the moment I'm trying to implement a simple non-blocking TLS server in Python with a custom protocol (no external deps, only built-ins) and couldn't find a single guide online that treats the topic. Having read the Python documentation it appears that there are a lot of nuances and pitfalls to correctly implement it. This was my impression after reading the docs, though I could be wrong.
I haven't checked if current Beej's guide covers the topic, in case it doesn't, did anyone embarked in doing this with success?
The Python docs on the topic: https://docs.python.org/3/library/ssl.html#ssl-nonblocking
Want to be a professional accompanist? Good luck. You better have been taught since you were a child and quickly picked up sight-reading and were good at it for the last 20 years.
Sure, but I want to point out that software development is kind of unique. I can’t think of too many other professional jobs where the line between hobby and work blends, for so many of its workers.
Let us be honest with ourselves, many of the toxic things in this industry are caused by a strong culture and “It’s my hobby, and I’m extremely passionate about it” mentality.
So people are willing to learn new skills in their spare time, unpaid of course. They’re willing to pull OT and weekend work, for the mission.
And those that don’t, are deemed lazy or fakes, not passionate enough.
You don’t see investment bankers / lawyers / management consultants / etc. go on about side projects, leveling up their skills during the weekend, and other things that are considered completely normal in this industry.
My point is - those are the types of people you’re up against. Those are the type of people many employers love.
If you have zero interest for the craft, and just plan on grinding for the money, there are other similarly lucrative ventures, which might align with your own interests, and where it is accepted to be in it for the money.
but I believe no other industry has a greater gap between "i can't believe the shit I (have to) do at work" and "hobby" except in the many cases of voyeurs, stalkers, laissez-faire criminal investigators and passionate MiniTrue partisans, all of which are variations of the "true" human nature of the bulk of the population left after the many wars, including a great many of the ones who came home unharmed but with stories to tell
> But don’t be fooled. Just because AI can solve your school problems doesn’t mean it can solve the real-world problems you’re going to face in your work. (As of now, it can’t.)
This is a good point. And it’s unfortunate we can’t see how much these things are tuned for demos like solving classic HW problems.