Live data from Hacker News

Teach Yourself Computer Science

teachyourselfcs.com

111–120 of 273 posts

Re: Teach Yourself Computer Science

#112

Are you thinking or debating if getting a deeper understanding of CS will help you or your career? I am thinking of the same. Even though I have a Bachelor of Science (BSc) in Computer Science, it has been 14 years that I actually used any of it. I regret it sometimes since I know what it is to know how things work underneath the high level languages (PHP, JavaScript and Python for me). Lately I have started taking m…

A lot of people link CS with a career as software engineer for the web but leave out a lot of other software engineering and research opportunities. I get that a deep knowledge of CS doesn't always directly help while doing web development but it can really help in other area's of software development (embedded systems, OS, graphics, etc.)

Re: Teach Yourself Computer Science

#113

Are you thinking or debating if getting a deeper understanding of CS will help you or your career? I am thinking of the same. Even though I have a Bachelor of Science (BSc) in Computer Science, it has been 14 years that I actually used any of it. I regret it sometimes since I know what it is to know how things work underneath the high level languages (PHP, JavaScript and Python for me). Lately I have started taking m…

>> I know what it is to know how things work underneath the high level languages (PHP, JavaScript and Python for me)

I suspect this has helped you more than you seem to know. This knowledge opens doors; gets you jobs you couldn't otherwise get; and makes you a better programmer.

>> In Python (my language of choice for the last 7 years along with JavaScript) I do not really have to care about pointers, stack or heap allocation, how memory gets create or cleaned, etc. I also do not need to know if there is a virtual machine, a garbage collector, etc.

I have seen some horrendous Python code written by people who didn't understand these things. The Python VM "hides" them from you, but they're still relevant for writing fast, correct code as almost every operation in the language ends up using one or more of those "under the hood".

Best of luck with Rust and your startup!

Re: Teach Yourself Computer Science

#114
post #113

Are you thinking or debating if getting a deeper understanding of CS will help you or your career? I am thinking of the same. Even though I have a Bachelor of Science (BSc) in Computer Science, it has been 14 years that I actually used any of it. I regret it sometimes since I know what it is to know how things work underneath the high level languages (PHP, JavaScript and Python for me). Lately I have started taking m…

>> I know what it is to know how things work underneath the high level languages (PHP, JavaScript and Python for me) I suspect this has helped you more than you seem to know. This knowledge opens doors; gets you jobs you couldn't otherwise get; and makes you a better programmer. >> In Python (my language of choice for the last 7 years along with JavaScript) I do not really have to care about pointers, stack or heap a…

You are perhaps true about me not being aware that the core CS knowledge is helping me all the time. I have always been able to explain technical issues on a whiteboard all the way to the level of protocol or internals. And they have helped me immensely in my work.

I guess since I do not spend a lot of time in CS literature, I have the feeling I do not know much. But I guess I already have an edge at work without noticing it.

Thanks and best of luck to you!

Re: Teach Yourself Computer Science

#115

Can anyone with a CS undergrad from an elite US college (Stanford, Berkeley, MIT, Carnegie Mellon) comment on whether they feel their undergrad covered 100-200 hours worth of these subjects? As someone with an Australian CS degree, I feel like my curriculum covered less than half of this properly.

I went to Berkeley for undergrad.

Anyone in the EECS department who was serious about a future in programming took, at a minimum, two courses on algorithms / data structures (CS61B / CS170), one of which was required for the degree. I suspect that's partially covered by what any crack-the-coding-interview study course would try to teach you anyways (dynamic programming, tree / graph traversal; NP completeness and reductions probably less so).

In general, each CS course at Cal had ~3 hours a week of lecture, 1-3 of discussion / labs, and ~2-10+ hours of homework, varying on the individual and course (not to mention whatever auxiliary studying one might do for exams). With 15 weeks of instruction, that adds up to a minimum of 90 hours, but realistically, 200 might not even begin to describe some courses. A full courseload might look like 4 classes (potentially 3 CS classes + 1 humanities course) and is designed to be ~40 hours a week.

Agreed with the sibling comment that this list seems to have a number of notable omissions -- in particular, it looks to be very systems-oriented. But I also don't think that you _need_ all these courses to be a fully-fledged programmer. Sure, knowing how compilers / languages work might make it easier to pick up more languages, but learning languages across multiple programming paradigms (e.g. functional vs imperative vs declarative), which you'll get anyways if you follow this course list, is more valuable than implementing a recursive descent parser (which will make you really understand one language).

When I went there, Berkeley didn't have an undergrad course dedicated to distributed systems. But, to be fair, the MIT course listed is graduate-level. That seems to be the biggest outlier, as half the catalog consists of intro-level courses at Cal: Programming, Computer Arch, Math for CS, Algos / Data Structures (at least, the first half of the lectures mirrors CS61B; the latter half is closer to CS170).

If I had to suggest a sequencing based on the course parallels, I'd go with:

Core: Programming -> Computer Arch, (Math for CS -> Algorithms / Data Structures)

Intermediate: OS / Networking / DBs / Compilers

Advanced: Distributed Systems (probably want OS / Networking as prereqs, at a minimum)

But, I'd expect a small portion of undergrads took all of the intermediate topics, much less distributed systems.

Regularly-offered upper div courses that evidently didn't make the cut, off the top of my head: Security (this is a big one, IMO), AI, Graphics, Software Engineering, HCI, Computability / Complexity (automata theory among other things), Computer Architecture (beyond the intro-level treatment). Supposedly ML also started being regularly offered for undergrads (CS189).

Re: Teach Yourself Computer Science

#116
post #94

Are you thinking or debating if getting a deeper understanding of CS will help you or your career? I am thinking of the same. Even though I have a Bachelor of Science (BSc) in Computer Science, it has been 14 years that I actually used any of it. I regret it sometimes since I know what it is to know how things work underneath the high level languages (PHP, JavaScript and Python for me). Lately I have started taking m…

Of course everyone should learn because otherwise they will be left behind with pay or life in general. Just setting it up in a negative way should not be there like "type 1 vs type 2". There is much more to be achieved when you are nice to people and learn to cooperate in a helpful way than when you are master of algorithms and low level operating system details.

I think it is not intentionally set up as negative. I think it is our perception since learning is hard. I have failed a lot in the last many years to learn (relearn) deeper concepts even though I wanted to.

So when I see "type 1/2" I automatically feel pressured. But that is my own incapability to stick to the subject, the books. My own procrastination. Learning is hard, escaping with an excuse about ego is way easier. Rust is already teaching me this.

Re: Teach Yourself Computer Science

#117

Are you thinking or debating if getting a deeper understanding of CS will help you or your career? I am thinking of the same. Even though I have a Bachelor of Science (BSc) in Computer Science, it has been 14 years that I actually used any of it. I regret it sometimes since I know what it is to know how things work underneath the high level languages (PHP, JavaScript and Python for me). Lately I have started taking m…

I want to add something to this, something that I am understanding now perhaps because I have slowed down as a person. Learning is HARD, really really hard. More so when there are tons of social, professional and personal distractions.

On top of this I am chased by procrastination. I have gotten a much better grip at this. But just as an example - I have tried learning Rust at least 4 times before since Rust got highlight on HN I guess. I failed each each one. This time, I have at least gotten to the point where I opened the documentation on Vectors! My goodness, who am I? Complete lack of patience.

This directly causes me to sense pressure when I see statements like "type 1/2" engineer. It is not the material that is attacking me. It is my own failure hiding under the shelter of ego.

Re: Teach Yourself Computer Science

#120
post #32

Has anyone here learned a subject by going through one of these "teach yourself" lists? I've learned most of what I know about computers on my own, but it wasn't from following a list of textbooks. And when I've tried to follow a course like this for other subjects, despite my initial interest, I've found myself unable to make it through more than a couple chapters of the first textbook before running out of steam. B…

I have used similar lists to go from almost entirely self taught to having finished a half dozen CS and FP courses at my own pace. At one point in my life I was keeping up a GitHub streak every day by just pushing a couple exercise answers to a private repo. After a while, I really had to go looking to find challenging enough work to keep me engaged. Books with homework like SICP, FP in Scala, Let Over Lambda, Software Foundations, Haskell from First Principles, Land of Lisp, and Progamming Languages all really offered a lot of homework to keep the streak up.

The streak really is a super power for self study of any form. It's so hard to ignore a 1600+ day streak even when you don't feel like it.

When Github took that streak counter down, I was crushed, combined with me taking a management heavy job (encouraging me to read a lot about soft skills), it really collapsed the whole system for me. One day I'd love to pick it back up, but right now I'm doing the same thing with violin as an adult learner, so that's taking up that time I'd otherwise spend on CS.

Post reply on HN