Looking to change my degree to computer science/programming

Oct 27, 2007
17,010
1
0
I'm just about to finish my fourth semester in astrophysics at university. I enjoy the work and I'm interested in it but my grades aren't great and without an excellent degree and a significant amount of post graduate study there is no way I will get a career in this field. Even if I go the whole hog and spend another 6+ years finishing my degree and getting a PhD there's still a good chance I will find myself unable to find a good job in astronomy or physics research. On top of all of this, while the subject matter interests me I find myself bored and unmotivated when it comes to the details - I just don't think I'm cut out to be a scientist, as much as it sucks to admit it.

This semester I took a paper out of interest on Java programming. I found it very interesting and I'm doing very well. I've been in love with computers since I was a kid but this is the first time I have considered working with them. So basically my question is, is there a good amount of work out there for a computer programmer, or has the market become saturated with programming graduates in the last few years? I have done my homework and found that I could finish a programming degree (mostly working in c++) in the same amout of time (or even less) as it would take me to finish my astrophysics degree.

Any input at all from people's experience of working or studying in this field would be just fantastic. I'm very good at mathematics but I haven't done any statistics for a long time. The only maths papers required to graduate in this area that I haven't already completed are two 100-level discrete mathematics papers involving sets, networks and logic. I'm confident I wouldn't have a problem here.
 
Oct 27, 2007
17,010
1
0
By the way, I live in New Zealand but I'm comfortable with moving overseas to find a job.

Edit - I should also mention that at this early stage I don't have any particular preferences for the area I want to work in. I'm sure this will change over time but at this stage I would be comfortable to just take a wide range of comp sci papers to find what interests me the most.
 

imported_Dhaval00

Senior member
Jul 23, 2004
573
0
0
IT needs will never saturate. As long as you're passionate, you'll always find a job in programming. It might be hard to get your foot in the door when the economy is not doing so good (the US), but otherwise the market for tech jobs seems abundant. I have a friends in Australia, and they concur... in fact they said the IT job market seemed to be growing. Of course, you being a Kiwi, might not fair well with the Kangaroos ;).
 
Oct 27, 2007
17,010
1
0
Thanks for the advice Dhaval00. D you work in IT yourself? Moving to Australia is definitely a possibility, and a very common move for Kiwis looking to get into a bigger job market. I think I can handle the roos :p
 

drebo

Diamond Member
Feb 24, 2006
7,035
1
81
I live in a place where there are two universities and several major corporations have their headquarters here. My father works for one of them in IT and says that most of the new graduates in Computer Information Systems or Computer Science don't know their ass from a hole in the ground when it comes to actually working in a production environment. Having gone through college, I'd tend to concur with his assessment. It's very possible, at least here, to go through school and get Bachelor's degree in CIS or CS and not know anything. I spent some time in each program.

My advice would be to practice. Practice, practice, practice. Knowing how to pass a class and knowing how to program are two very different things, and are not mutually inclusive. The degree might get you a job, but if you can't do that job, you may as well not have wasted the time getting the degree.

So, even though there are more IT people now than ever, entry-level positions are fairly high turnover as people find out that they're not quite qualified. Once your foot's in the door, you should have a relatively stable career, though.
 

Chosonman

Golden Member
Jan 24, 2005
1,136
0
0
Computer programming is fun if you like to be creative, can understand other people's requirements and work within those constraints, work within a team environment, and like the pressure of working under strict deadlines.
 

Cogman

Lifer
Sep 19, 2000
10,277
125
106
Originally posted by: drebo
I live in a place where there are two universities and several major corporations have their headquarters here. My father works for one of them in IT and says that most of the new graduates in Computer Information Systems or Computer Science don't know their ass from a hole in the ground when it comes to actually working in a production environment. Having gone through college, I'd tend to concur with his assessment. It's very possible, at least here, to go through school and get Bachelor's degree in CIS or CS and not know anything. I spent some time in each program.

My advice would be to practice. Practice, practice, practice. Knowing how to pass a class and knowing how to program are two very different things, and are not mutually inclusive. The degree might get you a job, but if you can't do that job, you may as well not have wasted the time getting the degree.

So, even though there are more IT people now than ever, entry-level positions are fairly high turnover as people find out that they're not quite qualified. Once your foot's in the door, you should have a relatively stable career, though.

I completely agree. Most of the people in my CS classes are completely brain-dead. Things that I have found to be intuitive (when to make a function and what to name it) they seem to have no clue. The funniest thing is to see them try and cram everything into one main function and turn that in as an assignment because they couldn't figure out how to do it any other way.

Practice, you will probably go much further if you learn programing on your own and take a degree in business ect.
 

mosco

Senior member
Sep 24, 2002
940
1
76
Originally posted by: Cogman
Practice, you will probably go much further if you learn programing on your own and take a degree in business ect.

Thats not very good advice. Computer Science is like any other degree. You are going to get out of it what you put it in. If you take assignments seriously and ask questions you will get a lot out of it. And when other people ask questions, pay attention. If you want the business side, get an internship, not a business degree.

You also don't want to go into IT. Unless you work in network operations, its honestly a pretty lame thing if you are interested in programming.
 

JACKDRUID

Senior member
Nov 28, 2007
729
0
0
Originally posted by: Cogman

Practice, you will probably go much further if you learn programing on your own and take a degree in business ect.

bad bad advice :D

to really program, you need to know the fundamentals and basics. My previous supervisor was a business degree self taught programmer... bad bad idea.. he doesn't even know the fundamentals of objects and project planning... as it turned out, nothing was really planned and we always had to go back and modify codes.

that said, cs isn't an easy major... especially the later classes such as database design , compiler design, AI theory. be sure to research before you change major.
 

brikis98

Diamond Member
Jul 5, 2005
7,253
8
0
please note the following, important information:

computer science != programming != IT != tech support

Programming is just one part of computer science, in the same way that algebra is one part of math. Like algebra, it's a very large and far-reaching component, but CS involves a lot more than just programming. People who can program are a dime a dozen and good software companies aren't looking for "programmers". What software companies want are "software engineers" - people with a thorough understanding of the concepts in computer science, such as algorithms, data structures, asymptotic complexity, databases, security, usability, and yes, even programming. That's why you get a degree in "computer science" and not in "programming". The responsibilities of a software engineer include analyzing/creating requirements, designing solutions, implementing them (this is where programming comes in), testing them, etc.

IT is a totally different beast. IT people may or may not possess an understanding of computer science, depending on the job requirements. In my experience, the typical IT person has a limited understanding of CS: they know some amount of scripting, network/system administration and have worked with lots of software. Their role is to support the technology needs of a company and not actually create any of the technology. Their responsibilities include anything from wiring the phones (not CS), setting up the network (network administration is a subset of CS), managing passwords & credentials (security is a subset of CS), installing software (not CS), and so on.

Tech support is yet another separate profession. These are the guys that answer phones/emails/IMs in a company to help users or customers troubleshoot technology issues. Like IT, these guys may or may not have an understanding of computer science, depending on the requirements of their job. The vast majority of tech support have virtually no knowledge of CS and are just experts in the one piece of software/hardware they are supporting.

Now that all of that is out of the way, let's discuss the original question: should you major in computer science? I live in the US, so I'm not sure how the situation in New Zealand is, but over here, the demand for CS people is very strong. Moreover, as more and more things are going high tech, the demand will only grow. CS also happens to be one of the highest paying fields in the engineering/science disciplines. So, purely from a job availability standpoint, this is a very good field to get into.

The real question is whether you actually know what you're getting into. You wrote in the OP "I could finish a programming degree (mostly working in c++)", which to me indicates you still have little conception of what computer science is. I would also wager you have little experience in what a software engineering job is like. I strongly recommend you research these fields very carefully before you get into them. An internship at a software company would be an excellent way to learn about this - you'll see what the job looks like and the kind of skills you need. Another good way is to work on some sort of software outside of class. Join an open source project and see if you can contribute something. This will help you learn various software concepts, find out what areas of knowledge you're missing, and let you know if this is the kind of field you want to get into.
 

imported_Dhaval00

Senior member
Jul 23, 2004
573
0
0
Originally posted by: GodlessAstronomer
Thanks for the advice Dhaval00. D you work in IT yourself? Moving to Australia is definitely a possibility, and a very common move for Kiwis looking to get into a bigger job market. I think I can handle the roos :p

I am in the IT field, am young [I graduated only a couple of years ago, and am always in-the-know of the market trends for tech jobs], and am still learning as I go along. I program mostly in M$ technologies, but my job has grown more into a lead analyst kind of position. I meet with customers, assess requirements, delegate tasks [fun!!], propose design, estimate timelines, promote teamwork, etc., while trying to maintain a handle on everyday programming tasks. As some of the folks mentioned above, you need to have a drive for programming, you need to be innovative. Practice isn't going to get you anywhere - theory and a good learning base is very important; once you get the gist of it, things will follow along - then it's programming more, not practice more! You, as an IT soul, will become obsolete in 18-20 months if you are unwilling to learn new trends and upgrade your skills constantly. For a person like me, it's fun - I don't know about you.

Down the road, an MBA might help, but again, it depends on the kind of things you like to do. If you're not the gregarious type, maybe you'll program all your life ;).
 

JACKDRUID

Senior member
Nov 28, 2007
729
0
0
Originally posted by: brikis98
please note the following, important information:

computer science != programming != IT != tech support

Programming is just one part of computer science, in the same way that algebra is one part of math. Like algebra, it's a very large and far-reaching component, but CS involves a lot more than just programming. People who can program are a dime a dozen and good software companies aren't looking for "programmers". What software companies want are "software engineers" - people with a thorough understanding of the concepts in computer science, such as algorithms, data structures, asymptotic complexity, databases, security, usability, and yes, even programming. That's why you get a degree in "computer science" and not in "programming". The responsibilities of a software engineer include analyzing/creating requirements, designing solutions, implementing them (this is where programming comes in), testing them, etc.

IT is a totally different beast. IT people may or may not possess an understanding of computer science, depending on the job requirements. In my experience, the typical IT person has a limited understanding of CS: they know some amount of scripting, network/system administration and have worked with lots of software. Their role is to support the technology needs of a company and not actually create any of the technology. Their responsibilities include anything from wiring the phones (not CS), setting up the network (network administration is a subset of CS), managing passwords & credentials (security is a subset of CS), installing software (not CS), and so on.

Tech support is yet another separate profession. These are the guys that answer phones/emails/IMs in a company to help users or customers troubleshoot technology issues. Like IT, these gays may or may not have an understanding of computer science, depending on the requirements of their job. The vast majority of tech support have virtually no knowledge of CS and are just experts in the one piece of software/hardware they are supporting.

Now that all of that is out of the way, let's discuss the original question: should you major in computer science? I live in the US, so I'm not sure how the situation in New Zealand is, but over here, the demand for CS people is very strong. Moreover, as more and more things are going high tech, the demand will only grow. CS also happens to be one of the highest paying fields in the engineering/science disciplines. So, purely from a job availability standpoint, this is a very good field to get into.

The real question is whether you actually know what you're getting into. You wrote in the OP "I could finish a programming degree (mostly working in c++)", which to me indicates you still have little conception of what computer science is. I would also wager you have little experience in what a software engineering job is like. I strongly recommend you research these fields very carefully before you get into them. An internship at a software company would be an excellent way to learn about this - you'll see what the job looks like and the kind of skills you need. Another good way is to work on some sort of software outside of class. Join an open source project and see if you can contribute something. This will help you learn various software concepts, find out what areas of knowledge you're missing, and let you know if this is the kind of field you want to get into.

listen to this guy --^

ps. except the bolded part... :)
 
Oct 27, 2007
17,010
1
0
Thanks for the great advice guys. Especially to brikis, thanks for your detailed reply. I'll need to put a lot of thought into this and I'll probably make a decision after exams are finished for the semester.
 

trexpesto

Golden Member
Jun 3, 2004
1,237
0
0
That's great you are doing well in programming! It's a useful skill to have. There are orders of magnitude more jobs in computer fields, involving a varying level of actual computer Science.

Although you may feel bad about astrophysics, you are obviously smart and can communicate well. Having the sense to modify your plan when you need to is priceless. All of which are a killer combination with strong CS background, helps advancement and your sanity. Math background will get you some extra props. Game companies love math majors supposedly.

If your school is known as The Best for CS, that's good. In the US there is a strong snob factor in the name of the school you graduated. MIT. Schools that cherry-pick freshmen.
It might be worth transferring just for that reason, as it seriously matters to the rest of your career.

I had the most fun working in small teams, learned tons from more experienced engineers, keeps the motivation up, and makes life interesting. Started as an intern in D.C. and ended up working for the darn military-industrial complex. Now I am a wilderness ranger, but still enjoy programming, and may have to get back into it since I am getting old and need the money.

My longest job was with a startup that lasted and grew through the bubble bursting, then flamed out a few years ago. (after I left, no jokes!) At first I was working on the development environment and managing the build and some testing, documentation, deployment and delivery. (Testing is a GREAT way to get in on the ground floor of a company, just be clear that you expect it to lead somewhere else, I had to threaten to quit.. not advised.) We were developing an early version of an application server, which supported projects relating to information analysis that brought in the cash. So, having automated the build and some other processes, they deigned to give me some additional programming related work, which went well and I was in to one of the teams working on domain-specific projects. We received requirements, did the design, spec, and implementation for mini-applications. An audio analysis tool was my first major assignment. The schedule was like two weeks for design and review, two weeks for implementation and testing, and then there was some additional documentation, integration and The Demo to The Client. I can imagine that it is a similar cycle in many project-oriented services teams, whether in IT, web-dev, etc. shops.

....Edit, sorry some friends stopped by.. was going to highlight the distinction between working on Projects versus Products, because that is a big difference. Also consider: Percent travel or telecommute, corporate skills like risk management, comfort with continuous education. Adaptability and resourcefulness are key. Jargon tolerance!

You have alot going for you. If you can do it, an internship can be great. Read and digest, skim the program from java one, if java is your focus. Scope out the companies in your location/area of interest. Certification is often desirable, java or C#. And take advantage of your school while you can, not just try to get out quick. Invaluable intros to the hard topics of CS, which you might miss otherwise.

Science-related programming might interest you. Lots of modeling in astronomy? Happened across this link, looks good:
http://farside.ph.utexas.edu/teaching.html
 

brikis98

Diamond Member
Jul 5, 2005
7,253
8
0
Originally posted by: JACKDRUID
Originally posted by: brikis98
please note the following, important information:

computer science != programming != IT != tech support

Programming is just one part of computer science, in the same way that algebra is one part of math. Like algebra, it's a very large and far-reaching component, but CS involves a lot more than just programming. People who can program are a dime a dozen and good software companies aren't looking for "programmers". What software companies want are "software engineers" - people with a thorough understanding of the concepts in computer science, such as algorithms, data structures, asymptotic complexity, databases, security, usability, and yes, even programming. That's why you get a degree in "computer science" and not in "programming". The responsibilities of a software engineer include analyzing/creating requirements, designing solutions, implementing them (this is where programming comes in), testing them, etc.

IT is a totally different beast. IT people may or may not possess an understanding of computer science, depending on the job requirements. In my experience, the typical IT person has a limited understanding of CS: they know some amount of scripting, network/system administration and have worked with lots of software. Their role is to support the technology needs of a company and not actually create any of the technology. Their responsibilities include anything from wiring the phones (not CS), setting up the network (network administration is a subset of CS), managing passwords & credentials (security is a subset of CS), installing software (not CS), and so on.

Tech support is yet another separate profession. These are the guys that answer phones/emails/IMs in a company to help users or customers troubleshoot technology issues. Like IT, these gays may or may not have an understanding of computer science, depending on the requirements of their job. The vast majority of tech support have virtually no knowledge of CS and are just experts in the one piece of software/hardware they are supporting.

Now that all of that is out of the way, let's discuss the original question: should you major in computer science? I live in the US, so I'm not sure how the situation in New Zealand is, but over here, the demand for CS people is very strong. Moreover, as more and more things are going high tech, the demand will only grow. CS also happens to be one of the highest paying fields in the engineering/science disciplines. So, purely from a job availability standpoint, this is a very good field to get into.

The real question is whether you actually know what you're getting into. You wrote in the OP "I could finish a programming degree (mostly working in c++)", which to me indicates you still have little conception of what computer science is. I would also wager you have little experience in what a software engineering job is like. I strongly recommend you research these fields very carefully before you get into them. An internship at a software company would be an excellent way to learn about this - you'll see what the job looks like and the kind of skills you need. Another good way is to work on some sort of software outside of class. Join an open source project and see if you can contribute something. This will help you learn various software concepts, find out what areas of knowledge you're missing, and let you know if this is the kind of field you want to get into.

listen to this guy --^

ps. except the bolded part... :)

uh woops :Q

good catch, went back and fixed it :)
 

Madwand1

Diamond Member
Jan 23, 2006
3,309
0
76
Programming is not likely to be saturated at the entry level for quite some time -- there's a lot of mental effort required, and fresh gray matter and non-carpal tunnel hands and working eyes are always nice..

What you should probably consider however is not typical IT per se, but combining what you've already learned with programming. It's a big world, and there are tons of varied opportunities, and scientific knowledge + computer automation capability is a logical combination. This would probably be something to be discussed with your supervisors to ensure that you have an appropriate foundation on both sides.
 
Sep 29, 2004
18,665
67
91
My company tends to go after engineering degrees with a comp sci minor. we like Electrical and Computer engineers with a sound background in programming. It's really best for waht we do (making submarines)
 

911paramedic

Diamond Member
Jan 7, 2002
9,450
1
76
Originally posted by: IHateMyJob2004
My company tends to go after engineering degrees with a comp sci minor. we like Electrical and Computer engineers with a sound background in programming. It's really best for waht we do (making submarines)

Syntax error. Boat is going down...

I learned more in a semester of C++ than years of "self teaching". Pseudocode being among one of the most important parts, which is writing your program out in plain english so you know what you want to do with your program. That way you have a nice blueprint to follow and it really cuts down on errors and redundancy.

Also, learning about the n factor. You can write a program so it repeats one loop a few times or goes through the entire program and becomes exponentially less efficient. (I should say through separate functions and sub functions) Being able to write code in the most efficient manner is very important, and I doubt you will learn that on your own... I never did.

Good luck in whatever you decide, but remember, do what you love most or you will hate your life 10 hours at a time. :p
 

chusteczka

Diamond Member
Apr 12, 2006
3,400
1
71
Originally posted by: IHateMyJob2004
My company tends to go after engineering degrees with a comp sci minor. we like Electrical and Computer engineers with a sound background in programming. It's really best for waht we do (making submarines)

:thumbsup:

Consider obtaining your bachelor's degree in astrophysics and then going for a master's degree in computer science. The master's degree in CS does not need to be the best program. An academic program that teaches you how to program and introduces the algorithmic and mathematical concepts will work well. The combined degree will be very strong even if your bachelor's is at a 'C' level.

Theoretical knowledge of any subject with practical programming skills is a very strong combination.

My engineering CS program the University of Illinois had an "application sequence" that required enough classes to almost have a minor in any subject outside of CS. The classes you have already completed may fulfill a similar requirement in any CS program you find interest in.
 
Sep 29, 2004
18,665
67
91
Originally posted by: 911paramedic
Originally posted by: IHateMyJob2004
My company tends to go after engineering degrees with a comp sci minor. we like Electrical and Computer engineers with a sound background in programming. It's really best for waht we do (making submarines)

Syntax error. Boat is going down...

I learned more in a semester of C++ than years of "self teaching". Pseudocode being among one of the most important parts, which is writing your program out in plain english so you know what you want to do with your program. That way you have a nice blueprint to follow and it really cuts down on errors and redundancy.

Also, learning about the n factor. You can write a program so it repeats one loop a few times or goes through the entire program and becomes exponentially less efficient. (I should say through separate functions and sub functions) Being able to write code in the most efficient manner is very important, and I doubt you will learn that on your own... I never did.

Good luck in whatever you decide, but remember, do what you love most or you will hate your life 10 hours at a time. :p

Regarding the bolded part and hte real world. You write a program to work. If it performs as you would want, even if slower than it could be, you are done. And in the real world, the tweaks you have to make to make things run better are often things you would never learn about in school.

You learn a language overtime. No class is going to make you a Java or C++ guru. Only experience will do that.

Most of the people that are experts in software are so because they have been doing it for 20 years. These guys will do circles around any college grad and most were electrical or computer engineers that became software experts on their own.
 
Sep 29, 2004
18,665
67
91
Originally posted by: chusteczka
Originally posted by: IHateMyJob2004
My company tends to go after engineering degrees with a comp sci minor. we like Electrical and Computer engineers with a sound background in programming. It's really best for waht we do (making submarines)

:thumbsup:

Consider obtaining your bachelor's degree in astrophysics and then going for a master's degree in computer science. The master's degree in CS does not need to be the best program. An academic program that teaches you how to program and introduces the algorithmic and mathematical concepts will work well. The combined degree will be very strong even if your bachelor's is at a 'C' level.

Theoretical knowledge of any subject with practical programming skills is a very strong combination.

My engineering CS program the University of Illinois had an "application sequence" that required enough classes to almost have a minor in any subject outside of CS. The classes you have already completed may fulfill a similar requirement in any CS program you find interest in.

The only problem I see is that I don't know what the benefit of an astrophysics degree would be. I don't know any companies that would need a software engineer with an astrophysics background.
 

imported_Dhaval00

Senior member
Jul 23, 2004
573
0
0
Originally posted by: IHateMyJob2004
Originally posted by: chusteczka
Originally posted by: IHateMyJob2004
My company tends to go after engineering degrees with a comp sci minor. we like Electrical and Computer engineers with a sound background in programming. It's really best for waht we do (making submarines)

:thumbsup:

Consider obtaining your bachelor's degree in astrophysics and then going for a master's degree in computer science. The master's degree in CS does not need to be the best program. An academic program that teaches you how to program and introduces the algorithmic and mathematical concepts will work well. The combined degree will be very strong even if your bachelor's is at a 'C' level.

Theoretical knowledge of any subject with practical programming skills is a very strong combination.

My engineering CS program the University of Illinois had an "application sequence" that required enough classes to almost have a minor in any subject outside of CS. The classes you have already completed may fulfill a similar requirement in any CS program you find interest in.

The only problem I see is that I don't know what the benefit of an astrophysics degree would be. I don't know any companies that would need a software engineer with an astrophysics background.

Look up NASA Astrophysics Data System. There are many more. Plus, as the appetite for space exploration grows, this guy will probably be more demanding than you or I ever will be.

We have a couple of individuals in our company working as programmers - one had his masters in Psychology, while the other had her bachelors in Marine Biology and her masters in Math. And beleive me, we build some top-notch systems for state and federal governments. Point being, you need not be an engineer or or a computer scientist to land a programming job. Sure, it's the majority, but most companies that diversify will also look for alternate talent. I am not saying you don't need to have any programming experience... sure, that's the primary requisite, but your posts seem to take a jab at other professions w.r.t programming.
 

911paramedic

Diamond Member
Jan 7, 2002
9,450
1
76
Originally posted by: IHateMyJob2004
Originally posted by: 911paramedic
Originally posted by: IHateMyJob2004
My company tends to go after engineering degrees with a comp sci minor. we like Electrical and Computer engineers with a sound background in programming. It's really best for waht we do (making submarines)

Syntax error. Boat is going down...

I learned more in a semester of C++ than years of "self teaching". Pseudocode being among one of the most important parts, which is writing your program out in plain english so you know what you want to do with your program. That way you have a nice blueprint to follow and it really cuts down on errors and redundancy.

Also, learning about the n factor. You can write a program so it repeats one loop a few times or goes through the entire program and becomes exponentially less efficient. (I should say through separate functions and sub functions) Being able to write code in the most efficient manner is very important, and I doubt you will learn that on your own... I never did.

Good luck in whatever you decide, but remember, do what you love most or you will hate your life 10 hours at a time. :p

Regarding the bolded part and hte real world. You write a program to work. If it performs as you would want, even if slower than it could be, you are done. And in the real world, the tweaks you have to make to make things run better are often things you would never learn about in school.

You learn a language overtime. No class is going to make you a Java or C++ guru. Only experience will do that.

Most of the people that are experts in software are so because they have been doing it for 20 years. These guys will do circles around any college grad and most were electrical or computer engineers that became software experts on their own.

I totally understand and agree with that. However, if a program can run through a thousand cycles rather than a million cycles to get the same thing accomplished, that's the program I want. That's all I meant.

On a large project documentation and a good team of bright programmers is you want.