My major

I am new to this website, so I apologize in advance if this is not a good place to ask this question but I am desperate.
I am currently finishing up my freshman year at college and have taken all generals. I am looking into majors and think Computer Science may be right for me. I have many family members who have worked in the field.
In high school I was always a very strong math student. I got 5’s on the AP Stats and Calc AB & BC tests as well as A’s in the classes. I have basically no experience with coding or computers in general but enjoy problem solving and computers.
Basically my question is how will I know if the major is right for me?
When will I be able to tell if I have an aptitude for it?
Thank you in advance for any answers.

Take a beginning CS class and see how it goes. It’s impossible to know for sure at this point.

People tend to overstate the relationship between math and CS. Just because you’re good at one doesn’t necessarily mean you’ll be good at the other.

If not what are some things that do correlate with success in CS?

@simba9 How does people overstate relationship? That is like people overstating the relationship between Math and Physics.

In regard to the OP, computer science is really the art of problem solving, and I think you will do fine in it. Although stat and Calc isn’t really the math that is involved CS as CS is more discrete Math, I think you will do fine, because succeeding in Math shows you are a critical thinker. So, I have no doubts in your ability the understand the mathematics behind Computer Science. On the programming side, it is really just designing an algorithm. In other words, getting from point A to point B. Since you say you enjoy problem solving, I say you should have no problem as well.

I think you will do fine if you pick CS. Whether or not you will enjoy it, well, there is only 1 way to truly find out.

@idkName, you use a lot of math in physics. On the other hand, the majority of computer programs written don’t involve anything more than basic arithmetic. Years ago CS was very logic and discrete math-intensive, but those aspects of CS are mostly abstracted away and programmers don’t have to deal with them.

@simba9 There is a lot of recent research in computer science that is very math-heavy - it largely depends on what sub-field of CS you go into.

@CSP123 I agree with the other replies; you should take the introductory CS class (definitely try to take it next semester) and find out.

@MITer94 I agree there’s a lot of cool stuff being done in CS that’s math-heavy, but most programming jobs don’t involve that.

@simba9 key word: PROGRAMMING jobs. Programming jobs != CS jobs. Programming jobs is a pretty low job for a CS Major. Also, Programming jobs is not the same thing as a software engineering.

@idkName, what do you think the differences between a programming job, a CS job and a software engineering job are?

Hours spent watching Star Trek is proportional to success in CS. Correlation coefficient is estimated to be .998

@simba9 What do you think CS people do? Do you think they setup servers, code web pages, make games/software and stuff? Sure they can do that, but you are confusing CS with the major of IT. No, IT isn’t someone that fixes computers. IT majors is basically the CS major without the math. They have to take the programming courses that CS majors take. The difference is that CS have to take theory and Math with the programming course. I don’t know anyone in CS/software engineering field (outside of academia), so I can’t say much. But I imagine if you are hired by google working as a software engineer, you probably won’t be just doing making apps like google docs. You will probably design more efficient algorithms (PageRank for instance), utilize machine learning techniques to find user specific ads, etc.

P.S

I don’t watch Star Trek. I guess i need to change major now lel.

That is a lot of what they do. I have a CS degree and except for writing games, have done all of the above.

Once they get out of school and get a job, most programmers/software engineers/CS grads spend the bulk of their time doing mundane things like fixing bugs, and maintaining and extending existing code. That even goes for cutting edge projects here in the San Francisco/Silicon Valley area. They’re not glamorous and don’t get much press, but the majority of the software projects here are pretty much just moving data between a database and a screen, with a little bit of processing in between. Often there’s nothing more than very basic arithmetic involved.

If you do get a job at Google, it’s very unlikely you’ll be hired to write more efficient algorithms or utilize machine learning techniques. You’ll probably be doing what programmers everywhere typically do - fix bugs and maintain code - for existing Google apps like Google Docs. I have two friends who used to work at Google. Both had CS degrees and years of experience. They spent their time eyeballing ads to make sure there was nothing illegal in them.

Uh-oh. You’re doomed. :slight_smile:

Meh, I guess there are a lot of CS doing raw labor (programming). That is really a low job for CS, because you don’t need a CS degree to debug, unless you are in charge of Cybersecurity. Anyone can do programming and debug code. But a lot of biologist just probably hang out in the lab and run PCRs anyways. so ¯_(ツ)_/¯. If you were in Acadmia tho, it would be different. It won’t be just debugging 24/7.

To the OP, the others hit it pretty well - you just have to try it out and you will know quick. Being good at math helps but isn’t always correlated.

@idkName

As said above, most of the jobs in CS are software engineering. That said, math and theory do come into play, but the point is that it is much less often than in academia.

This is at best a bad reduction and at worst wrong. It depends on where you are, but most IT majors are not going to be well equipped enough to be software engineers compared to CS majors - sure, they could probably do a good deal of the job, but the vast majority of programming jobs will prefer CS to IS if you just have a degree and no experience. More details below.

This isn’t software development either.

Sure, anyone can, but most are absolutely terrible hacks, particularly those who are self-taught. The software industry has plenty of “eh” programmes out there - what is lacking are good programmers - the ones that actually use CS concepts beyond simple coding. Companies are willing to pay for those, and a good CS college will teach you good program design, algorithm design, and all the other needed stuff. That’s where the CS degree comes into play.

You seem to have a very narrow and lowly opinion of software development when that is what most CS majors not only do but want to do career-wise, at least from my experience.

Where exactly are you in terms of your career / education? Your view of the field seems pretty distorted (and odd from other posts I’ve seen), so what exactly is your plan if you consider development so lowly? Stay in academia?

I hope I didn’t make it sound like all CS jobs are dull and uninteresting. I’ve had some great jobs that I loved and were very math-intensive - 3D graphics for flight simulators, image processing for medical applications and movie special effects, radar systems modeling and simulation, battlefield analysis at the Pentagon, fixed income analytics on Wall Street. But those jobs probably made up less than 1/3 of my career.

I’ll guess that typically 85% of any programmer’s/software engineer’s/CS grad’s work will be spent debugging something. Either your own or someone else’s code.

I agree that idkName has some serious misconceptions about “real world” CS, but that’s pretty common while you’re still in school. I was in the same boat back when I was in college.

@PengsPhils I mean I looked at the curriculum of IT majors, and they basically have the same amount of programming classes as CS majors (or even more technical classes).

I do not think lowly of software engineers. In fact, I envy software engineers. I just don’t like it that people think programming = computer science. It is not. Programming is a tool computer scientists uses. In fact, I been told that you can do computer science without a computer. Both of my parents have done programming work and they both have a PhD in physics. My friend, who is in high school, also have a job for developing software for a small company. To me, there is a distinction between a software developer and a software engineer.

My view is probably distorted because I don’t have first hand experience. Feel free to read my other post and correct any misconception I have. I greatly appreciate these valuable insights.

This seems like backtracking - your tone really doesn’t support that. I don’t mean to be critical here - frankly sometimes when I have gotten in over my head on a subject I have done something similar. Additionally, why do you envy software engineers? If you’re a CS major, you can do that in a few years…

I have yet to hear this before - most companies and people will use those two words synonymously. What I’ve heard more is there is a difference between coding and programming, or along those lines. I’m guessing this is probably what you’re referencing, and I don’t think what anyone here has said is incompatible.


Programming is to computer science what squares are to rectangles - sure, programming isn’t only CS, but it sure is a good part of it. The distinction between just basic boilerplate code and mathematical algorithms, AI, machine learning, and all that jazz is not made by saying “programming” these days, though. “Programmer” has become a much more all encompassing term that covers more than just being a code monkey.

Most current developers, as I mentioned, could really stand to know the theory side of CS - it comes into play on some jobs, even if it isn’t every day. The 1/3rd ratio @simba9 gave seems accurate to me. I know a friend that at an internship watched a team of 12 developers struggle with a problem on an algorithm - the solution? It turns out it could reduce to a basic graph coloring. That’s not academia, that’s your average software development gig.

The point is, being a good programmer, developer, whatever name you give it, is strongly aided by knowing more than just how to code - design, paradigms, and theory all come into play.


As far as IT goes, programming and practical classes show you how to do the basics - IT focuses much more on standard implementations of systems, organizational structure (often with business component) and management of tech. They may share the programming basics courses, but those really aren’t the meat of a CS major. Saying IT is basically CS is like saying Psychology is basically Biology - sure, they are related and will share some overlap, but the purposes of each are usually very different. If you want to be a developer, most will advise CS.

@PengsPhils

Read this article:
http://www.davidbudden.com/degrees-demystified-1/

It explains the distinction between CS and SE very well. Sure, computer scientists can do Software Engineering, just as Mathematicians can do finance, but it isn’t what the field of computer science is.

This article also explains the distinction between software engineering and software development:
http://www.stevemcconnell.com/psd/04-senotcs.htm

"Some people think that ‘software engineering’ is just a buzzword that means the same thing as ‘computer programming.’ Admittedly, ‘software engineering’ has been misused.

“Engineering is the application of scientific principles toward practical ends. If the engineering isn’t practical, it’s bad engineering. Trying to apply formal methods to all software projects is as bad an idea as trying to apply code-and-fix development to all projects.”

Basically, every software engineer is a software developer, but not every software developer is a software engineer.

P.S

I was wrong in what i said about IT.

@idkName

I’m very aware of the distinctions in those articles - I also particularly like the diagram below - as I mentioned, IS and IT are much more separate to programming than CS and programming.

I even made very similar analogies…

The distinction you are making between developer and engineer is really splitting hairs - I agree with the ideas, but, as the article you linked to argues, software development should all be engineering. That’s exactly what I was talking about with the lack of good programmers in the industry - in your lingo, a good programmer is an engineer, a mediocre one is a developer.

My point with all of this is that the terminology you are using is not very used - people just say “he’s a good developer” or “he doesn’t just make it work, he designs good code” - no one uses the distinction between engineer and developer (even jobs mix and match the term). Your article even complains about its misuse - most people simply don’t care about the distinction but rather the ideas behind it, which they use their own words for that cause less confusion.


Apologies for the thread hijack

Nobody in the real world makes a distinction between programmer, software developer, software engineer, or computer scientist. An undisciplined programmer might be called a “hacker.” I still call myself a programmer 'cause that’s what we were called back in the 80s when I started working. The term I hear most in the SF/Silicon Valley area is simply “developer”, e.g., “I’m a developer at Apple” or “I’m a developer at Google” or “I’m a developer at JoJo’s Software Hut”.

Job titles change over time. “Programmer” has morphed into “software engineer” the same way that “secretary” became “administrative assistant” and “stewardess” evolved to “flight attendant.” Same jobs - fancier sounding titles. I remember when “software engineer” first came out, and it sounded to me like a pretentious term used by insecure programmers to make their occupation seem more impressive.

In reality, there isn’t that much genuine engineering in software engineering. It mostly consists of rules of thumb similar to those used by writers and journalists meant to help structure the process and make what they’re doing clear to others. It also incorporates too many unproven, ever-changing fads to truly be described as engineering.

@simba9

Yeah, this debate is kind of pointless because it is just a classification thing. However, the term “programmer” is still a very popular title today. I’m also going to disagree with your definition of a “hacker.”

“The essence of hacking is finding unintended or overlooked uses for the laws and properties of a given situation and applying them in a new and inventive ways to solve a problem” - Jon Erickson from Hacking: The Art of Exploitation.

The term “hacker” originated with MIT’s model railroad club when they used old donated telephones to control certain railroad section by dialing.

Anyways, sorry for going a bit off topic. I just find your definition for “hacker” a bit misleading.

P.S
idk about you, but I feel like you are going to offend a lot of computer scientists by calling them just programmers lol.