Found in 3 comments on Hacker News
rramadass · 2019-09-20 · Original thread
You might find the following useful.

* Network Algorithmics,: An Interdisciplinary Approach to Designing Fast Networked Devices - https://www.amazon.com/Network-Algorithmics-Interdisciplinar...

* See MIPS Run - https://www.amazon.com/Morgan-Kaufmann-Computer-Architecture...

* UNIX Systems for Modern Architectures: Symmetric Multiprocessing and Caching for Kernel Programmers - https://www.amazon.com/UNIX-Systems-Modern-Architectures-Mul...

* Advanced UNIX Programming - https://www.amazon.com/Advanced-UNIX-Programming-Marc-Rochki...

samratjp · 2010-04-06 · Original thread
Well, even not half-decent schools (the good ones) accept non-cs folks, but with the stipulation that it would serve you better if you came from a math background (engineering, etc.)

What the admissions folks want to know is whether you can handle the workload and can contribute something of significance in the form of a thesis or a project. As about workload, you will invariably encounter systems programming, operating systems, compiler construction and some theory class. Of course, this may not be true everywhere but is an indication of a good grad program's basic requirements. To succeed in those classes (and beyond), you would be advised to have a good grasp of at least C, Java or C++, data structures and algorithms.

Now, if you really want to go through with this, you can succeed if you spent some time studying. Start with MIT OpenCourseWare. Master the intro class with python as a gentle intro (checkout Google's Python class for great intro). Then write those some programs in Java. Then, write those same programs using Object Oriented Programming.

Then look into data structures (arrays, lists, hashes, trees) and the big algorithms (start with path finding - dijkstra, other shortest paths, sorting, and if you have time - strongly connected components, suffix tries, etc.) Another big concept you need to understand is Big O notation - something that tells you how complex a given program or algorithm is (it's nice to know sometimes to compare one algorithm to another on basically how fast it can run - e.g a big O of n^2 O(n^2) is worse than O(n))

Now, all of the above is just good preparation for the fun parts you will do in a Master's. You should spend some serious time hacking around with C (get this book - http://en.wikipedia.org/wiki/The_C_Programming_Language_%28b...). The best way to play around with C is to mess around with Systems Programming in UNIX. Get Systems Programming book (http://www.amazon.com/Advanced-UNIX-Programming-Marc-Rochkin...)

Having said all of the above, do you know what you are interested in doing with a degree in C.S? There are some nice interdisciplinary programs where you may not have to do all the hardcore stuff I mentioned above but still dabble into as much detail as you'd like. Look into programs like Michigan's School of Information, for example.

Hope that helps.

gte910h · 2010-03-23 · Original thread
This post only contains non-aff links

While I'm certainly good at C, and have been the guy people asked the C and C toolchain questions at a couple places I've worked, I'd say you're in for more than 1 book to grok the topics you've expressed interest in, and haven't met the single book that does all you want.

1: If you're a python programmer, I do suggest staying with pure C and AWAY from C++. You have little use case for it if you can mix python and C and it is literally pain incarnate while you do not know every little bit of it and/or work with people who do not know every little bit of it.

2: Secondly, a single book on C will not get you where you're going. You will need several.

3: I'd stick with K&R for reference, but then go to the following two books for threading and all the other stuff like networking:

You need these two books to get down C and it's ecosystem (make, autotools, etc): Advanced Unix Programming by Rochkind (Really good explanation of signals especially): http://www.amazon.com/Advanced-UNIX-Programming-Marc-Rochkin...

Gnu/Linux Application Programming by M. Tim Jones (Recovers some of the same stuff as AUP, but does better with the toolchain): http://www.amazon.com/GNU-Linux-Application-Programming/dp/1...

If you want to go more advanced, this is likely the correct book: Advanced Programming in the Unix Environment: http://www.amazon.com/Advanced-Programming-UNIX-Environment-...

Although if you're diving deep into networking, this is likely the correct book: Unix Networking Programming: Vol I by Stevens:

http://www.amazon.com/Unix-Network-Programming-Sockets-Netwo...

Fresh book recommendations delivered straight to your inbox every Thursday.