Loading repository data…
Loading repository data…
nushackers / repository
Notes to (NUS) Computer Science Freshmen, From The Future (Original by @ejamesc)
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
Ported over from the original document.
The mailing list announcement that started it all (23 August 2012): Link to thread
Early into the AY12/13 academic year, Prof Tay Yong Chiang organized a supper for Computer Science freshmen at Tembusu College. The bunch of seniors who were gathered there put together a document for NUS computing freshmen. This is that document.
Feel free to create a pull request to edit or add to it, and share it with other freshmen you know.
You’ll probably want to start with some general advice written for undergraduates/beginners in Computing. Read:
The sites from which the above articles are available are generally good places to read from. Also, follow some Computer Science blogs and sites:
Paul Graham's Essays - Paul Graham leans towards startups but his earlier essays on programming, technology and work are worth reading. Particularly influential: Python Paradox and Maker’s Schedule, Manager’s Schedule
Joel On Software - Start by reading his Reading Lists on the right
Stevey's Blog Rants - Mostly entertaining, but there are a few articles that are required reading. In particular, the unofficial guide to getting hired at Google - which even Googlers refer potential hires to - Get That Job at Google and his tour of programming languages Tour de Babel
Coding Horror - Generally good, techy posts by one of the founders of Stack Overflow
Scott Aaronson: Shtetl-Optimized - Theoretical Computer Science
Lambda the Ultimate - Group blog that tracks innovations in Programming Languages research
Hacker News - Hacker News; just about everyone in computing reads it.
80000 Hours - The one-stop shop to explore the ideas around Effective Altruism: using your career to do good. Even if you are not interested in Effective Altruism, there are a lot of resources to guide you in the process of career planning. You are likely to keep coming back to these ideas through your career journey.
Farnam Street Blog - A blog maintained by a former Canadian spy who has summarized the kinds of mental models involved in learning and decision making.
Study Hacks Blog - Cal Newport, a professor at the Georgetown University and a go-to productivity guru, provides great tips to get the most juice out of your study time. Applies to technical and non-technical courses alike.
Scott Young's Blog - Scott Young is famous for his MIT challenge: learning the 4-year undergrad curriculum in 1 year. Of course, the curriculum he followed is not an exact mirror of the actual curriculum and there's some scope for doubt with regards to the evaluation for some of the courses, but the main point is that you will learn better through dedicated practice: pushing through a level of ability that is slightly higher than your current level with consistency.
Because we just have to have some hero worship, don't we? ;-)
Use the checklist below to get a rough measure of your knowledge.
If you have a Mac, start playing around with your terminal.
If you don’t, figure out how to install Virtual Box and then figure out how to install a Linux distribution on it.
Recommended ones are:
Ubuntu (Most user friendly?)
Arch Linux (minimal Linux distro. Good for those who likes to poke around and install stuff on your own. Not newbie friendly.)
Manjaro Linux (An Arch derivative that aims to be more user friendly than Arch; good if you want a more up-to-date distro without too much pain)
CentOS (Most battle tested, loved by sysadmins who treasure their sleep)
Unix is required knowledge. As is familiarity with the shell (figure out what that means ;-) (Also, figure out what sudo rm -rf / means before trying it out) (And :() { : | : & };: )
Learn an editor - either emacs or vim. They will save you a lot of time when you’re coding for CS2105. Actually, in pretty much everything else in life, as well.
Vim
Emacs
:bomb: :gun: Pew! Smoking all the other editors :wink:
Know some regex-fu.
Pick a project to trick yourself into learning new technologies. Drop by Hackerspace.SG
Attend NUS Hackers events. The club was created, years ago, by the same people who founded Hackerspace.SG
Intern.
Sign up for Google's Summer of Code
Work for a research lab for peanuts (only recommended if you really want to learn the techniques from that lab, or you want a career in academia).
If you need something to trick yourself into tricking yourself, take CS3216/CS3217.
Read code - lots of it - there’s a whole truckload of it available online
Learn and use version control. Thank us later.
For Mercurial - there’s a great guide written by Joel Spolsky.
For Git - read Pro Git chapters 1-5, and skip chapter 4. Come back and read the rest after you’ve used Git for awhile.
Set up a http://github.com account.
‘Follow’ a few famous programmers.
Start a few projects and show them off there.
Also, don’t forget to give back to the community. Contribute to popular open source projects by sending in pull requests on github.
Some awesome open source NUS projects include: