Earlier quoted context omitted.
I got an interview that involved part 2 (substring search), which I solved using KMP.
senior interview or new grad?
Teach Yourself Computer Science
111–120 of 273 posts
Re: Teach Yourself Computer Science
#112Are 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…
Re: Teach Yourself Computer Science
#113Are 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 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
#114Are 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…
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
#115Can 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.
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
#116Are 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.
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
#117Are 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…
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
#118Re: Teach Yourself Computer Science
#119Re: Teach Yourself Computer Science
#120Has 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…
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.