“Knowledge is the food of the soul”— Plato.
Acquiring new skills is so essential today. Mastering a challenging skill is advantageous as you can command a higher salary. The harder it is to learn a skill, the better.
Given that Computer Science is one of the most sought after degree in the 21st century, it is worth investing your time to learn it. If you are thinking of majoring in CS, these resources could be helpful for undergraduates or beginners. You can refer to NUS Hackers FB group for the full version of the article “Notes to (NUS) Computer Science Freshmen, From The Future“, published by a group of NUS seniors. Otherwise, here’s my summarized version below.
7 Articles to read before majoring in Computer Science
- Teach Yourself Programming in Ten Years (Peter Norvig)
- How to start a startup and What You Wish You’d Known (Paul Graham)
- How To Become A Hacker (Eric Steven Raymond)
- The Joel Test: 12 Steps to Better Code (Joel Spolsky)
- Letter To A Young Programmer Considering A Startup (Alex Payne)
- Four Steps to Google, Without a Degree (David Byttow)
7 Computer Science blogs to follow
- Paul Graham – His earlier essays on programming, technology and work are worth reading.
- Joel Spolsky – He published 1114 articles about software development, management, business, and the Internet.
- Steve Yegge – There’s quite a few articles on his move from Google to Grab on his new blog
- Jeff Atwood – Founder of Stack Overflow
- Scott Aaronson – Covering Theoretical Computer Science
- Lambda the ultimate – Group blog that tracks innovations in Programming Languages research
- Hacker News – Posts related to Computer Science, work ethnic, philosophy etc
7 Computer scientists/Programmers that you should know
Some of the best programmers in the world
- Ada Lovelace: World’s first computer programmer and was chiefly known for her work on Charles Babbage’s early mechanical general-purpose computer
- Niklaus Wirth: Swiss computer scientist who is regarded as a pioneer of computer programming among other fields in software engineering
- Bill Gates: co-founder, ex-executive officer and current chairman of Microsoft, which is the world’s largest personal-computer software company
- Guido van Rossum: Dutch computer programmer who is the author of the popular Python programming language that is wildly used today
- Ken Thompson: Designed and implemented the original Unix operating system and also invented the B programming language (the direct predecessor to the famous C programming language)
- Donald Ervin Knuth: Dubbed as the “Father of the Analysis of Algorithms” with his contributions to the rigorous analysis of the computational complexity of algorithms and systematized formal mathematical techniques for it.
- Brian Kernighan: Father of analysis of algorithms for his contributions to the field of analysis and computational complexity of algorithms
- Programmer Competency Matrix: Use the checklist below to get a rough measure of your knowledge.
Blogs about PhD Programs in Computer Science
- Applying to Ph.D. Programs in Computer Science (Mor Harchol-Balter, Carnegie Mellon University)
- A CS Graduate School Survival Guide (Ronald T. Azuma, UNC Chapel Hill)
- Ph.D. Grind (Philip Guo, Assistant Professor of Cognitive Science – UC San Diego)
Musings about Programming Languages and game programming
- Research in Programming Languages (Cristina Lopes)
- Rich Programmer Food (Steve Yegge)
- So you want to be a video game programmer? (Andy Gavin)
Must-read books on CS
These are books that are widely recognized to be seminal in computing.
- SICP (an introduction to programming that’s pretty much the best out there. Note: not many people have finished this, though).
- The Mythical Man Month (a classic in Software Engineering)
- CLRS (the book on algorithms)
- Modern Operating Systems (the book on Operating Systems)
- The Dragon Book (the book on compilers)
- The Cinderella Book (the book on the theory of computation)
- Russell & Norvig (the book on Artificial Intelligence)
- Paradigms of Artificial Intelligence by Norvig
- Gang Of Four (the book on Design Patterns)
- The New Turing Omnibus (a preview of everything in Computer Science)
- The Art of Computer Programming (a review of everything in Computer Science; pretty much nobody, save Knuth, has finished reading this)
- The C Book (worth reading for its style, influence and brevity).
- The Pragmatic Programmer
- The Passionate Programmer (My Job Went to India)
- Pragmatic Thinking and Learning
- Hackers & Painters by Paul Graham
- Clean Coder by Uncle Bob
- Little Book of Semaphores (Good for OS and parallel programming modules)
- The Performance of Open Source Applications