Sign in to follow this  

Computer Science

This topic is 3811 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

ok here's the deal, i'm 22, started getting into programming about 3 months ago and its going pretty well, i'm retaking some high school courses this summer and continuing till the spring to get my grades up for university. i'm planning on applying for a conputer science program, i've got a couple of questions. 1. what does the typical computer science program cover? hardware? software, languages? all of the above and more? 2. what would be a good book or 2 to get a head start on computer science? since i don't plan on attending university till fall 08, i feel like alot of the information would be good for me to pick up in the near future, plus i'd like to go in with a good understanding of what i'm doing. 3.after finishing a computer science degree, how equipted are you to enter the work force in either game or software development\programming? would you require additional training or would you know the majority of stuff you need to at least get started in the field? thanks

Share this post


Link to post
Share on other sites
Quote:
Original quote by Edsger W. Dijkstra
Computer Science is no more about computers than astronomy is about telescopes.


CS deals mainly with the theoretical side of computation theory: designing algorithms, evaluating the complexity of algorithms, proving the correctness of algorithms, proving that some algorithms cannot exist (undecidability, semi-decidability, complexity classes), mathematical representations of common objects (including discrete mathematics, graph theory, hoare logic, monoids) and several similar domains.

I suggest the books:
Introduction to Algorithms (Cormen, Leiserson, Rivest, Stein)
Gödel, Escher, Bach (Hofstadter)

Share this post


Link to post
Share on other sites
Quote:
Original post by ToohrVyk
Quote:
Original quote by Edsger W. Dijkstra
Computer Science is no more about computers than astronomy is about telescopes.


CS deals mainly with the theoretical side of computation theory: designing algorithms, evaluating the complexity of algorithms, proving the correctness of algorithms, proving that some algorithms cannot exist (undecidability, semi-decidability, complexity classes), mathematical representations of common objects (including discrete mathematics, graph theory, hoare logic, monoids) and several similar domains.

I suggest the books:
Introduction to Algorithms (Cormen, Leiserson, Rivest, Stein)
Gödel, Escher, Bach (Hofstadter)


thanks alot, what foundation would i need for those 2 books to make sense?

proramming experience?
advanced math?

Share this post


Link to post
Share on other sites
I would like to recommend this book.
Discrete Mathematics and Its Applications: And Its Applications
by Kenneth H. Rosen.

I found this book to be extremley useful through out a number of different classes. It just about sums up computer science pretty well I think.

Share this post


Link to post
Share on other sites
Quote:
Original post by godsenddeath
sorry to sound really dumb, but "log-exp level"?


At the level where you have learned about logarithms and exponential functions.

Another book I would like to recommend is Introduction to the Theory of Computation by Michael Sipser. It requires about the same level of mathematics as Introduction to Algorithms (EDIT: The book itself is a little more mathematical than Introduction to Algorithms so maybe you should start with one of the other books if you aren't that comfortable with math yet).

Share this post


Link to post
Share on other sites
i'd check to see what modules your course covers. many uni's vary.
I didn't do that much algorithms, networking, embedded systems, and I covered java, c and one module on c++

some uni's do c#.

so my advise check the course in detail first.

p.s. a uni course should teach u everything u need to get into programming/software enginnering.

u need alot more knowledge or/and luck to get into the games industry.

hoe that help man.

later
UF

Share this post


Link to post
Share on other sites
Quote:
Original post by godsenddeath
ok here's the deal, i'm 22, started getting into programming about 3 months ago and its going pretty well, i'm retaking some high school courses this summer and continuing till the spring to get my grades up for university. i'm planning on applying for a conputer science program, i've got a couple of questions.


Sounds like you're taking charge of your life. Congrats.

Quote:
Original post by godsenddeath
1. what does the typical computer science program cover? hardware? software, languages? all of the above and more?


My course for my AS covers Math, A language (C++), Intro to Computer Architecture (Hardware), and other things like English and sciences.

Quote:
Original post by godsenddeath
2. what would be a good book or 2 to get a head start on computer science? since i don't plan on attending university till fall 08, i feel like alot of the information would be good for me to pick up in the near future, plus i'd like to go in with a good understanding of what i'm doing.


While others can recommend some good books, I have a few of my own. They're not as "high end" but might be useful. One is: "An Object-Oriented Approach to Programming Logic and Design" by Joyce Farrell, and my text book for my C++ course, "C++ Programming: Program Design Including Data Structures, Third Edition" by D.S. Malik

Quote:
Original post by godsenddeath
3.after finishing a computer science degree, how equipted are you to enter the work force in either game or software development\programming? would you require additional training or would you know the majority of stuff you need to at least get started in the field?


That is a question for the ages.

Quote:
Original post by godsenddeath
thanks


Anytime.


M.

Share this post


Link to post
Share on other sites
thanks alot for the help, i looked through the 3 main universities in toronto(i live somewhat close) and 2 of them had alot of details on what courses you take in your first year, so i have alot more info on what classes there are and what specific areas\languages are covered, which seems to be java as a beginner, then c++ then some assembly)

so i guess my follow up question would be, what additional training would i need to get into the game industry afterwards? or would the 5 years(i'm hoping to start a year from now, plus 4 years in school) of working really hard independantly and creating a demo or 2 on my own be sufficant to get a job at a game company?

Share this post


Link to post
Share on other sites
Quote:
Original post by godsenddeath

3.after finishing a computer science degree, how equipted are you to enter the work force in either game or software development\programming? would you require additional training or would you know the majority of stuff you need to at least get started in the field?

thanks


This is a little bit of a trick question. Depending on your university (They do differ. Just because you're taking the same classes doesn't mean you're learning the same things or as well), you should be well equipped to enter the workforce as an entry level software engineer. Despite that, you'll not know the majority of stuff to do the job. There's tons of practical, business, and industry stuff which goes along with the job. It's not just sitting in a cube pumping out code for 8 hours.

Gamedev is a little different that you'll be well off working a little on your own demo. Not because the job is much different, but because there's more competition for the job.

Share this post


Link to post
Share on other sites
Some of the courses you might expect to take in CS are:

Introduction to Object Oriented Programming
Object Oriented Modeling
Data Structures
Algorithms
Operating Systems
Language Theory / Compilers
Hardware / Architecture
Calculus
Algebra (Linear, Classical)


This covers most of the core courses for the University of Waterloo, and I'm sure other school share a lot of these courses.

Also, note that CS doesn't teach you how to program or programming languages in most courses. A lot of work goes into theory and design.

Share this post


Link to post
Share on other sites
A lot of people get hung up on the belief that a CS program should teach you languages... a CS program shouldn't function as a "trade school".

Rather than teach you a ton of languages, a computer science program should teach you how languages work and the theories
behind their design, as well as give you an understanding of compiler implementation (and other system software) and that sort of thing, so that you can quickly and easily learn ANY language you are required to use on a job.

Rather than teach you "software", a CS program might include a software engineering component with some emphasis on theories behind user-interface design and human-computer interaction, so that any software is likely to look familiar to you in some way.

Rather than teach you about specific hardware, a CS program should delve into some fundamentals of computer architecture, but probably only to the extent that it has computer science ramifications--different hardware may call for a different language paradigm or implementation, for example... a multicore processor will have ramifications for resource sharing, and, therefore, on the implementation of languages that are used on that platform.

Etc... of course, along the way you will be exposed to specifics. You have to write assignments using a language, afterall. You have to have case studies for most of the abstract things you will study, so you'll be exposed to certain machine architectures, operating systems, languages, and applications.

When you get into the higher level classes, you probably won't even be studying computers anymore... for example, if you are doing lots of graphics work, you'll probably spend a lot of time studying the physics of light transport and scattering, the human visual system, and that sort of thing. Natural language processing will involve lots of study of the structure of spoken language, etc. That's where the Djikstra telescope thing becomes very obvious.

Share this post


Link to post
Share on other sites
Quote:
Original post by smitty1276
Rather than teach you about specific hardware, a CS program should delve into some fundamentals of computer architecture, but probably only to the extent that it has computer science ramifications--different hardware may call for a different language paradigm or implementation, for example... a multicore processor will have ramifications for resource sharing, and, therefore, on the implementation of languages that are used on that platform.


Bingo. For example, I took a course in which we learned about the MIPS architecture, but the real puprose was to teach students about simple pipelining setups. This can be further extended to the IA-32 / IA-64 architecture, though the pipelining procedure is much longer in those cases and may not be practical for educational purposes.

Share this post


Link to post
Share on other sites
Which of the following best describes you:

A:
-you like to ensure software is efficient
-you like linear algebra, applied calculus and physics
-you really like drinking

B:
-you like to ensure software works, and you like to know all of the theory behind it
-you like theoretical math, such as classical algebra, group theory
-you enjoy D&D

This is a mass generalization, but "A" describes a software engineer and "B" describes a compute scientist.

Share this post


Link to post
Share on other sites
^ That reminds me of something that I've read and agree with:

Software development is neither science nor art, it is engineering. (that's the part I read, the following is why I agree) Software development is about making things that work, not theorizing what should work. However, science is still important in the pre-development stage as you plan the work before you start it.

Anyway, I think your post could use a few fixes:
Quote:
A:
-you like to ensure software is efficient
-you like linear algebra, applied calculus and physics
-you like to ensure software works

B:
-you like theoretical math, such as classical algebra, group theory
-you enjoy D&D
-you like to mathematically prove that your software should work and you like to know all of the theory behind it

Share this post


Link to post
Share on other sites
Quote:
Original post by gamechampionx
A:
-you like to ensure software is efficient
-you like linear algebra, applied calculus and physics
-you really like drinking

B:
-you like to ensure software works, and you like to know all of the theory behind it
-you like theoretical math, such as classical algebra, group theory
-you enjoy D&D


First, D&D and drinking should have no influence whatsoever on what you choose to study. Even if there is a small statistical correlation, it shouldn't guide you. I also don't agree with the efficiency vs. correctness point. Software engineers should (and IMO do) care about correctness just as much as computer scientists. Computer scientists also care about efficiency, that is actually what much of computer science is about. Reasoning about the best way to perform processes correctly. Computer scientists just reason about performance in terms of abstract models and describe performance using complexity theory.

The difference is that computer scientists approach everything from an abstract point of view using mathematics, while software engineers approach stuff from a practical point of view using concrete machines.

Share this post


Link to post
Share on other sites
Quote:
Original post by gamechampionx
Which of the following best describes you:

A:
-you like to ensure software is efficient
-you like linear algebra, applied calculus and physics
-you really like drinking

B:
-you like to ensure software works, and you like to know all of the theory behind it
-you like theoretical math, such as classical algebra, group theory
-you enjoy D&D

This is a mass generalization, but "A" describes a software engineer and "B" describes a compute scientist.


for the record, i like drinking, and to a very small extent D&D, i love the "leveling up" of characters and classes and skills and hwatnot, i'm just not a role playing type guy, so i'll stick to my FF and diablo

Share this post


Link to post
Share on other sites
You could consider doing what I did. I took two years at a technical college (Northern Alberta Institute of Technology - Computer Systems Technology program) and then did a university transfer. I still have another year of a Computer Science degree to go, but things have worked out quite nicely thus far. NAIT gave me a good hands on experience of what it was really like in the industry (not in the games industry, but in the IT industry). University has given me more of the theory behind what I did at NAIT. The combination of the two is proving to be quite handy. I did one co-op work term while at NAIT working for the city of Edmonton and I am currently doing another co-op work term for the University of Lethbridge at Shell Canada Ltd (oil company). I am quite enjoying the combination of theory and pratical, hands on experience.

The only place that will teach you "game programming" would be a college or university with courses directly related to the subject. Technical schools and Universities will (or are supposed to) teach you how to learn. Armed with that sort of knowledge, there isn't a whole lot that can stop you.

Share this post


Link to post
Share on other sites

This topic is 3811 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this