Log in

View Full Version : computer science, did it help?


Salman
10-14-2003, 08:38 AM
Does a computer science degree really make that much of a difference between a good game programmer and an amazing one? I know algorithm efficiency is a big part of game development since speed and filesizes are important (among other things).

It would be safe to say that a comp sc. degree really helps but ofcourse its not a must.

comments on how a comp sc degree helped you out, or was a waste of time?

princec
10-14-2003, 08:49 AM
No, it didn't help me one bit.
What really counts is how you learn and how you're taught. You can become great if you learn well or you're taught well. Some people say that university is all about learning how to learn. Great if you get that kind of tuition but mine, at Reading University, was a little below-par at times with little vocational work.

Cas :)

ggambett
10-14-2003, 08:53 AM
I'm about to graduate, and I'm inclined to say "yes, it does matter".

But it's not a neccesary and suficcient condition. I think you can be a very good programmer with years and years of practice without really understanding what's going on. By "understanding" I mean that you can tell what's going on in each layer from your high level code to the signals in the processor.

But I also believe that you need to have that deep understanding in order to escape that local maxima. Without it, you're just trained to do things. Deep and broad knowledge is a must to do excellent things and it's not that easy to learn on your own.

Of course, you can earn a degree by training yourself to passing exams, which is the same as not having it.

Fenix Down
10-14-2003, 09:28 AM
I didn't go to college for a CS degree to learn how to program. And, I didn't learn how to program there. I learned on my own. A good college won't try to teach you a programming language. What I did learn though, was a good deal of theory that I wouldn't have learned on my own. Some people might have the discipline to learn lots of CS theory on their own, but I'm mostly interested in programming. Especially high level programming and program architecture. I also got exposed to lots of different CS topics I wouldn't have otherwise known about or learned about (for instance, how operating systems work internally, and what was even more interesting was distributed operating systems).

In essense I don't think you need a Computer Science degree to be a good (or amazing) programmer. A Computer Science degree will make you a better Computer Scientist, not a better programmer. :) It's just a convenient way to learn the material while at the same time getting the piece of paper that you must have these days if you want a job. In retrospect, I would've gotten a degree in a different major. My college (a technology/engineering school) was very limited in the scope of my classes (and had a very strict curriculum). It was mostly math/physics/CS classes. So much for the well-rounded education eh?

escotia
10-14-2003, 09:40 AM
It certainly gave me the focus I needed to learn to program.

Actually, flunking the course and getting 'suspended' gave me the focus I needed. But then I wasn't actually at Uni, and I learnt to program by reading the course text 'Pascal' from cover to cover. When I got back on the course the next year, my programming was miles ahead of most.

I noticed a lot of people on CS (mostly the ones getting a 1st) didn't even bother to learn how to 'really' program. They just knew enough to get by and then forgot it as soon as they could. Something easily done on a CS course since programming is usually only a tiny part.

Of course, they were the ones going for the managers jobs - what would they need to code for?

For me, CS is neither here or there to be honest. An open mind is the key to being a better programmer. Appreciating that there's always something new to learn and probably better ways of doing something.

As a side note, no-one has ever asked to see my degree.

SC

DavidRM
10-14-2003, 10:51 AM
Yes, a CS degree can make a huge--and very positive--difference in your programming skills, and not just with a particular programming language (C++, Java, whatever) or business arena (games, health insurance, whatever).

This is the list of courses I took for my CS degree, from 1987-1991. Some of the topics may seem a bit dated now, but remember: C++ wasn't an option (so be wary of anyone claiming 15+ years of C++ experience). Dated or not, though, I have used information and techniques learned in each of these classes in my 12 years of professional experience.

Intro to Computing - Mostly a review for me since I had learned to program before coming to college, but still some nice practice.

Intro to Business Computing - Ok. I never once used the COBOL I learned in this class. But it was still interesting.

Data Structures - We learned data-centric programming before it was "hip". Easily one of the most valuable courses I took.

Computers & Programming - AKA "assembly language", but we also discussed the why's and wherefore's of computer assembly language. Very useful for understanding machine architecture.

Principles of Operating Systems - A good study of the basics of operating systems and the services they provide.

Advanced Systems Programming - Low-level programming course where we managed to turn DOS into a multi-tasking OS, wrote directly to hardware such as printers and disk drives, and so on.

Programming Languages - Briefly covered (and programmed in) a whole buttload of obscure and interesting languages: SNOBOL (string processing), PROLOG (logic programming), LISP (list processing), Smalltalk (early OO), and others. Very eye-opening. Learned a lot about using the language best suited to a particular task, and playing to the strengths of that language.

Computer Logic & Organization - Low-level computer hardware. We started out with boolean logic and algebra, used breadboards to examine logic circuits, and completed the class by designing and building a 4-bit CPU (with APU and RAM) from NAND, NOR, etc building blocks.

Systems Design - High level design of software systems, particularly business software. Interesting in its focus on entire products rather than pieces.

Compiler Construction - We covered the programming languages and the grammars used to describe them. We created grammar parsers and even built a compiler/interpreter for a Pascal-like language.

Math Modeling - This wasn't a CS class, but it was one of the best math classes I took in college. We covered ways of quickly modeling/approximating different phenomenon, and evolving those models and approximations as new data are found.

File Processing - The arcane art of dealing with files, especially large files, in the most efficient ways possible. If you think quicksort is the best way to sort a file "in place", you need this class because you're going to really screw something up some day.

Object Oriented Design - THis topic was becoming popular by the spring of 1991. We used Smalltalk and the newly created C++ language to experiment with object-oriented design and programming.

Database Systems - The hows and whys of relational databases, and even non-relational databases, including "relation calculus". Very useful information in the corporate world, I found.

Every one of those was a 3 hour course...so...39 total hours of CS courses. Only needed 30 to graduate, IIRC. I really liked the subject, and scored a 4.0 in all of those classes. I had a friend who managed 45 hours in CS, by taking every possible CS course. I missed a couple (Systems Analysis and...hmm...Data Communications).

If you go to college with the idea that you probably won't learn anything useful, that's exactly what you'll learn.

-David

PS I have all this information readily available because a company just asked me to send them a copy of my college transcript. First time in 10 years someone has asked for that. Go figure.

Fenix Down
10-14-2003, 11:52 AM
Here's my curriculum (BSCS):
http://hex.njit.edu/cocoon/eCatalog/undergrad/programs/ComputerScience_U/CollegeofComputingSciences_S

Though it's a bit different from mine, but only a few minor differences. The one I had was 1997-2000 catalog (I started in 1999).

Akura
10-14-2003, 01:08 PM
it only made me dislike programming a little more. Of course, I was dealing with idiot (not all but most) teachers so that may had helped a bit.

After a year or so i quit. Haven't made a difference in my programming whatsoever, and I never had my employer complain either nor the lack of education made learning things harder, if any, made them easier as I'm not really bound to any paradigms or mentalities people tend to get stuck with when they leave Uni (again, not all so don't jump at me saying you aren't like this ;p)

DavidRM
10-14-2003, 02:27 PM
Originally posted by Akura
...if any, made them easier as I'm not really bound to any paradigms or mentalities people tend to get stuck with when they leave Uni...

Unlike all the bad habits and poor design approaches used by people with no university education? ;)

Seriously, though, after years of working with programmers from both camps (CS/MIS vs. Home Grown), I've seen the following trend: Home Grown programmers are more direct in their solutions, often getting the job done sooner, while the CS/MIS are more elegant and take more time, with the advantage that they generally can handle more sophisticated problems and solutions. Both groups get the job done, and from a management standpoint, each has their uses.

-David

Jake Stine
10-14-2003, 02:50 PM
Originally posted by DavidRM
Home Grown programmers are more direct in their solutions, often getting the job done sooner, while the CS/MIS are more elegant and take more time, with the advantage that they generally can handle more sophisticated problems and solutions. Both groups get the job done, and from a management standpoint, each has their uses. To me, that sounds more like the basic difference in mentality that results in people deciding whether or not to go to the uni to begin with, moreso than any particular skills the uni might be teaching. That is not to say that the uni doesn't have value (I have no real input on that part of the topic as to whether or not university educations are important or not), but I can certainly vouche for the fact mire direct personalities naturally gravitate away from a university and instead take the seemingly more direct route to life and employment and doing their job... ;)

- Air

Akura
10-14-2003, 03:03 PM
Originally posted by DavidRM
Unlike all the bad habits and poor design approaches used by people with no university education? ;)

Seriously, though, after years of working with programmers from both camps (CS/MIS vs. Home Grown), I've seen the following trend: Home Grown programmers are more direct in their solutions, often getting the job done sooner, while the CS/MIS are more elegant and take more time, with the advantage that they generally can handle more sophisticated problems and solutions. Both groups get the job done, and from a management standpoint, each has their uses.


I agree and disagree, as I have seen both sides having the same problem. I consider myself a fairly good and clean coder (when I want to) and i have worked both professionally and with hobbyist from the two camps, and I found on both camps code that made me shiver looking at and people I was pretty happy with the code. I don't think uni teaches any of this and is up to the person to get those habits, both on coding and the way they solve problems.

You are absolutely right about the way we tackle problems, and while I think both have their uses, in todays game development companies, it is almost always favoured the hack and slash aproach to get the job done. It may not be when you are doing tools or very reusable stuff, but game wise, most managers will just say "make it work" over "make it work, but take your time to make it look good". But I guess balance is what is needed right ;)


I do know that my view of going to university to be a game programmer is a rather bad one, but I can assure you, this is based on portuguese unis and is pretty much correct. They don't teach you anything (ok, hardly anything) that you will use in your day-to-day job, maybe once every 4 months it will help on a problem that arises, but not much more. I can't vouch for others unis. :)

Mike Wiering
10-14-2003, 03:10 PM
I enjoyed studying computer science pretty much (had lots of free time for my own projects and for playing music, which I'ld probably not have had if I studied something else).

But my programming is now a lot slower than before I started! I used to write everything in Pascal (so I never had to think about which language to use). I didn't know OOP or any other methods, so I could always start coding right away without even having to think! :cool:

Now, I've learned so many languages, systems, methods etc, that I sometimes spend more time trying to make a good choice about what to use, planning and thinking about the design than I would previously have spent on writing the entire program!

On the other hand, it is good to think about a project before you start and now I'm usually able to determine pretty soon whether a project will be feasible or not (instead of after weeks or months of coding). Besides, I usually don't have to restart my projects several times because of not having thought about some important detail.

Anthony Flack
10-14-2003, 03:28 PM
It probably would be useful. But I haven't found that not having a degree has really stopped me doing what I want to do. I can be a bit hack n slash in my approach sometimes but that's more out of laziness or just throwing ideas around rather than me not knowing any better.

I did a couple of CS papers as part of my extra-curricular requirements for a fine arts degree (they were a little surprised - they said they had never cross-credited from CS to fine arts before), and my experience was that a week with the textbook taught me everything I could have learned in 4 months of lectures. It just went too slow. So I stopped doing CS and decided I'd be better off just reading books to find out what I needed to know.

Actually, that's pretty much how I felt about Uni all over (although I did get my degree in the end).

Pyabo
10-14-2003, 03:58 PM
Well, I know for a fact that I learned quite a lot about programming while earning my CS degree, and that knowledge is 100% applicable to games programming. Wouldn't trade that experience for anything! I would however, advise you to go to a university that is acknowledged for its CS program if you are going to go this route.

StAn
10-14-2003, 06:15 PM
I don't think I learned anything applicable to game development during my 2 years of CS at uni.

Ok, there was a C course, but I had learned most of it one month before starting uni. (And I had been programming since I was 10 or 12 year old anyway.) Unfortunately, we weren't even taught how to write a makefile, nor how to write big programs in several source files.

Apart from C, the most comprehensive programming course was COBOL, and I don't think anyone has ever programmed any game with that ;-)

I saw several other languages: C++, Prolog, errr.... Windev.... and maybe something else I don't remember. But they were only introductions... Useless.

IIRC we had a course about finite automatas or stuff like that, but I don't remember anything and we didn't even write a compiler, so what was the point? Sigh. I wish we had worked on a compiler, that can be useful.

I don't regret anything though, because I had a lot of fun playing MUD and X-Blast from 8 AM to 9 PM most of the days :D
(and learning cool Unix/Internet tricks too)

BitBoy
10-15-2003, 02:49 AM
A degree in Computer Science doesn't make you an amazing programmer, nor does any uni degree make you amazing in any one thing. What it does is to give you a broad understanding of many subjects.

All the programming courses I've studied have been pretty easy for me since I've been programming long before I started at uni. But the programming courses are only a fraction of the stuff that I learn here. Courses like Compiler Theory and Operating Systems Concepts taught me stuff that I didn't know and probably wouldn't have bothered to learn on my own. On top of that I study lots of mathematics and electronics, which I know for sure that I wouldn't have touched on my own!

A couple of years at uni also changes the way you approach problems. You get a much bigger confidence in yourself, and you know how to get the info you need to solve most any problem.

In the end, going to uni is FUN and will probably be some of the best years of your life! (cliché, I know! :p) It sure beats wasting your life working at some lousy job you get without a degree...

gsweet
10-15-2003, 05:57 AM
I really agree with BitBoy's post. I have a master's degree in computer science and I wouldn't trade it for anything. Sure you can learn programming by reading a book, but unless you are extraordinarily self disciplined, you will not get the broad understanding of different topics you would get at university.

I know some people complain about not learning anything at university, but remember it's you who has to do the learning - no one can force you to learn if you don't want to. A good professor should inspire you to learn more, and those are unfortunately hard to find. The sad thing about learning is that the more you learn, the more you realize you don't know. Beware of people who claim to 'know it all' as often they know a lot less than they think.

If you're serious about being an indie, remember to take business and writing courses - they'll help a lot. Also remember that a large number of indie programmers are not successful for a long time - sometimes years. During that time you might need another job to get by and jobs are a lot easier to come by with a degree.

Just my two cents :)

Graeme

ergas
10-15-2003, 07:08 AM
I studied physics at the university. Now I work as a programmer with many computer scientists. I see many differences between them and me. Computer scientists work with methodology, I work instinctively, which mostly doesn't work. They work with squence diagrams, I work with paper and pencil. They know the best algorithms and they measure complexity and performance before they develop one, I can't. My only advantage is that I don't think in terms of bytes, which is better if you are trying to develop creative things like computer games. Though, at daily job, we do not develop creative things. So I end up with no advantage.

ergas

Coyote
10-18-2003, 12:59 PM
I didn't think it would be useful. But it was.

I knew ('kinda-sorta') C and C++ before I took the class on programming languages. I don't think I learned anything about those languages in my class that I couldn't have picked up from a book.

But if you think that a CS degree is to learn to write code in particular languages, you're pretty off-base. Languages come and go --- but a CS degree you learn today should be just as useful 30 years from now as it is now.

What you will gain is a well-rounded education (ideally). I think this is more important in games development than most other IT-related fields. When you talk game design, you are rarely discussing such things as sorting algorithms and data / storage structures (the sorts of things you should be an expert on with a CS degree, too, and which come in to play all the time in writing any kind of software, games included). Instead you'll be talking philosophy, literature, physics, history, maybe music and art. While a good game may not be about historical accuracy (more like "Return to Castle Wolfenstein"), you'll still want to be able to draw upon classic knowledge.

As far as pure programming-related knowledge - I don't know if a 4-year degree is going to give you that much more of a leg up than 4 years of experience and a lot of reading on more "boring" subjects such as computer theory, development methodologies, data structures, and operating system design won't give you.

But getting that 4 years of experience is another story. If you need to implement a doubly-linked list, for example, it shouldn't be something that you have to spend a day researching and doing. The guys with the CS degrees *should* be able to whip one out in a matter of minutes. But a kid fresh out of secondary education who's just been hacking out code in his basement or attended a tech school for six months may not have that kind of general understanding.

There's a lot more to being a software engineer than knowing the syntax of a programming language. A degree will HOPEFULLY give you a lot more tools to work with. There's the saying that if all you've got is a hammer, everything looks like a nail. Just "knowing how to code" means you have a hammer. You might be really good at it. But an education gives you a bit more to work with.