Am thinking about majoring in computer science.

Philip Greenspun's Homepage : Philip Greenspun's Homepage Discussion Forums : Ask Philip : One Thread
Notify me of new responses
I'm 29 years old and am currently working as a truck mechanic. I was
going to school to get my civil engineering degree but got
frustrated with the math (tried taking calc 2 twice, withdrew both
times because I was failing). After getting a generic A.S. degree, I
decided that I was done with school and wanted to get a "real" job.
Got my CDL and drove truck for a few years. When the economy took a
dive I got into mechanics which was more stable. I'm realizing now
that "real" jobs are dirty, take a toll on your health, and don't
pay that well. Never did any programming or really thought about
getting into computers, but always had an interest in how things
work. So why I am thinking about majoring in computer science? Well
basically it is the only major that I have any interest in at the
only school that I can realistically go to and still work my full
time job. I know that is not the best reason to pick a major but I
am really unhappy in the career Iメm in now and I know a Bachelors
will help me get a better job, i.e. one that pays well and that I
will actually enjoy doing. By the way, this school does not have
civil or any other engineering programs. If it did I would not be
posting this question. Been doing some research to make sure I know
what Iメm getting myself into and would greatly appreciate some
insight. Thanks!

-- Mike Morgan, April 3, 2011

Answers

Mike: To answer your questions above and below, a lot of what is taught in a CS bachelor's is irrelevant to being able to do useful stuff with computers. Successful programmers and computer administrators in environmental engineering may not have taken any standard CS courses.

I looked at http://www.sxu.edu/academic/liberal/Computer_Science/science_major.asp and see that you're be learning about how operating systems work and are built. That's certainly not necessary for being a successful user of Linux or Windows. Software Engineering is unlikely to be relevant to someone in Environmental Science unless you're going to direct a big project. Discrete Math and Business Statistics could be useful almost anywhere. If you say "I'm curious to know how my Windows desktop machine works and how the Web pages that I get from Facebook and Amazon.com are built up and delivered", you can probably make it through this program.

-- Philip Greenspun, May 7, 2011


P.S. to Am thinking about majoring in computer science.

Just wanted to add one more bit of info. I want to get into the environmental field which is what I wanted to focus on in civil engineering. I would have rather majored in environmental science (if not engineering) but the school I going to attend does offer an E.S. major so I'm going to go for a minor in E.S. Wanted to add this in here. Thanks again!

-- Mike Morgan, April 3, 2011

Spend the summer learning to program to find out how you like it. You don't need a formal degree these days to get full-time programming jobs, and you can do freelance work to get experience.

Set up a Linux computer (Ubuntu Linux is the easiest to set up), and spend the summer learning to program in Python. It will be a valuable experience.

Here are some of the best online Python tutorials, including a link to videos and course material for MIT's introductory computer science course, which uses Python: http://www.quora.com/How-can-I-learn-to- program-in-Python/answer/James-Thornton

Build something that you want to use so it will be meaningful to you. Do you have a blog? That's usually a good first exercise. It's easy to do using Flask -- follow the tutorial (http://flask.pocoo.org/docs/).

Here are some tips to get you started:

Use Emacs as the text editor to write your code -- it usually comes prep-installed on Ubuntu, and it has a Python mode. Here are some Emacs tutorials (there are some good videos on YouTube too):

Use PostgreSQL as your database. To install it on Ubuntu, use this command:

$ sudo apt-get install postgresql

Use SQLAlchemy (http://www.sqlalchemy.org/) to connect your Python website to PostgreSQL.

Here's a good SQL tutorial: http://philip.greenspun.com/sq l/

When you build a blog, you don't have to worry about building a public authentication and comment system if you use something like Disqus (http://disqus.com/) -- you just include the Disqus JavaScript tag at the bottom of the blog's entry page.

Here are some good JavaScript tutorials: http://www.quora.com/What-are-good-books-preferably-found- online-for-free-like-eloquent-javascript-for-learning-javascript

Use StackOverflow to ask programming questions: http://stackoverflow.com/

-- James Thornton, April 4, 2011


Note that Philip has written a lot of good stuff related to this subject, and James is also giving you good advice above; I'll try not to repeat any of what they've said here. For the sake of discussion here I'm also going to largely assume that "get a degree in Computer Science, and then work as a computer programmer" is the specific path you choose to take, ignoring both alternate paths to the same job, and entirely different paths and jobs. But please do not take that as endorsement of that specific path!

Mike, to be blunt, the first question to ask yourself is, how smart are you? (E.g., what were your SAT scores?) To be a good computer programmer you have to be smart; +2 standard deviations from the US mean IQ should be fine, +1 is probably too low.

As with most fields, IQ is by no means the only trait predictive of success, but it's a very important one, and better studied than most. Unfortunately, it's difficult to find serious factual information to help decide what fields someone is likely to be good vs. bad at or enjoy vs. hate, so instead we fall back on crude rules of thumb like the above.

Next question is, how motivated are you? The only way to learn to program well is to dump lots of time into it, writing code and reading code. Your first one or two serious undergraduate programming classes will force you to do that, which is the primary (perhaps only) reason they're useful. But, especially since you've never programmed before at all, you will be pulling all nighters, spending 30+ hours on individual homework assignments, etc.

What you'd like to avoid though, is paying big money to a school only to drop out after you tried your damndest, because you finally realized that you just don't have the ability. Thus the IQ question above, to help calibrate you. Also, pointers and recursion are said to wash many students out of the CS curriculum, so if you can handle those it's a good sign.

Most people who can get through an engineering degree at a state university seem able to learn to program to some degree. However, my experience is that some of those folks definitely cannot do good work as a programmer no matter how hard they try. Possibly many or even most of them can't, but I really don't know; insufficient data.

Also, keep in mind that some of the programmers at large software companies (like Oracle) really aren't any good at all; some are actually grossly incompetent. With some luck, it's possible to scrape by in a large company with only very rudimentary ability, essentially by leaching off your more competent coworkers, and not making it too glaringly obvious that you are net loss to the company and really should be fired. Obviously though, I recommend against anything like that path, and the bar I set above should help ensure that don't find yourself in that position.

-- Andrew Piskorski, April 4, 2011


This is all very good info and yes I did read the other posts relating to majoring in CS. To make myself clear, I was not really planning on getting a programming job. Rather I want to use the degree in CS to get into an environmental science related job, such as environmental remediation, land/water management, remote sensing, etc. I would have rather majored in environmental science and minored in CS, but like I said in my P.S. above, the school that I�m planning on going to does not offer a major in E.S. This school, Saint Xavier University in Chicago, does offer a major in computer studies, which is an �applications oriented program�. But I feel that I will gain more useful skills, and be taken more seriously by a future employer, by getting the degree in computer science. I guess my main question is majoring in computer science, as opposed to a degree like computer studies, just going to be a huge pain and ultimately a waste of time and money, considering what kind of job I want to get?

-- Mike Morgan, April 5, 2011

Hi Mike, a degree in Computer Science will definitely help you get a better paying job. However you should really look out for majoring in a field that interests you rather than just a better pay cheque. But if computer science is what really excites you then you can check out Bachelor of Computer Science degree programs offered by CollegeAmerica which offers two computer science bachelor degrees; one with Networking emphasis and the other with a Programming emphasis.

-- Willam Drek, May 11, 2011