A fantastic encapsulation. If you inherit this wisdom you will by polymorphism become a type of developer - cheesy, isn't it?evildictaitor said:Make sure you know how to program before you start reading books. Your course will undoubtably teach you Java upto a sensible level and will almost certainly have one or two semesters and projects in C, so get these done before you try and read books.
1. Make sure you know Java. Really know. Make sure you could do the following:
a) Make a function that given a character, returns the character as lower case (if between 'A' and 'Z', or returns the original character).
b) Can implement a linked list in Java
c) Can implement an interface for a hypothetical button
d) Could implement (using Swing or just the console) and implementation of the "Game of Life"
2. Make sure you know C. You don't need to know a lot of C, but enough to at the very least:
a) Implement a vector structure and a function add_to_vector(struct vector v, void* elem) where the vector expands to allow more elements in. Make sure it doesn't memory leak.
b) Implement a self-sorting binary tree structure and a function add_to_tree(struct tree, struct elem) that adds the element to the binary tree and a function delete_from_tree(struct tree, struct elem) that finds the element and removes it correctly without memory leaks
3. Now you are ready to learn from books. Don't try and learn programming from books (it doesn't work) and don't try and read the books before you can program - if you can't program you'll struggle on your course regardless of how much theory you know. With good programming experience you'll learn the theory faster anyway.
Here's my suggestions:
The New Turing Omnibus is a really good intro into lots of the theory behind programming, and will give you a massive head start in your theory classes.
The Mythical Man Month is another particularly brilliant book - it's not so much concerned with programming per se, but gives a lot of insight into how programmers (and their managers) think, and thus is a great way to start to understand the thought processes behind many of the decisions you'll be faced with at University and beyond.
Goedel, Escher, Bach: An Eternal Golden Braid is somewhat more maths-y but is once again a brilliant book that will help you understand the subtleties of the limitations of computer science (and math)
In my experience, you're not a developer until you leave university. You have a bunch of modules at uni, that allow you to ascertain the slant that is compatible with your nature. Intertwined with the above, will be course work and research on the internet, evaluating a customers requirements, database structure and schemas, gaming, graphics, security and so forth. At Leeds uni you get to learn Python, C and Java. Most students I've met really struggle with C as they are usually taught Python first.
All in all it is a very big pond you are jumping into - some would say ocean - and Silverlight and Ajax may not be as prominent until your departure. It is important that you learn computing and not anything as specific as .NET which however popular, is all but a minutiae in the world of computing.
I have learnt the most from writing code. Write write and write some more. Otherwise you are as Eric Meijers puts it "a vegetarian butcher", i.e. you know all the theory but don't know how to actually write anything.