Posted By: mastermine | Aug 14th, 2008 @ 6:40 AM
page 1 of 2
Comments: 26 | Views: 1118
mastermine
mastermine
See.Hear.Frag
Today I got accepted to do a Computer Science Degree at Stafford University http://www.staffs.ac.uk/study_here/courses/computer-science-tcm428340.jsp#what_do

Can anyone recommend any books or stuff I'm going to need.


You should be able to get a reading list from the University. That's probably the best place to start if you don't want to start spending huge amounts of cash on books that may not be relevant.

Bear in mind that once you start you can probably also get a student discount from your local bookstore and may even be able to buy second hand copies from impoverished ex-students who now need to prepare to pay back those loans!
Dr Herbie
Dr Herbie
Horses for courses
I'm sure they'll give out book lists at the start.  I wouldn't splash out on expensive texts until I got the list -- otherwise it might be money wasted (and some of those text books are not cheap!).

Herbie
BlackTiger
BlackTiger
If you stumbled and fell down, it doesn't mean yet, that you're going in the wrong direction.
Money will be wasted in any case... Question is how much money will be thrown away.
Pace
Pace
In The Mix...
Code Complete 2nd Ed

Dont Make Me Think


I can guarantee that these will help you. Not with your CS studies per say but from a thinking how to construct a program / ui design point of view. I wish I read these earlier in my career Sad
W3bbo
W3bbo
The Master of Baiters
Congrats, et al. Smiley
mVPstar
mVPstar
I'm white because I smelt an onion.
Congrats!
BlackTiger
BlackTiger
If you stumbled and fell down, it doesn't mean yet, that you're going in the wrong direction.
The problem is... You NOW know how useful that books WAS.
So... My point is - any "reading" without real work/project is worthless.
zian
zian
Exploding heads since 1988

General Tips:
1. Get a library card and find out how interlibrary loan works.
2. Start collecting lists of books to read (like you're doing here)


Some of my favorite computer-related books (besides Code Complete and Don't Make me Think):
The Design of Everyday Things
Toward Zero-Defect Programming
Building The Perfect PC
(if you're at all interested in the hardware inside)
The New Way Things Work (slightly dated but still a highly accurate depiction of how things work at a slightly lower level)

I think some good books to read would really depend on your current background. How much programming do you do? What languages? Do you have a background in design patterns? Does anything specifically interest you in computer science?

let us know - it might give us ideas for better suggestions for you.


find out how interlibrary loan works.


QFT. Interlibrary load helped me out immensely in grad school. Also 2 more things: my school provided free subscriptions to both IEEE Xplore and O'Reilly Safari, but didn't advertise this anywhere.
evildictaitor
evildictaitor
if( !succeed( try() ) ) { while(true) try(); }
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)
Pace
Pace
In The Mix...
Sure thats a valid point, however im already getting paid as a full time developer and have gradually applied the knowledge I optained from both those books to projects in already working on. Its about how to think about a project effectively from start to finish, problem definition, finding a metaphor not writing an algorithm which is why I enjoyed it. I cant see how this will ever go out of date. Plus if he is doing CS he is going to be working on projects is he not?

vesuvius
vesuvius
Das Glasperlenspiel
A fantastic encapsulation. If you inherit this wisdom you will by polymorphism become a type of developer - cheesy, isn't it?

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.
BlackTiger
BlackTiger
If you stumbled and fell down, it doesn't mean yet, that you're going in the wrong direction.
I saw many very good developers without any "CS degree". And many awful "developers" ("trained monkeys", "mainstream developers" etc) with "bachelor/master/whatever" degrees.
"Degree" (aka "Paper") means nothing.
CannotResolveSymbol
CannotResolveSymbol
{insert caption here}
evildictaitor said:
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)


++ on this one.  You might never actually run into the topics discussed in it in class, but it's still an enlightening book nevertheless.
Pace
Pace
In The Mix...
indeed! heuristic : "having a drivers license doesnt mean your a good driver!"


I respectfully disagree with your notion that degree means nothing. I do agree with your observation of good developers without a CS degree and "developers" with bachelor degrees being less-than-desirable.

It really depends on the person. I am thinking of one person who graduated from a DeVry-type institution who was very, VERY skilled. Almost all of the university grads I know can program, and program well. However, their focus is often different than traditional business app dev. Case in point: one grad coded a web application with a behind-the-scenes state machine. All states were defined and it worked VERY well on paper. His code was top-notch, in terms of style and efficiency. Problem is, state machines are (generally) HORRIBLE as a basis for a web app - it didn't scale and performance was horrible. Another guy I know was a master at parallel programming (multi-threads, communication on those threads, efficient coding, etc.). It was really something to see, if you can appreciate those types of apps. His business development programming was abyssmal. Yet, academics have good sense of data structures (in general) and some interesting insights that self-taught programmers don't pick up as readily.

You really need to take individuals into consideration - look at their previous work if you can. Ask them good questions. Instead of asking them to write a linked list, ask them when would you use a linked list and why? 

zian
zian
Exploding heads since 1988
Oh, and also find out what sorts of databases your university subscribes to. Nowadays, almost all the periodicals are electronically subscribed so you can do all sorts of nifty things with the articles.

Learn how to use the various types of search forms that each database provides (off the top of my head, LexisNexis would be a big one).
Have to agree with the Evil One ...

Even if it isn't on the reading list, have a look at the Mythical Man Month ... it explains everything.

The Mythical Man Month was in his list (oops, reply was for Ray7, not BlackTiger).

Bass
Bass
www.s​preadfirefox.c​om/5years/
Really I programmed fairly well before I went into University, but University really helps you think in general. But I guess it depends where you go.
page 1 of 2
Comments: 26 | Views: 1118
Microsoft Communities