Computer Science

Started by
8 comments, last by Serapth 12 years, 4 months ago
Hey,

(if you want just skip to the questions)

A while ago i started reading about programming, and as i had always been into computers and didn't really know what i would like to do later as a job i decided to try it out.I started by learning C++. Since then i've learned quite a bit, even tho it's nothing compared to what is needed to truly master that language. I've learned the basic control structures, classes, variable manipulation, inheritance, etc. The basics i guess.
But one thing is certain to me. This is what i want to do for a living. I love the challenge it presents, i love the feeling that you get when you manage to find the solution.
In about two year i probably want to be in university studying Computer Science. So i was wondering if some of you guys who studied it could answer some questions i've.

Questions:
-In a university level computer science course, what are the major subjects that you learn?
-What knowledge of physics/maths/other major stuff do you need to have?
-What should you try to learn before so that you can be "ready"?
-How hard is it for someone with a bachelor degree to find a job? and for someone with a masters degree?
-What skills or traits would be helpful for someone who wants to become a programmer?
-What's the average salary of a programmer, in the US or Europe?
-What should i focus on learning NOW and what's a good project to improve my knowledge/programming skills?

thanks to all those who help
Advertisement
-In a university level computer science course, what are the major subjects that you learn?

Computer science is basically composed of:
* Data structures (arrays, containers, linked lists, etc.)
* Algorithms to work on those data structures (sorting, searching, saving/loading, rendering, sending across networks, etc.)
* Theory of computing (what is computable; what is quick, what takes hours or years, and what is impossible)


Everything hinges on those basic elements. Most schools are quite flexible in the courses you can take. The languages can change from year to year (Pascal, C, C++, Scheme, Eiffel, Java, Python, etc.) but the science applies to all of them.

It relies heavily on mathematics so most schools require assorted classes there. The field also requires some communications skills and technical writing skills, so many schools have requirements there as well.



-What knowledge of physics/maths/other major stuff do you need to have?

The school has requirements, you can always take more than is required. I recommend calculus, linear algebra, and discrete mathematics. Stats and other classes are always helpful.

-What should you try to learn before so that you can be "ready"?

Whatever you want. Some first year students have no prior CS knowledge.

-How hard is it for someone with a bachelor degree to find a job? and for someone with a masters degree?

Strongly depends on the location. Also depends on the the economy.

-What skills or traits would be helpful for someone who wants to become a programmer?

Tenacity, creativity, caffine addiction. Love to solve problems. Love to create something from nothing. Love to hunt down and solve difficult problem (notice the theme yet?) Much of programming is the mundane task of getting generic data to be displayed properly to the user, and it can be very boring.

-What's the average salary of a programmer, in the US or Europe?

Depends on the sub-field. It is better than most blue-collar jobs. It is often better than many white-collar jobs. The games industry does not pay as well as other fields like database administration for healthcare, or military programming work. No matter the specialty, programming pays extremely well compared to regional averages. For example, it generally pays much more than jobs like office clerk, bookkeeper/accountant, office manager, IT, teacher, hospital lab technician, auto mechanic, etc.

-What should i focus on learning NOW and what's a good project to improve my knowledge/programming skills?

Follow your passions. Learn what you want. It is very important to develop life skills outside of programming. Date. Maybe play an instrument, learn MMA or other sports, sing, work with animals, cook, lift weights, or whatever interests you.

Questions:
-In a university level computer science course, what are the major subjects that you learn?


Algorithms, data structures, problem solving.

Usually calculus, physics, linear algebra, compiler theory, statistics, formal writing...

It depends on the particulars of the program.


-What knowledge of physics/maths/other major stuff do you need to have?
[/quote]

Before college or during? Before college, I'd have at least a good foundation of algebra, geometry and trigonometry. Physics is optional before college.


-What should you try to learn before so that you can be "ready"?
[/quote]

How to study. How to manage your time. What you want to know before you're an adult on your own.

Realistically, having a little programming background is good, but will have less impact on your success than you might think.


-How hard is it for someone with a bachelor degree to find a job? and for someone with a masters degree?
[/quote]

Depends on the job, the degree, where the degree is from, where you're living, and... you. Master's degree offers a little boost usually, but not much for computer science usually.

In general, programmers have a fairly easy time finding jobs compared to other professions. Few people are entering the field after the dot-com bust, and humanity's dependance on computers and little programmable devices is only increasing.


-What skills or traits would be helpful for someone who wants to become a programmer?
[/quote]

Too many to name. It's one of the few fields that marries skills needed for science with those needed with artistry. Plus you'll end up working in large teams, so all of the social/politicking skills that programmers stereotypically suck at are important too.


-What's the average salary of a programmer, in the US or Europe?
[/quote]

Depends on where you are, what industry you're in, if you're full time or contractor, and your experience. Salary.com or indeed.com have salary info for the US.


-What should i focus on learning NOW and what's a good project to improve my knowledge/programming skills?
[/quote]

Learn who you are; how you work. It'll help in everything you do by letting you make good decisions to set yourself up for success and happiness.
Many answered the positive things of the biz, I agree with them about what they said, but i would like to add some negative events you will have to face, in order that you will understand if you are made for that job or not.

- Clients will think you can do everything whatever they imagine. Of course in less than a day...
- Clients don't know what they want. Sometimes you have to understand that too.
- Sometimes you will be forced to limit your creativity in order to deal with the budget.
- Sometimes clients will force you to make data entry!!
- Risks for body rental!
- Since our job is an abstract job there is an high risk that sometimes the firm in which you work will not pay you.

Anyway I like this job, i found it very interesting and i can realize my skill with that.
I hope I gave you good hints!

Evil bay - Our new game at FourLeafGames! (Link to the game)
Link to our web site! Leave a message if you like it! - Web site

My new italian Website! - Web site


Many answered the positive things of the biz, I agree with them about what they said, but i would like to add some negative events you will have to face, in order that you will understand if you are made for that job or not.

Many of these are true of all fields, not just CS.

- Clients will think you can do everything whatever they imagine. Of course in less than a day...

Trust me, this is everywhere. It isn't just in software: My tooth hurts now, I cannot wait for an appointment. The line at the checkstand has three people in it, I can't wait that long. 1-day shipping is fine, but it doesn't actually ship until 18 hours from the time of the order. etc.

- Clients don't know what they want. Sometimes you have to understand that too.

Again, this is nearly universal: I wanted the blue one, not the green one. The texture looked different in the catalog. The pump is as specified but it still doesn't get all the water out. etc.

- Sometimes you will be forced to limit your creativity in order to deal with the budget.

Universal: I want the Ferrari but can only afford the Honda Accord. I want the quad-processor 8-core machine, but can only afford a single quadcore. I want a mansion but can only afford a small apartment. The copper pipe is much better but I can only afford PVC. Remodeling the building costs tons of money. I want the leather chair but can only afford the cheap plastic. etc.

- Sometimes clients will force you to make data entry!!

What's the problem with that? If you are a contractor you can sub-contract that work out, or do it yourself. Non-issue.

- Risks for body rental!

??

- Since our job is an abstract job there is an high risk that sometimes the firm in which you work will not pay you.

Again, universal. Any professional in any field can tell you about the nightmare of trying to collect from bad clients.




Same thing with other negatives:

Sometimes you will need to work long hours. Bad studios will overwork you, good studios will not... but this is the same as other places. If you don't like your hours at that place, verify that the hours truly are better elsewhere. My brother is a mechanic for a small business and he routinely puts in 60-80 hours, far more often than me; even during crunch time he is jealous of the hours I work. He could find another job at a bigger company that doesn't need the work, but prefers the extra pay since he is hourly. One friend works in a hospital as a lab technician; he is supposed to work 12 hour shifts and get lots of days off. He tends to be called in on those days off, and again prefers the benefits of comp time and recognition as he is salary and doesn't get overtime.

Sometimes you will have high stress. If you don't like it, spend your off hours and your money on stress reduction. Or go for the stresses of working with irate customers or even risking life and limb.

Consider other safety and personal concerns. The worst concerns you really have are carpal tunnel syndrome and bad eyesight. You can still be home every night, or if you have to travel you can return home for the weekend or pay your own funds to have family members come with you and stay at your hotel. Consider jobs where people are risking fingers and other body parts on moving parts of heavy equipment. Consider jobs where people risk their lives on a daily basis and make far less money and have far less benefits and need to stay away from their families for months at a time.



Many of the negatives are really just cases of the grass appearing greener on the other side of the fence.

Programming jobs are very low risk, have relatively good quality of life compared to many careers (there are a few bad studios and bad teams out there, but they are the exception and it is easy to find a different job). Pay is far more than many careers. Even working at a mediocre studio gives you a far better quality of life than the average person enjoys.

-In a university level computer science course, what are the major subjects that you learn?


It really depends on the course. In some, you have very little programming and lots of theory, in others you have the opposite. Many are so horrifically outdated as to not be funny. Many of them ramp up from laughably easy to brutally difficult in a very short span of time. My CS program ( I went to a university based on it's physical location, not the esteem with which the program was held ) was a complete joke in 100 level programs, but then quickly ramped up so that there were massive dropouts in year 2. I figure maybe 20% graduated and that's being optimistic. Granted, that was the mid 90s and the world has changed a lot since then.


MIT (http://ocw.mit.edu/courses/#electrical-engineering-and-computer-science) has many of their courses online[/url] and are fairly indicative of what to expect, although some of their later programs are probably a bit more difficult than elsewhere.


-What knowledge of physics/maths/other major stuff do you need to have?
[/quote]

I wouldn't really sweat those things. My OAC level math ( 5 year optional high school for university bound people, don't know the equivalent elsewhere, it's gone now anyways ) course was sufficient for 90% of post secondary education. Some of the more esoteric courses will be more demanding. You can get a CS degree with little knowledge of math though, or at least, you used to be able. If you want to go into games though, you will be well served picking up a first year elective math course though, especially if your HS education is lacking.


-What should you try to learn before so that you can be "ready"?
[/quote]

Ready for what? To make it through the program? Nothing really. You can go from blank slate to graduate, you will just have more work to do. That said, the more you know the easier your time will be. I went in to University with 10 years of programming experience and was bored as hell for the first two years as a result. That said, I watched friends that barely knew where the on button was and got in because "computers are where the money is!", and some of them made it through. So, the more you know the easier it will be, but it isn't really all that necessarily, from your description, you probably have enough to be around average experience, perhaps a bit better. More is always better though.


-How hard is it for someone with a bachelor degree to find a job? and for someone with a masters degree?
[/quote]
Very regional. In my area ( Toronto Ontario ), it would be a joke to find a job as a recent grad, especially if you are willing to take a relatively crap wage for the first year or two. A masters... well, thats a whole new can of worms. Frankly I don't think a masters is worth the added cost, I have never seen a position require one. An MBA would be more useful, although that will pigeonhole you into certain jobs ( mind you, jobs that pay damned well! ). I've considered getting an MBA, my wife has hers... it's just, I don't really want to be management.


-What skills or traits would be helpful for someone who wants to become a programmer?
[/quote]
Perseverance, memory, trouble solving skills and a willingness to constantly learn. A modicum of social skills would be a giant boon, as frankly most people in this profession seem to have the social graces of a retarded baboon. Being non-socially awkward really helped in my career advancement, while I know a great many people that stay in the same cube from junior through senior programmer and plateau there, as frankly outside of writing code, they are pretty much useless. This is far to common sadly. Unless of course you want to stay in the same position for your entire career living in a cube in a corner, then its the perfect field for you! :)


-What's the average salary of a programmer, in the US or Europe?
[/quote]
There are surveys and frankly they are bullshit. I just moved 2 hours down the road from London Ontario to Toronto Ontario, which probably resulted in the average salary for an intermediate developer to rise 25K if not more. Where in one region 40K is quite reasonable, in another that's poverty line wages. It also varies massively by industry. A lot of startups, that have stock options, pay complete shit, while many fortune 500 companies pay extremely well. I tended to find, from what i've experienced and heard from others, junior level game programmers pretty universally make a shitty wage, because frankly there are a few thousand people lined up willing to take your job pro bono. Once you get more experience, the wages get more comparable to other industries. It is also hard to do apples to apples comparisions. In my last time on the job market, I had 3 different opportunities in 3 different industries and the wages offered varied by as much as 50%! Entry level positions though tend to be a bit more standard.

Then again, with the economy the way it is........ not good.


-What should i focus on learning NOW and what's a good project to improve my knowledge/programming skills?
[/quote]


Just about anything really. University will give you a bit more direction when you get there, so for now, just have fun.

[quote name='m3rlino' timestamp='1323203277' post='4891207']
Many answered the positive things of the biz, I agree with them about what they said, but i would like to add some negative events you will have to face, in order that you will understand if you are made for that job or not.

Many of these are true of all fields, not just CS.

[/quote]

Sorry for answering to you again, I agree with you. I just wanted to remark what could be downsides of this profession, i didn't add things connected to my job otherwise I could lose it :).
Especially for that "body rental" stuff. It's a common practice in Italy, there are some firms that hire you, then they rent you to some other firm as a worker.
They use this way to create flexibility, since here in Italy it's not easy to fire a person whenever you want, so these firms sold you to other firms and when the contractor doesn't need you anymore, he cancels the contract with the firm and then the firm who hired you looks for another job for you.
The point is that in such a way of working there are no mission or established know how in the firm.
Well, I will stop whining about all those things. I think anyway there are also a lot of possibilities to learn new things and raise your skills.
I'm a programmer and I like my job, especially when I solve people needs and I create something they appreciate.
Greetings!

Evil bay - Our new game at FourLeafGames! (Link to the game)
Link to our web site! Leave a message if you like it! - Web site

My new italian Website! - Web site

Thank everyone for answering my questions.
Also remember that a good university course is influenced by the research activity of those who teach there. Many CS courses also have room for some more applied topics. As well as the usual pure CS topics (algorithms, data structures, computability/complexity etc) I had the option to take elective modules in several other areas, including:

- AI
- functional programming
- computer vision
- natural language processing
- speech recognition
- parallel performance theory
- graphics and visualisation (my uni did some interesting research on navigation in virtual environments)
- scientific computation (CFD, medical simulation etc)


Maths wise, the most important thing is that you are at a level where you can revise a topic on your own. There *will* be maths which crops up which you are not very confident with - you just need to be able to identify these weak points and brush up on them as they come along.

Also remember that a good university course is influenced by the research activity of those who teach there. Many CS courses also have room for some more applied topics. As well as the usual pure CS topics (algorithms, data structures, computability/complexity etc) I had the option to take elective modules in several other areas, including:

- AI
- functional programming
- computer vision
- natural language processing
- speech recognition
- parallel performance theory
- graphics and visualisation (my uni did some interesting research on navigation in virtual environments)
- scientific computation (CFD, medical simulation etc)


Maths wise, the most important thing is that you are at a level where you can revise a topic on your own. There *will* be maths which crops up which you are not very confident with - you just need to be able to identify these weak points and brush up on them as they come along.


A corollary to this point, many profs are chosen ( and chose to teach ) based on their name/research, not because of their ability to teach. This is one of the major tragic downsides to many Universities, you may end up having a brilliant professor, who frankly looks at you with resentment, as teach you is "getting in the way of his real job". It seems being a good teacher is not one of the major requirements. I got pretty lucky in this regard, as I had a number of friends that went to University of Waterloo ( at the time an extremely highly regarded school for CS, easily top 5 in North America, not sure about now ) and I heard nothing but horror stories. Like have TA's teach 99% of classes, or worse, teachers that didn't speak functional English. That last part was far too common, and attending lectures and puzzling out WTF you are supposed to be doing/learning when your prof cannot effectively communicate... more than a weeee bit difficult.

Often there is an opportunity to go to the school in advance, sit in on a few classes, etc... DO IT!

This topic is closed to new replies.

Advertisement