6 ms·
"If you can't answer the majority of the questions on these four papers, and you're working or intend to work as a software developer, you should ask yourself w
by modernerd 14y ago
"If you can't answer the majority of the questions on these four papers, and you're working or intend to work as a software developer, you should ask yourself why — most likely you're either you're missing something you really should know, or you're lucky enough to be working within a narrow area where your deficit doesn't matter."[1]
I'm a self-taught front end web developer who didn't have a traditional computer science education. I'm looking to move into general software development, and I can't answer any of the questions on the first paper without cheating.
Can anyone recommend specific online courses or books for the four proposed papers[2] to fill the gaps in my knowledge without spending three years at Oxford?
[1]: From the original post at http://www.daemonology.net/blog/2012-10-08-software-development-final-exam.html http://www.daemonology.net/blog/2012-10-08-software-developm...
[2]:
1. Algorithms and Data Structures
2. Computer Architecture and Operating Systems
3. Mathematics
4. Networking and Systems
- smanek 14y agoFor algo/datastructures, CLRS (http://www.amazon.com/Introduction-Algorithms-Thomas-H-Cormen/dp/0262033844 http://www.amazon.com/Introduction-Algorithms-Thomas-H-Corme...) is the gold standard. For OS's, Tanenbaum (http://www.amazon.com/Modern-Operating-Systems-Andrew-Tanenbaum/dp/0136006639 http://www.amazon.com/Modern-Operating-Systems-Andrew-Tanenb...) is popular. 'Math' is broad - if I can recommend only one book to cover all of Math I'd probably say 'The Road to Reality' (http://www.amazon.com/The-Road-Reality-Complete-Universe/dp/0679776311 http://www.amazon.com/The-Road-Reality-Complete-Universe/dp/...). More practically (for the subset of math most programmers are likely to care about), you'll do fine with one good discrete math book and one linear algebra book. Throw in one each on Stats, Abstract Algebra, Calc (up to ~diffeq), and Real Analysis (in roughly that order) if you're a bit more ambitious ;-)
- mvanga 14y agoI just wanted to add that I felt Tanenbaum's Modern Operating Systems was a tad light on some of the core topics (especially when trying to get a good grip on the issues behind concurrency). I personally recommend the book by Silberschatz: http://www.amazon.com/Operating-System-Concepts-Abraham-Silberschatz/dp/1118063333 http://www.amazon.com/Operating-System-Concepts-Abraham-Silb... I also think for understanding how operating systems work, nothing beats writing your own! I learned most of the concepts by building a toy OS during the better part of my undergraduate studies. I highly recommend this for people who like coding and are afraid of jumping into the theory too quickly. For example, analyzing memory allocation algorithms is never as interesting as when you have to pick one for your own kernel!
- cperciva 14y agoI haven't looked to see if every question is covered by these, but here's some standard textbooks I like: Algorithms and Data Structures: http://www.amazon.ca/Introduction-Algorithms-Thomas-H-Cormen/dp/0262033844 http://www.amazon.ca/Introduction-Algorithms-Thomas-H-Cormen... http://www.amazon.ca/Algorithms-4th-Robert-Sedgewick/dp/032157351X http://www.amazon.ca/Algorithms-4th-Robert-Sedgewick/dp/0321... Computer Architecture and Operating Systems: http://www.amazon.ca/Computer-Architecture-Quantitative-John-Hennessy/dp/012383872X http://www.amazon.ca/Computer-Architecture-Quantitative-John... http://www.amazon.ca/Design-Implementation-FreeBSD-Operating-System/dp/0201702452 http://www.amazon.ca/Design-Implementation-FreeBSD-Operating... Mathematics: http://www.amazon.ca/Calculus-James-Stewart/dp/0495011606 http://www.amazon.ca/Calculus-James-Stewart/dp/0495011606 http://www.amazon.ca/Introductory-Statistics-Prem-S-Mann/dp/0470444665 http://www.amazon.ca/Introductory-Statistics-Prem-S-Mann/dp/... http://www.amazon.ca/Introduction-Mathematical-Cryptography-Jeffrey-Hoffstein/dp/0387779930 http://www.amazon.ca/Introduction-Mathematical-Cryptography-... Networking and Systems: http://www.amazon.ca/Computer-Networks-5th-Andrew-Tanenbaum/dp/0132126958 http://www.amazon.ca/Computer-Networks-5th-Andrew-Tanenbaum/... http://www.amazon.ca/Database-Management-Systems-Raghu-Ramakrishnan/dp/0072465638 http://www.amazon.ca/Database-Management-Systems-Raghu-Ramak... http://www.amazon.ca/Distributed-Systems-Principles-Andrew-Tanenbaum/dp/0130888931 http://www.amazon.ca/Distributed-Systems-Principles-Andrew-T...
- modernerd 14y agoThank you. I'll get reading! Thanks also for proposing the test and posting the papers online. It's hard to discover what level of knowledge is assumed of software developers if you've never worked in a large team and haven't entered the field via graduate or postgraduate study.
- cperciva 14y agoYes, although I didn't get around to mentioning it in my introductory blog post, "self-taught" developers are part of why I'm doing this.
- irahul 14y ago> I haven't looked to see if every question is covered by these, but here's some standard textbooks I like: The good thing is @cpervica has suggested standard textbooks, as opposed to suggesting obtuse texts unreachable to a beginner. Algorithms: I think a beginner might be confused by Sedgewick's terse coding style. Computer Architecture and Operating Systems: I haven't read either of the books. I would add http://bcs.wiley.com/he-bcs/Books?action=index&itemId=0471694665&itemTypeId=BKS&bcsId=2217 http://bcs.wiley.com/he-bcs/Books?action=index&itemId=04... to the list. Like most of the OS books, you won't get a full picture of the OS from this book, but you will know the topics which will help you understand a real OS. Also most of the non-recent book won't cover flat memory model http://en.wikipedia.org/wiki/Flat_memory_model http://en.wikipedia.org/wiki/Flat_memory_model That is not to say knowing about segmentation is going to hurt you. Mathematics: I haven't read any of the books. From TOC, the cryptography and the statistics book looks good. I would recommend skipping cryptography maths for starters. If you are a beginner, an application level understanding of cryptography is what you need. Networking and Systems: Tanenbaums books loves history and theory. It's a nice book nevertheless. Once you are done with it, you should read Stevens' book on TCP/IP http://www.kohala.com/start/tcpipiv1.html http://www.kohala.com/start/tcpipiv1.html If you find time, you should read the second volume as well: http://www.kohala.com/start/tcpipiv2.html http://www.kohala.com/start/tcpipiv2.html For databases, I read this book: http://www.amazon.ca/Database-System-Concepts-Abraham-Silberschatz/dp/007124476X/ref=pd_sim_sbs_b_2 http://www.amazon.ca/Database-System-Concepts-Abraham-Silber... This is not a very interesting book, but it does cover the fundamentals very well. You will need a bit of will power to read it.
- henrik_w 14y agoCoursera has several algorithm classes. I took Design and Analysis of Algorithms I (https://www.coursera.org/course/algo https://www.coursera.org/course/algo) from Stanford last spring. I thought it was really good, reviewed it here: http://henrikwarne.com/2012/05/08/coursera-algorithms-course/ http://henrikwarne.com/2012/05/08/coursera-algorithms-course.... There is also another algorithm course from Princeton on Coursera. Class central (http://www.class-central.com/ http://www.class-central.com/) is a good resource for seeing what is about to start.
- csomar 14y agoI'm also on the same boat and taking Udacity courses. I have noticed, however, as Front-End development progress and gets more complicated, that general CS knowledge will be of great use. I took the CS101 last month. The only new thing I learned was Hashes. However, I think it was well worth it. Hashing is probably one of the most important concepts in CS. Also the course was entertaining. It helped me also review old code I wrote. I figured two cases where I can use hash functions to speed up code. I'm taking the Software Testing, and Design of Computer Programs this month. If you are free (no job/freelancing/errands...), you can do each course in 7-10 days. Granted, you'll be fully committed to them. That is, you can* do these 3 CS years in just 3 months. * depends on your mental abilities; but I think as a self-taught Front-End, you'll tackle it.
- Aloush89 14y agoYou can check the courses taught on coursera: - Algorithms part I - Algorithms, design and analysis. Part I - Computer Architecture - Calculus : single variable - pre-calculus - introduction to logic - introduction to computer networks
- cunac 14y agodamn I didn't know am so lucky for last 35 years or maybe life is different than exams ?
- damian2000 14y agoHighly recommend this free online course given by Robert Sedgewick from Princeton. https://class.coursera.org/algs4partI-2012-001/lecture/index https://class.coursera.org/algs4partI-2012-001/lecture/index He covers all the questions in this, except the last one regarding graphs.