50+ Killer Online Resources for Computer Science Students
January 14th, 2008 by Jesse Hsia
VirtualHosting.com have posted “50+ Killer Online Resources for Computer Science Students”, an article with links to online resources on topics such as Advice, Money, Career, etc. Some of the notable resources I found in there:
- Computer Science Jobs: Myths vs Truth - explains the myth around all the computer jobs moving to India.
- Why Choose a PHD in CS
- Joel Spolsky on Software - just an excellent blog, make sure you read it if you don’t already!
Check out the article for the full list.

Regarding Joel Spolsky’s article:
1. Learn to write before graduating.
I am absolutely certain that much of my career,
spanning the years 1975-2008,
depended on my writing ability.
One of my earliest publications (1983) was a
style guide for EPA software developers.
When I was part of a research team,
I was often the one who drafted and edited
the reports, whether scientific journal articles
or reports back to funding agencies.
Once the Web became so essential for research
communication, writing skills became even more
important.
More later….
… continuing
UCI had a very good Writing department when I was there.
I have also been, at times, a member of the Society for
Technical Communication (stc.org). I’m sure there is a
chapter near UCI. I seem to remember going to meetings
in Anaheim in the early 1980’s.
Learn not only to write, but also to present,
in 15 minutes, in 30 minutes, in an hour,
in a day long workshop, what it is that you have to say
to the world, and the people who want to provide
financial support for your work.
Learning Presentation Skills is important.
I have seen upper management humiliated by poor
presentations by their technical staff
(who then must take mandatory presentation skills training).
Learn how to tell a story.
Regarding the other points in Joel’s article:
2. Learn C
I’m older than the C. My first software development
project was in APL (that functional language), and
most of what I have been paid for over the decades
I did software development was in Fortran of one sort
or another (not counting things like http, troff, assemblers,
Excel macros or “hello world” type demos in almost any
language). C never made much difference to me, and it
is pretty historical at this point.
3. Learn microecon
Well, only if you want to be a manager or entrepreneur.
In which case, get an MBA. You can take econ there.
4. Don’t blow-off “boring” non-CS classes.
For two reasons: life is more than CS. I know excellent
software engineers who are also very good at music,
philosophy, history, and motorcycle mechanics.
The other reason is that many CS classes have a much
shorter shelf life than non-CS classes.
My class in rudimentary digital design might has well
have been in steam locomotive design.
But my philosophy and history classes are still relevant.
5. Take programming-intensive courses.
I disagree with Joel. You must learn how to code
very well. But that does not have to be in class.
My most useful CS classes were actually theory classes.
Data structures; automata theory; normal forms;
computability; complexity.
The nitty-gritty of programming will change over time,
and as career develop over the decades, that will probably
be less important than a good theoretical base in computing.
6. Stop worrying about all the jobs going to India.
True. I know more CS people moving back to Ireland,
China and Korea than India.
Check out china.nba.com
7. Get a good summer internship
Or some other work experience. This is much more
important now than in past decades, perhaps because
fewer CS grads have real world experience already.
This year I will be, for the second and final time,
coordinating CS Summer Programs at UC-LBNL.
Last year we probably had about 40 summer students,
from incoming freshman to doctoral students,
funded by a variety of sources.