Please click on each item to expand:

A. Productivity Tools
Here is a list of software that I use frequently, and encourage students to learn them or some equivalent:
Of all these productivity tools, there is one that I think every student should take to heart: learn to use a keyboard-based editor! Do not be fooled by the appeal of WYSIWYG
editors (like "MS Word"). The appeal of WYSIWYG is its small learning curve.
But editing in WYSIWYG mode requires you need hand-eye coordination -- this slows you down considerably! Plus you cannot invoke macros -- except pre-canned ones by slow drop-down menus, etc, etc. Which keyboard-based editor to choose? I highly recommend "gvim" (one of the many free variants of "vi").
B. Math Tools
Linear Algebra is absolutely essential in any mathematical areas of computer science.
Here is a good place to brush up basics like how to solve linear equations:
C. Makefiles
Makefiles (or variants) are behind every large software and inside your IDE's.
You can simply lots of common tasks by writing your own Makefiles.
Here is a quick reference:
      manual from
See Section 3.7 for how a Makefile reads another Makefile (possibly itself)!