What you should do or learn:
Algorithms and data structures – Complexity theory, optimizations, searching, sorting, cryptography, AI, graphics. Dig deep to the hardware level and learn about instruction sets, caches and architectures. Compilers and operating systems are the high end topics here.
Abstract background knowledge – quite theoretical. Lots of math, formal verification aka model checking, Turing machines, lambda calculus and type theory.
- The human side – project management, design patterns, UI design, psychology. You will have to deal with people, who think very different than you. Managers, customers and co-wokers may not be “into computers” like you are.
- Practice – with the Open Source movement, you have a wealth of projects, who would like to get a hand or two. You’ll learn to deal with people and foreign source code. You’ll also gain familiarity with some tools like version control, IDEs and wikis.
- Creativity – don’t forget to do other things. Music, design, drama or whatever you like. Your brain has two sides and not both are for logic. Creativity and outside the box thinking can be learned and nurtured.
- Personality feats – university is a good place to develop yourself. Learn to work with discipline, to stay healthy and fit and to be social! Train good habits and starve the bad ones! Read a lot!
The choice of the university is mostly important for the piece of paper you get at the end. The education you get depends on you.
COMMENTS