A reorganization of all the tech I tried to master. Here are the resources and tips I wish I could have when I started learning!
Update History:
- 10/18/2013: Add Formal Semantics for concurrent programs
- 10/17/2013: Add markdown
- 10/12/2013: Init the tech map
General
About E-book
I do not suggest Sina ishare and BookFinder because they may not be legal.
Coursera, Udacity
Coursera, Udacity and other online courses websites are the savior for those who cannot physically access to top educational resources.
Markdown
Strongly recommend using Mou to write in-class notes with Markdown (of course I mean mac here). Markdown is extremely simple (you may master it in 30 min?).
Git & Github
Create a repo on Github for your every project!
Branching is one of the key concepts in git. Here are some tricks but I never tried all of them.
Gmail
- Use Archive button, you can search to find them if you need.
- Manage several email accounts (e.g. .edu) altogether.
- Use tags and filters to categorize: filtering out ones containing “free food”
Goagent
For using the Internet wisely in some areas.
Google Calendar
Add your events, courses, appointments, notifications, all those with a specific time to Google Calendar.
For those without a specific time (e.g. homework), I recommendend Omnifocus, Mindomo, Workflowy.
Google Docs
Want editing simultaneously with your team members?!
RSS
If Google Reader is still alive, it will be the title. Currently I am using Feedly. I strongly recommend the following rss sources:
- Android Niceties
- Startup News
- Coolshell
- Your department notifications, such as SSE
- Warald
- 60-Second Science and other 60-Second xxx
- 糗事百科
- 落网音乐
Vim & Emacs
If you are in CS-related major, you MUST master at least one of them.
For Vim:
For Emacs:
- // TODO
Android
The documentation is the best teacher! Also, try this Asset Studio.
Coq
I strongly recommend learning Coq by reading through book Software Foundations. Luckily, it is availble online. I have made my solution repo private.. DIY!
Formal Semantics (for concurrent programs)
This is what I am currently learning. Read book On a Method of Multiprogramming at least first 3 chapters for the Owicki-Gries Theory.
Also check the slides here and here
After that, learn Rely-Guarantee. // TODO
Go
I haven’t tried Go yet, but this may help.
OS
The CS503 OS course in Purdue is much much better than that in TJ. Another reason may be that I was only a sophomore when I took OS course in TJ thus it may not be that helpful without enough background.
Anyway, the Xinu code is extremely helpful for its simplicity to read (original code is available here). The textbook Operating System Design: the XINU Approach is GREAT! Tell me if you also want the 899-page slides.
For implementing a tiny OS on your own, you can also refer to this and this. Although I did not finish those two books either..
Python
I started with Google’s Python Class. I reviewed using Codecademy. Do not forget to read the style guide for code and for doc.