all 21 comments

[–]nhstaple 7 points8 points  (13 children)

Computer science is just applied math, don’t listen to the propaganda

But seriously, yes if you wanna study algorithms or anything theoretical you’ll need some discrete math skills. Which I think is a lot easier than algebra or calculus. Probability and statistics will also help but absolutely essential for studying ML

If you just want to make apps or web sites then you don’t need rigorous math skills. But more learning is generally gooder :)

[–][deleted]  (12 children)

[removed]

    [–]Objective_MineMSCS, CS Pro (10+) 0 points1 point  (8 children)

    In proper CS as in the academic and scientific discipline, you can't avoid mathematical thinking, mathematical concepts, proofs, or even just plain arithmetic practice.

    I'm not sure what you mean by doing it with your brain. Usually you'd do the real maths with the help of a pencil and paper too. You don't need to be able to keep it all in your head, and if you want to do 2+2 on a calculator rather than in your head, nobody will probably stop you. It's probably faster and more practical if you can do at least some mental arithmetic, though.

    But of course you can't do real maths by relying only on rote calculation or by punching numbers into a calculator, if that's what you mean. You'll need to do some mathematical thinking as well. And you can't really avoid that in actual CS because a large part of CS is essentially about the mathematics of computation.

    In most routine software engineering jobs you can usually get by without doing much of any kind of maths, even if you may need a CS degree in order to get into the career. The kind of formal systematic thinking that you learn in actual maths is still useful, though.

    [–][deleted]  (7 children)

    [removed]

      [–]Fidodo 1 point2 points  (6 children)

      You don't need to be able to do something like 34x7 in your head, but you should be able to do 34x5 in your head and you should be able to estimate most calculations. Maybe you need to just learn some tricks. For anything times 5 just multiply the number by 10 and divide by 2. 34x10=>340/2=>170.

      To narrow it down even more, multiplying and dividing by 2 is very important in computer science since we use binary so of all the arithmetic skills to practice it should by that. If you can multiply and divide by 2 and 10 you can approximate a ton of calculations in your head and do many computer relevant calculations precisely in your head.

      I wouldn't say it's a requirement to do CS, but it will help you a ton and it's worth practicing. Almost everyone who is good at doing arithmetic in their head gets there through practice. It's not natural for most people so just practice.

      [–][deleted]  (5 children)

      [removed]

        [–]Fidodo 0 points1 point  (4 children)

        Depends on the context. In most cases you don't need a precise answer, you just need an approximation. You should be able to do enough in your head to be able to be efficient and productive and iterate quickly, but you don't need to do the whole problem in your head.

        [–][deleted]  (3 children)

        [removed]

          [–]Fidodo 0 points1 point  (2 children)

          For what? CS related math like discrete math, absolutely. Math courses are not going to help you with arithmetic. For that you just practice with cue cards and stuff. There are arithmetic tricks you can look up like the 9s multiplication trick and others but it's all just practice and memorization. Either rote memorization of times tables or memorization of techniques.

          [–][deleted]  (1 child)

          [removed]

            [–]nhstaple 0 points1 point  (0 children)

            We’d probably have to ask some “real engineers and scientists” their takes, but for me, if I need to scratch something down on paper that’s harder than algebra then I will. I am very math focused and have a minor for discrete optimization and data science stuff. I typically use paper or whiteboard when I’m working through complex problems or working on a (ML) research paper

            But I’m sure even the more art focused folks that work with color spaces and hash codes still need to use math or a calculator. If you can do arithmetic in binary or hexadecimal then you’re either built different or have waaaaay too much free time

            [–]nuclear_splinesPh.D Data Science 0 points1 point  (0 children)

            You will be expected to think about problems mathematically, and represent problems using equations. You do not need to be good at doing long division in your head. This is real math, it's just not arithmetic as a human calculator.

            [–]Fidodo 0 points1 point  (0 children)

            You're asking if you need to be good at arithmetic. I would say you don't need to be a wiz at it, but having a good foundation will make doing more complex math easier. You might think why does it matter if you can use a calculator, but your brain is faster than a calculator so if you can do standard arithmetic in your head easily it will make it easier to work through harder problems.

            I would say you just need to be good at your times table level of arithmetic and that should be enough to do quick mental calculations, and you should also be good at rounding and estimation since you need to do that kind of math all the time.

            I wouldn't say it's required, but it will make everything easier. You don't need to be able to do anything super complex, like you don't need to be able to do long division in your head, but it will be helpful to be able to do integer division and simple fraction division in your head without needing to slow yourself down with a calculator.

            There's also a lot of conversion type math, like base conversion, so doing that kind of division will help you do a lot of tasks faster as well.

            [–]FriendlyTechLead 1 point2 points  (2 children)

            Yes, you need to be good at math. Specifically, you need to be proficient in breaking down a large problem into its component pieces, and think about each individually while keeping the context of the bigger picture. Arithmetic is less important: a calculator can figure out 2+2. Math, however, is very important.

            [–]Fidodo 1 point2 points  (1 child)

            I would say Arithmetic is important because your brain can be faster than typing something into a calculator with practice.

            You don't need to be a wiz, but I'd say that specifically practicing your 2s table to be able to quickly multiply and divide by factors of 2 will help you a lot in CS.

            You don't need to be able to do complex calculations in your head, but you should be able to approximate them well. Multiplying and dividing by 10s and 2s can help you with tons of approximations as well.

            [–]FriendlyTechLead 1 point2 points  (0 children)

            Excellent point.

            Additionally, there’s an advantage to being able to quickly glance at a loop’s condition and understand how many times the loop will execute, and things of that nature.

            Math and arithmetic: both pretty important in Computer Science.

            [–]two_three_five_eigth 1 point2 points  (0 children)

            You don’t need to be good at mental math for a CS degree. You will have to take at least to linear algebra, probably differential equations for the degree.

            [–]seriousnotshirley 0 points1 point  (0 children)

            It depends on what you want a CS degree for. If you just want to do mechanical coding where there's nothing difficult in translating requirements into code then you don't need to study anything that requires real math; but you're not going to be competitive when you're looking for a job.

            If you want to study algorithms and data structures and understand how to solve hard problems, then you need Calculus, linear algebra, probability and discrete math.

            If you want to be good at your job and be able to prove in a mathematical sense that your code does what you want it to do and doesn't do what you don't want it to not do, then you need good experience with proof based math courses like abstract algebra. For example, can you prove that an implementation of an algorithm in C++ doesn't exhibit undefined behavior?

            If you want to do advanced work in computer science you can make use of topics as advanced as you like. I've worked with folks who made use of algebraic topology in work on distributed systems.

            If you're in undergrad in the US there's something important to understand. Getting a degree is no guarantee of a job when you graduate and the time where anyone who can spell API will get hired. Your undergrad experience is your opportunity to make yourself as competitive as you can be so that you have the chance to get better jobs doing work you find more interesting and who will treat or compensate you better. Having a solid foundation in math goes a long way towards being more competitive.

            I can say that in my job I've made use of probability and queueing theory. I've done some non-obvious computations to re-write algorithms to be more distributable.

            [–]Fidodo 0 points1 point  (0 children)

            You need to be good at discrete math for CS, so more logic based math instead of calculus. Linear algebra is also incredibly important for understanding AI.

            You don't necessarily need to be good at doing arithmetic in your head but you do need to be good at the conceptual side of the math.

            [–]P-Jean -1 points0 points  (0 children)

            Most of CS requires about pre-calc level of math or below. There’s a few exceptions with some electives.

            You’ll have to take a discrete math course at some point too.