Remix.run Logo
Beej's Guide to Learning Computer Science(beej.us)
140 points by intelkishan 3 hours ago | 22 comments
alexchantavy an hour ago | parent | next [-]

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

Man this is so true

zwnow 20 minutes ago | parent [-]

There's also a huge difference between liking to program and liking to work as a programmer. I despise the latter as business programming takes the joy out of everything. Trying to educate management about the current boundaries of the product or having to work extra hard because a product manager promised features that dont yet exist is exhausting. Not being allowed to work on fixing tech debt while having to build on top of it is pain. Doesn't help being a solo dev in a start up either so maybe that's the issue.

matt3210 2 hours ago | parent | prev | next [-]

Beej taught me networking in c in the early 00s. He will now teach my son computer science in the 20s. The circle of life.

silisili an hour ago | parent | prev | next [-]

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.

zwnow 25 minutes ago | parent [-]

Yea agree, free educational content is worth so much. Especially in a world where everyone wants to make a quick coin by selling courses or whatever. Would never have looked into C if it wasn't for beejs guide, as that other book that's often recommended is as dry as math books...

pygar 2 hours ago | parent | prev | next [-]

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)?

randmeerkat 2 hours ago | parent | next [-]

Khan Academy https://www.khanacademy.org/

chrisweekly 2 hours ago | parent | prev | next [-]

https://betterexplained.com is a goldmine

umanwizard 2 hours ago | parent | prev [-]

My advice is to (re-)learn elementary algebra to a proficient level before attempting any other branch of math. That is a core prerequisite for absolutely everything. By elementary algebra I mean roughly everything in classes called “Algebra” or “pre-calculus” that you learn in an American high school before calculus. Geometry and trigonometry can’t hurt either but algebra is more central.

tresdots an hour ago | parent [-]

For as much as I've learned in the last 10 years of being a software engineer, I've frankly forgotten at least half of the maths I once knew.

Of course, I could take the time to re-learn it all if need be, but I'm definitely thankful to have went straight from high school into college. Having to re-learn everything just to be at baseline would make the whole experience far less enjoyable. Kudos to those that have done so.

hahahacorn 2 hours ago | parent | prev | next [-]

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.

bencornia 2 hours ago | parent [-]

I recently read his networking guide as part of a class and it was invaluable. It gets you up to speed without overwhelming you with detail. It's a lightweight read.

chrisweekly 2 hours ago | parent [-]

That sounds like HPBN (High-Performance Browser Networking), an awesome and accessible resource everyone doing anything w the web should read. https://hpbn.co (not .com)

elseweather 2 hours ago | parent | prev | next [-]

Beej's guide to network programming is an all-time classic, and I suspect this is the same (even before I've read it thoroughly).

zeeqeeng 2 hours ago | parent | prev | next [-]

I've had Beej's Guide to C, and I would say it's the best C learning material for myself ever.

Madmallard 22 minutes ago | parent | prev | next [-]

What does this matter now? It seems like economic collapse and the destruction of value coming out of programming is basically imminent

ares623 2 hours ago | parent | prev | next [-]

Thank you Beejus

imvetri 2 hours ago | parent | prev | next [-]

Thanks for this !

pmontra 2 hours ago | parent | prev [-]

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.

hahahacorn an hour ago | parent | next [-]

> 1 Foreword

> Are you getting into Computer Science, or thinking about it? Or maybe you’re in it already. This super-high-level guide is for you!

> I’m not going to talk about how to write code (much). I’ll I’m going to talk about in these roughly 40 pages is more about how to learn when you’re a nascent software developer.

Page 1

johnnyanmac an hour ago | parent | prev | next [-]

I see it as "learning how to learn", not directly learning itself like a curriculum. It's more for those who want to build proper study habits.

Reading the chapter of AI seems to support that feeling. It was about tips on where to use it, where to not use it as a shortcut, how to be critical of any output, and some personal speculation.

kaladin-jasnah 2 hours ago | parent | prev [-]

What about operating systems, architecture, compilers, networking, and the like? I have seen people argue that computer science is the more theoretical side of things, but many university CS programs cover both systems and theory (or sometimes skew to one side).