I am currently going for a Major in Computer - Science.

Alright since I am going for Computer - Science I do have some concerns. I do like programming when it makes logical sense (reading some of the wording confuses me but, I usually figure it out.) Now here comes the issue… Math

I read some threads beforehand so before I am told “Oh you have issues with math, stop now or switch your major to MIS or another field.” I am willing to learn the Math for this major. Now for people who have graduated or know people who have graduated and in the CS field as a job, how much math is actually used in the field of CS? Someone on yahoo has stated “Nah. Unless you’re doing high-end physics or graphics programming (and almost nobody does those), almost all the math is nothing more advanced than high school algebra. You should be familiar with scientific notation, converting between number bases, and dealing with binary and hexadecimal numbers. For basic graphics programming, you also need to know standard high school trigonometry. 99+% of the time, you won’t use anything more advanced than that stuff.”

There also have been other threads on this website in particular explaining that Math is heavily used in CS and that if you’re not good move on while others day the Math is decent along with way more open to learn since it is college and the student have more resources open to them.

So, I am willing to challenge myself and learn these difficult Math subjects because this is definitely a dream I will accomplish it just after reading through some of the comments about the math made me feel somewhat discourage like if I am not Jesus perfect at math, computer science is not for me. If anyone has read this far and was wondering how far I got in Math in high school was Algebra 2 and I was maintaining the letter grade of B along with a B in my finance class (Usually was geometry, Algebra 1+2). That is it. So, anyone who has graduated and is working in a job-like enviroment for CS, please tell me what Math is used an how difficult would it be for me if I applied myself one hundred percent?

Source for the quote:
https://answers.yahoo.com/question/index?qid=20120121214421AA919DO

I’m currently a CS major at a private university in SoCal. This is my second year, and I’m very well into my core courses. We can have a long discussion about what’s important to know and what’s not on the job market, but let me remind you that these are all opinions and peoples’ experiences. Things may be different for you.

In addition, speculating about how much math is used doesn’t change the fact that this major is, indeed, very math intensive. And while something like Algebra (may or may not) be the only thing you’ll be using for whatever position you want to have in the future, your mathematics will go beyond the typical science majors (e.g. Physics).

I have finished the entire Calculus sequel (Calculus I-III), which is very important if you want to understand the concepts laid out in Discrete Mathematics or also known as Mathematics for Computer Science, which covers a variety of subjects such as number theory, probability, algorithms, combinations and permutations, and a lot more other things that involve knowing calculus. In some cases, that course will also include important concepts from Linear Algebra, which may or may not be required at another institution as a separate course. It depends.

Nobody’s perfect, which is why we practice and learn by doing. As far as I have heard from former students that are currently on the job market, programming is the skill that gets them the job. Depending on what they have to develop, you’ll need to know the math or at least be able to recall simple concepts from your math courses.

@econcalc, calculus is more or less completely separate from discrete mathematics (unsurprisingly, as calculus deals more with continuum mathematics).

I guess you use linear algebra for computer graphics, but in the core courses like algorithms and formal languages? Not really. Probability does come up in algorithms (randomized algorithms) and electives like cryptography or machine learning. Don’t get me wrong, CS is math-intensive, it’s just that the range of math you need tends to be limited, based upon your elective choices. That said, a CS major will probably be required to complete calculus, linear algebra, diff eqs, discrete topics, and probability theory. Discrete math and probability can be really fun (yes, fun. Not some twisted “fun”), don’t get discouraged by mathematics.

@econcalc & @vanimelde, thank you so much for both your responses! I will do my best to learn these mathematics and go for my dream. I am currently finished a Java coding course in code academy and moving onto HTML & CSS. Vani, can you give me some ideas on what to study in the calculus area?

I don’t think there is any topic that’s not important. The limit as a derivative, techniques of differentiation, integration and sequences and series are all important to understanding the concepts of calculus.

I’d also suggest researching particular institutions you’re going to apply for. This is the only way to know what courses you will have to take.

@TobiasAlex23‌ are you applying to schools in the US for CS? If so, you might want to check out the RIT Software Engineering program: http://www.se.rit.edu/node/1

RIT SE grads do very well in the industry and as I understand it have fewer math requirements in the major.

BTW I have been paid well to develop software for 20+ years now (currently employed at the Software Architect level) and have not really used advanced math in my job more than once or twice. I also have not used recursive programming that much, or implemented my own sorting algorithm. I definitely can’t explain what big O notation is, and I’m pretty sure I got a C in Calc in high school and do not have a CS degree.

But I have had a rewarding career in software development.

I have a colleague who is earning his Masters in CS online and just took Algorithms since it is a required course. He also took it for his CS undergrad degree. I asked him if he used any of the theory after undergrad or if he thought this most recent course would help him on the job. He said no, that it would probably just help him in his next interview.

If you choose to pursue a Computer Science degree, you will spend a lot of time studying math and it may be difficult for you. But if you want to develop software? Different story.

@ormdad yes I am. I’m currently going to CC on a transfer program so basically I’m earning university credits that way my university that will be shortened. I’ve checked the RIT program it seems nice. Developing software? What is that like? Can you show me examples or tell me some you had on the job? Also your colleague he took Algorithms just to help him the next interview? That is interesting. I know the math will be hard, but I don’t mind applying myself to learn, your software development sounds interesting also, what is that degree under?

@‌TobiasAlex23
There is no way you finished the whole Javascript tutorial on Codecademy and still call it “Java”. No java yet on Codecademy. As for undergrad math, yes in college you will need to take Calc 2-3, discrete math, linear algebra, and maybe 1 more. These can difficult for people that don’t consider themselves very good at math yet.

However for a software engineer job where you program, what you heard is right in that you do not use much more than Algebra. But the logic in math and the occasional things like good foundations in algebra, converting bases, exponents, and remainders help with programming. This is coming from my software engineer brother and his workmates. You’ll need to study math in college but unless its graphics, you’ll be fine without all of it in a job.

@‌ormdad
Interesting, i know high level math isnt used much but Algorithms never helped him? Since you’re a software developer, which things would you recommend learning to help a CS-major prepare for a job? Other than obviously, popular languages like C, Java, Python, etc.

@eshkidd‌ well actually what he said was that he “never used” any of the theory from algorithms. That’s not to say that it never helped him :slight_smile:

The most important/hirable skill in 2015 by far will be Javascript, which is the language of choice for building new applications. The new generation of applications use Javascript on the browser as well as the server (e.g. node.js, MongoDB) and Java and C will be used in tactical situations for increased performance (or legacy applications). I use java 80% of the time so it’s not like I’m a JS fanboy, this is just the way it’s going.

Instead of spending additional time with Java, learn Scala in depth. Scala on your resume will get you more interesting interviews.

Instead of learning Ruby on Rails or Python’s Django, learn Angular or Backbone.

But beyond any of this, the best thing you can do is get a CS degree! Most interviewers for entry level jobs do not assume you have experience with any of this, they want to hear that you have a good foundational CS education, and that you did well in classes and retain the knowledge. Most hiring companies assume you can pick up this “practical” knowledge on the job.

It is still true that you will do better in an interview if you can explain algorithmic complexity, apply recursive programming to a problem, debate sorting algorithms, etc. than if you know the latest technology. If you don’t have this knowledge, you’d better be pretty well versed in the “practical” side of things.

DS was reluctant to go into CS because math was his least favorite subject in HS. But he really loves computers, and found that college-level calculus and I think one other math class was all head needed to become a good coder. He’s a senior now, with good career prospects. Go for it.

@eshkidd Well I did finish it I’m not really familiar with the terms of what it is suppose to be called, thanks for the specific class I might have to take, I’ll get on that.
@ormdad‌ Thank you also for the specific programming languages, along with giving me some tips on what might be asked for in the interview, I’m glad the companies will cut some slack an let me pick up some of the practical knowledge on the job. You have been a big help.
@Pootie‌ Thanks so much! I sure will!

While were here, how long does everyone think Javascript will last (full use, node.js, etc)? I used this in a high school job but since I, and many others on this forum probably, won’t be graduating for a few years, wouldn’t it be safer to wait to focus on any languages until say, a year or two before graduation? Languages come and go relatively quickly, picking up new ones seems to be part of the job.

@ormdad‌ specifically

@PengsPhils‌ Javascript will last a long time- it’s been around for 20 years and has the benefit of being supported by all modern browsers, so it’s probably not going any where. And it is only gaining traction because of node.js and MongoDB. Javascript has experienced wide adoption as more people have realized it is a legitimate object oriented language (and should be used this way). Languages do come and go but Java and JS have incredibly large installed bases and will be in use for a while.

It is true however that you will be asked to learn new languages on the job, and you may not be able to find a job that uses Javascript 100% of the time, so maybe it’s not really worth spending that much time during undergrad learning javascript. And as you say, the technical landscape may look different 4 years from now.

But I think if you are going to focus on one language or technology to learn in undergrad, this would be the one. The answer may be different in 2019.

Developing a native mobile app would not be a bad idea either.

@ormdad can you tell me where to learn Scala online? I haven’t found any downloaded programs that seem to work.

@TobiasAlex23 don’t worry most of your practical knowledge is learned on the job. Undergrad programming and learning will be moderate, your first two years of your first job will likely have a high learning curve and you’re going to learn a lot more about how to actually program on the job than you did in college. But after the initial high-learning curve, it gets pretty second nature.

@ormdad‌
have you developed an app before? I’m in the early design process, and was going to go Object C for iOS and Java for android. You can use Javascript+HTML and convert it to both iOS and Android, but it’s not its native language so it doesnt quite run as well. I still wouldn’t think doing Javascript+HTML would be better, even if learning javascript is important, and of that I know some.

You go to school in CS to learn foundational concepts and ideas, not specific programming languages. If you know the foundational concepts and ideas well, you can learn the programming languages as needed through your career.

Of course, studying CS in school will include programming assignments in whatever programming languages happen to be used at the time. But such assignments are to help you learn the foundational concepts, not to focus on the programming languages.

@eshkidd‌ Should I begin programming in my spare time while at home? I don’t wanna run into an interview an they ask me to program something I’m not aware of.
@ucbalumnus‌ 1. Holy crap, your post count! 2. Can you explain a little more on foundation concepts?

@TobiasAlex23‌
of course! It’s only going to help you. Most people would recommend just to use one language when you’re learning, so you can get deeper into understanding the foundations, and then be able to apply them everywhere. Instead of learning shallower methods of 5 different languages; that won’t help as much. So focus your time on Javascript or C++ and go as deep as you can. You should get a textbook on a language in every intro CS course, so just read it from front to back and with an IDE you can just mess around with code on it.

Foundational concepts include how data is stored and accessed by a computer program, how resource use grows with the size of the problem that a computer program is used on, how operating systems manage user processes, memory, and storage, what problems can be solved in reasonable amounts of time, how different programming languages are suitable or not for particular classes of programming problems, how high level programming language constructs are executed by the processor, with implications on performance, etc…

Here are some web sites of introductory CS courses:

http://www-inst.eecs.berkeley.edu/~cs10/fa14/ (overview of CS, for non-majors and possible CS majors with little or no computing experience)
http://www-inst.eecs.berkeley.edu/~cs61a/fa14/ (first course for CS majors)
http://www-inst.eecs.berkeley.edu/~cs61b/fa14/ (second course for CS majors – data structures)
http://www-inst.eecs.berkeley.edu/~cs61c/fa14/ (third course for CS majors – machine structures)

Note that various computer languages are used as they fit the topics being taught.

@eshkidd‌ where would you tell me to look specfically for JavaScript? I don’t mind learning it in my spare time but I’ve only been use to it in codeacademy. Any places you’d tell me to look to dive deeper into JS?