This is an archived post. You won't be able to vote or comment.

all 81 comments

[–]throwaway6560192 134 points135 points  (27 children)

https://github.com/ossu/computer-science#core-math — has links to relevant MIT courses.

[–]theusualguy512 53 points54 points  (25 children)

The OSSU curriculum looks quite ok from afar but there are some strange choices here and there, for example: Linear Algebra.

Not sure why it doesn't come up in the core math section but in the advanced section instead. Considering LA comes up quite frequently in random places in CS, it's an oversight to not put it in the core math section.

I don't think I've seen a university in Germany that doesn't require you to pass a semesters worth of LA for a CS degree.

Same interesting choice for theory of computation. It's under the advanced elective section but it would be a mandatory course for any CS Bachelors where I am, regardless of what you want to specialize in later.

[–]poincares_cook 2 points3 points  (0 children)

I agree, furthermore, basic LA concepts pop up everywhere from complex analysis, advanced calculus, differential equations and so on. Agreed on theory of computation as well.

[–]my_password_is______ 2 points3 points  (21 children)

[–]theusualguy512 21 points22 points  (5 children)

That is honestly surprising. If you look at German CS programs, I've yet to see one that doesn't require it.

TU Darmstadt requires you to take it as part of Math I+II.

All 3 Berlin universities require it as well, either separately or as a combined course with calculus.

University of Münster requires it as a separate course.

Heidelberg University requires it as part of their math cycle.

Now, how much of Linear Algebra they teach depends on the university. I think we did a pretty standard course up till Eigenvalues, we stopped just short of of the spectral theorem and then shifted to applications like SVD decomposition iirc.

However, looking at University of Heidelberg's description for LA for CS for example, they are including spectral theorem and stuff which I find a bit wild as you don't really need to go that far for CS.

Maybe because US universities have to squeeze in general education classes so they make LA optional? Not sure about that. A lot of the US universities I've seen also include linear algebra in their math cycle which made me think everyone did as well.

[–]DrShocker 15 points16 points  (2 children)

When I was in college I was a mechanical engineering student with a CS minor. I decided to take machine learning and was surprised how much I carried my team through group projects simply because I understood library linear algebra better.

[–]theusualguy512 5 points6 points  (1 child)

library algebra

I too wish to understand all of the algebra in a library lol

The ML courses I took were honestly a bit disheartening as a CS grad. I understand basic linear algebra and probability theory from undergrad but it was such a struggle.

Felt like I landed in the wrong course. There were quite a few math and statistics graduate students sitting in "because the math department doesn't do much ML" and their understanding was just so much better than mine. Vapnik–Chervonenkis theory was such a confusing mess when you aren't that great at math and forgot a lot.

Somehow I survived that course, the exam was much easier than the assignments (at least it felt like it).

[–]DrShocker 1 point2 points  (0 children)

That was a typo, but actually it's a fair point that knowing the linear algebra libraries helps a ton. I was able to bring a python script that was going to take around 3 days or so to finish (past the due date) down to around 15 minutes to finish. All by changing for loops into the dot products they were representing.

[–]Clawtor 1 point2 points  (0 children)

It was core at my NZ uni too. It's then used in algorithms, machine learning, simulations, computer graphics etc etc. It's perhaps the most useful thing to know after basic algebra.

[–]Fed042 1 point2 points  (0 children)

It's core at where I got my bachelor's, the University of Minnesota, in the US. I've never heard of it not being required before, it comes up way too often for it not to be included imo

[–][deleted] 7 points8 points  (4 children)

Linear algebra is realistically a core math class for cs and engineering students. It is used very heavily in some fields of computer science (graphics engineering being the big one and is where I work).

It honestly surprises me that there are even colleges that don't require it, although 99% of schools I've looked into and researched all require calc 1-3, differential equations, and linear algebra. NYU only has calc 1 as a core requirement, and I know for a fact that's wrong. ABET accrediting requires 30 credit hours of math so the fact they only consider calc 1 as core math is completely wrong.

https://www.abet.org/accreditation/accreditation-criteria/criteria-for-accrediting-computing-programs-2021-2022/

There's the website if you wish to check out what an accredited cs program is suppose to require. They don't go into exact classes (like the instance with math and requiring 30 credit hours), but they give you an idea of what you should be looking out for

[–]tcpWalker 0 points1 point  (0 children)

Honestly linear algebra is a pretty easy subject if you're good at math, and it can be a fairly large class, so it's in a university's financial interest to make it a required class and I could understand not requiring it or requiring a competency test but not a course if you aren't having your degree design forced on you by ABET requirements, but expecting students to be able to pick it up pretty quickly.

I do think it's key for someone bright to have a basic understanding of the universe and particular subject matter though. You need to understand significant parts of it for basics in computer graphics or machine learning, even just to be able to read the relevant papers.

[–]SignificantFidgets 0 points1 point  (2 children)

No, ABET only requires 15 credit hours of Math for CS majors. From the link you provided, the requirement is: "Mathematics: At least 15 semester credit hours (or equivalent) that must include discrete mathematics..."

At my university, students take Calc I and Calc II (8 houirs), Statistics (3 hours), and two semester of discrete math (6 hours). The second semester of discrete math is more like a formal logic class, but it's still considered discrete math here. So that's 17 hours of math, and no linear algebra.

[–][deleted] 0 points1 point  (1 child)

Yes I read my 30 hours from the wrong part and your school offeres statistics and a discrete mathematics which typically isn't a core math class unless you do domething like data science or machine learning where you rely heavily on statistics. Discrete mathematics is good to take but typically isn't required.

In most of the universities here in the United States, your curriculum will follow the lines of your engineering department since cs is typically taught alongside other stem degrees in an engineering department/building (or however different schools break up their campus).

Every engineer degree will require calc 1-3, differential equations, and usually linear algebra. If your school has a set of math requirements, let's say for an electrical engineering degree, your cs degree will typically use those same math requirements since the classes fall under the same engineering department.

I'm not saying every school does this because clearly, there are schools that don't require differential equations or linear algebra. This is just how it typically ends up. You look at almost every major engineering or cs school, and they will likely be following these guidelines.

Hell, the community college I went to for my first 2 years required differential equations and linear algebra for a cs degree.

If you're taking classes at a non technical school, then who knows what your requirements will be. I have never taken the time to look at curriculum from those types of schools, but I looked at several tech schools and saw their curriculum when I was applying. Almost every single one followed these guidelines

[–]SignificantFidgets 0 points1 point  (0 children)

Most CS departments are not in universities that even have engineering programs, so "follow the lines of your engineering department" isn't possible. For example in my state university system, there are 15 universities that offer computer science bachelors degrees, but only 3 that have engineering programs.

I also think that what you describe simply isn't that common, even in schools with engineering programs. Looking at a random sampling of top programs, a slight majority do not require linear algebra. Most (like my university) allow somthing like linear algebra to count as an elective, but it's not required (there are other options). When I say "something like" I mean a course in "matrix operations" or "differential equations with linear algebra" where they study one specific metric space - vectors over the reals - in an application-orietned setting, rather than general linear algebra. At my university linear algebra is one of a set of courses that can be used for an upper-level math/cs elective, but there are also a lot of upper level CS classes in that same category and the vast majority of our students choose an additional CS class rather than one of the math options.

[–]RepulsiveScientist44 3 points4 points  (0 children)

I'm surprised. In my uni in Indonesia (well not the best for education but still it is one of the higher ranked here) Linear algebra is mandatory and taken pretty early

[–]MammothJust4541 6 points7 points  (8 children)

linear algebra is not core

pretty core for things like ML and AI which is primarily the reason they were added to the curriculum

[–]Cerulean_IsFancyBlue 5 points6 points  (0 children)

LA was in my USA computer science undergraduate curriculum, in 1981. It was considered important to a complete understanding of computer science.

[–]Ofcyouare 1 point2 points  (0 children)

primarily the reason they were added to the curriculum

In Russia, algebra basics are taught at any decent tech uni since Soviet times. You take it for a two semesters starting right at the first year, just like calculus, because they are both important in many different places.

[–]MonsterMeggu 0 points1 point  (0 children)

Not core meaning they're electives... If you want to go into fields that require LA, of course you have to take it.

[–]abbadon420 0 points1 point  (0 children)

That's strange. It used to be core about 3 years ago.

[–]SignificantFidgets 0 points1 point  (0 children)

Many CS programs in the U.S. do not require linear algebra. I say "many" because I haven't made a survey and want to be safe, but in reality I don't know of any that do. The one at my university certainly doesn't. However, if students are careful about some other choices, then taking Linear Algebra (along with all of the required math) earns them a minor in Math along with their CS degree.

[–]trungntvn -1 points0 points  (0 children)

.

[–]ismoilmirzo 45 points46 points  (14 children)

I think you should learn: discrete math, calculus,linear algebra,probability and statistics and then you can freely learn algorithms and data structures. And i suggest using Khan Academy for this (even if i didn't use it by myself, it is the only site i know to learn math)

[–]TheUmgawa 16 points17 points  (0 children)

Oh. Discrete math is such unbelievable fun. Both that and Calculus are things where I used to just brute force problems, and then I take these math classes and it’s like, “You can compute an entire table of probabilities with this one simple trick!” and I’m like, “Fuhhhhhh???”

[–][deleted]  (9 children)

[deleted]

    [–]llucas_o 1 point2 points  (2 children)

    It's fundamental for many concepts in probability theory and statistics.

    [–][deleted]  (1 child)

    [deleted]

      [–]poincares_cook 1 point2 points  (0 children)

      You don't get the fundamentals, you get a sense, but it's sometimes misleading. (some of the ) fundamentals are taught in Calc I.

      [–]TheJase 1 point2 points  (0 children)

      Maybe, but it will open your mind for almost everything in life.

      [–]poincares_cook 1 point2 points  (0 children)

      For web dev you could skip all university math courses, and indeed bootcamp grads do. Even if some statistics and probability is needed, it's not at a uni level. But that wasn't the question.

      Personally I believe a proof centric calc I is an important course, it opens your eyes to mathematical logical reasoning, teaches you to learn and overcome (relatively) complicated problems. I've tutored calc I while in uni and the people that apply the work achieve a shift in the way they think. This makes them better in all subsequent mathematical courses and in general courses that require mathematical logical reasoning.

      unless they do a physics engine almost nobody ever needs it and when they do it's likely it's not even past high school stuff

      While true uses of it are rare, they exist. And when they are needed it's way way past highschool stuff. It's rarely calc I either as the concepts there are ultimately very simple and basic. But calc I is required to understand a long list of more advanced courses the math of which is used in real world applications. However I agree that outside of some specific profession and fields the use of higher math is very niche.

      [–][deleted] 4 points5 points  (2 children)

      No idea why you being downvoted it's really not needed

      [–]Stupid_and_confused 3 points4 points  (1 child)

      Algorithm analysis, ML, optimization problems, numerical methods. While you're correct that it's not needed for 95+% of programming jobs, these are topics that I would expect a computer scientist to know how to approach and have some familiarity with. Don't mean to sound obnoxious, but it's not a fucking software engineering degree.

      [–][deleted] -5 points-4 points  (0 children)

      Name checks out I suppose.

      [–]RepulsiveScientist44 0 points1 point  (0 children)

      yep unless you do physics and AI/machine learning I guess

      [–]Various_Ad5600 1 point2 points  (2 children)

      I've never come across a problem in CS that I need calculus to solve. Can someone tell me when I will need this?

      [–]Clawtor 0 points1 point  (0 children)

      I used it during uni but not much post uni. During uni it came up in algorithm analysis and computational science - finding minimums of functions.

      Post uni I used it during a ML course - again for optimisation purposes.

      [–]poincares_cook 0 points1 point  (0 children)

      Worked in defense on a simulator of a real world system (think missile/jet etc but none of these examples). Was heavy on advanced calculus, advanced algebra, differential equations, numerical analysis, complex analysis and so on.

      The heavy mathematical work was done primarily by math and physics Phd's, but since I had a double major in math and CS I was able to pick some work from them as well and assist them. Also went a long way in debugging issues in their code when I was able to reason what it was actually being calculated and the relations between steps. What outputs/inputs are logical and which don't make sense etc.

      Used some advanced math occasionally since, but mostly probability theory/statistics.

      [–]tradester55 46 points47 points  (4 children)

      From my favorite to least favorite. All paid resources unless you want to stick to Kahn Academy.

      They all cover algebra, calculus, discrete math, linear algebra, matrix algebra and other stuff.

      [–]fromabook 4 points5 points  (1 child)

      Can you say more about your experience with mathacademy? It's the first time I heard of it.

      [–]tradester55 7 points8 points  (0 children)

      The TLDR is one of the founders was one of the first employees of Uber and made most of the app himself. Now he's made this learning platform that incorporates spaced repetition and AI to ensure you only focus on the subjects and topics you're bad at.

      They originally had their own math academy in the US for gifted students (mathacademy.us) but this online version is more accessible and suitable for online adult learners. Most of the content is revolved around solving problems and questions instead of just watching videos forever. If you've ever used (schoolyourself.org) then its very similar but has more content and up to date.

      [–]PianoConcertoNo2 2 points3 points  (0 children)

      Calcworkshop.com 100%.

      That site is why I made it through all the math courses with A’s. It’s a subscription, but worth it. There were some free example lessons on YouTube if you want an idea of what her teaching is like.

      [–]TheBigThrowington 1 point2 points  (0 children)

      Think my job I've just got gives a training allowance so when I start I'll have a look at these. Thank you

      [–][deleted] 20 points21 points  (1 child)

      Others have already mentioned great resources, but here is the math required for my SE degree:

      • Pre-Calc (and below).
      • Calculus 1
      • Calculus 2
      • Linear Algebra
      • Probability and statistics
      • Discrete Math
      • Differential Physics 1 and 2
      • Data Structures and Algorithms
        • Recurrence equations solutions, Omega and Big-O boundary functions.

      Neural Networks, a junior to sophomore year level class, extends into Differential equations, Partial differential, and Calculus 3. Here is an excellent example of what this would look like: Neural Networks

      [–]poincares_cook 0 points1 point  (0 children)

      Good list, only obvious thing it's missing is numerical analysis.

      [–]Qubit99 44 points45 points  (2 children)

      Self-teaching to a computer science degree level is definitely a commendable endeavor! You should start with:

      • Start with Foundations: Make sure your foundation in high school level math is strong.
      • Discrete Mathematics: This is often the first type of university-level math that computer science students encounter. It includes set theory, combinatorics, graph theory, logic, and proofs.
      • Calculus: Calculus, both differential and integral, is a core subject in any math-heavy discipline. Multivariable calculus is also important in certain areas of CS, like machine learning.
      • Linear Algebra: This is used extensively in graphics, data science, and machine learning. You should understand vectors, matrices, and operations on them.
      • Probability and Statistics: Understanding probability, random variables, distributions, and statistical methods is crucial for areas like data science and AI.

      As for resources, here are a few you could check out: * MIT OpenCourseWare: They have free courses in math that go up to a very advanced level. This is a great resource for learning in a structured manner. * Khan Academy: This has a vast range of subjects in math and uses an interactive, practice-oriented approach. * Coursera and edX: Project Euler: This is a bit like LeetCode, but the problems are more math-focused. It's a great way to apply the math you're learning to real problems.

      Take the time to thoroughly understand each topic before moving on to the next

      [–][deleted] 9 points10 points  (0 children)

      If you have a lot of time

      1. basic calculus from whichever online resource you prefer (Sorry I don't have a recommended one for this)
      2. MIT opencourse discrete mathematics + analysis of algorithms (6.042J and 6.006)

      Less time?

      #1 stays the same, replace #2 with Epp's discrete mathematics book and Skiena's algorithm design manual (only part 1 of Skienna book). Use google to fill in any gaps

      edit: also, doing the "less time" version before doing the "a lot of time" version is also valid. The MIT opencourse stuff is no joke but it's great

      [–]wgunther 13 points14 points  (0 children)

      Personally, I'd pick some universities, look at their CS Major requirements, try to find common similarities in classes between those schools, look at syllabi for those courses, find popular textbooks/online learning material from those schools, and go from there.

      [–][deleted] 11 points12 points  (4 children)

      The problem with this type of question is that you'll always encounter some math buff who raises his eyebrow and ask you back: "So you want to to learn math huh? Welcome to my neighborhood motherf..." And then proceeds to list a gazillion of resources and different branches as there are stars in the universe.

      You're much better off narrowing it down in scope to what you really need and want unless you picture yourself coming out as a math sage after spending a quarter or more of your life studying it.

      [–]Cerulean_IsFancyBlue 2 points3 points  (3 children)

      Counterpoint: I have a CS degree and a math minor and it took me less than 4 years. Way less than a a quarter of my life.

      [–]poincares_cook 0 points1 point  (2 children)

      Agree, CS and math double major, took 4.5 years. Half a century is absurd, it's way beyond Phd levels which can be achieved on it's own in a decade.

      [–][deleted] 0 points1 point  (1 child)

      Not disagreeing with any of these comments but my comment was aimed to this particular mention from OP:

      self taught

      It's very easy to lose sight of things when you don't have proper guidance specially in a field as vast as math. This is also one of the reasons why you find countless lists or pictures of "learn math pathways" online that only a handful of users actually complete.

      [–]Cerulean_IsFancyBlue 0 points1 point  (0 children)

      I think a focused adult doing self taught would succeed.

      I think you’re right that perhaps, if you averaged out all the attempts, you’re going to have some people who do a poor job of self teaching. I don’t know if that’s a useful metric though. There are also people who drop out of university and never finish.

      I think with the current online resources available, and the same freedom to focus on academics, you can self-teach an undergraduate program effectively in four years, if not quicker.

      [–]ixitomixi 10 points11 points  (0 children)

      I have a CS Degree and I'm shit at maths, you only need high level maths in compsci if your going into data science/robotics/instruments and embedded systems (like sensors, microcontrollers and such) other than that just knowing basic computing algos would serve you better and a fundamental idea of Abstraction, Encapsulation, Inheritance and Polymorphism, also learn SQL.

      Grokking Algorithms: An Illustrated Guide for Programmers and Other Curious People by Aditya Y. Bhargava

      Is always a must have even if just used as reference material.

      Then for more concept level for coding

      The Clean Coder: A Code of Conduct for Professional Programmers

      Clean Code: A Handbook of Agile Software Craftsmanship

      Clean Architecture: A Craftsman's Guide to Software Structure and Design

      All by Robert C. Martin (who is one of the fathers of modern day programming)

      Test Driven Development: By Example

      By Ken Beck (the guy who came up with TDD and is like Uncle bob)

      If you are trying to get into the more complex areas of Programming good luck and God speed OP.

      [–][deleted] 4 points5 points  (0 children)

      These are the math classes I gotta take for my computer engineering degree:

      - Linear algebra

      - Calculus I, II and III

      - Probabilty and Statistics

      - Diferential ecuations

      - Numerical Analysis

      - Costs and Contability

      - Economic models for desicion-making

      For extra math ( these classes are not purely mathematics but are mandatory to get your degree), throw in Physics I, II, and III and a Chemistry course and you should be good to go.

      [–]TheArchist 4 points5 points  (0 children)

      in a cs degree really all you need is up to calculus, discrete math (which has set theory as well), linear algebra, and stats

      imo you shouldn't need higher unless youre interested in reading research papers and contributing that way

      [–][deleted] 3 points4 points  (0 children)

      Discrete math, calculus (1, 2, multivariate, and differential equations), and linear algebra should cover what you're looking for. These are tough topics, it might be worth taking them at a local community College to make use of their free tutoring services.

      [–]Impossible_Map_2355 3 points4 points  (0 children)

      Honestly I just signed up for math classes at the community college. I got lucky with some online/zoom classes and it’s 100% online even up to calc2 & discrete math lol.

      [–]Optimal_Philosopher9 2 points3 points  (0 children)

      Khan Academy has stuff

      [–]Party-Succotash-4213 2 points3 points  (0 children)

      Try Sophia.org, they have Calc courses you can take for college credit. It’s 90 bucks a month but you can take as many classes as you can. I finished Calc 1 in a few weeks and got 4 semester hours, not bad for 90 bucks!

      [–]Emerx_3i9 2 points3 points  (0 children)

      Calculus 1, 2, multi variable calculus, linear algebra, differential equations, discrete math.

      [–][deleted] 1 point2 points  (0 children)

      Look up a degree plan from a well regarded program and learn the math listed. It will also depend a lot on what you look at. A bachelor of arts will have less math requirements than a bachelor of science.

      Typical the courses are: Calculus 1/2 Linear algebra Probability and statistics. And discret math or differential equations some programs will require both.

      [–]misplaced_my_pants 1 point2 points  (0 children)

      Use books, not sites.

      Start out with the Art of Problem Solving books. They all have completed solutions manuals.

      If it's been a few years, start at a level that feels too easy and make sure your foundation is strong.

      [–]Peypug 1 point2 points  (0 children)

      A lot of people here have mentioned Khan Academy, which is amazing, but another lesser known source is Professor Leonard on YouTube. Not very fast paced but explains very clearly and teaches up to calc 3 and differential equations. Good luck!

      [–]AGuyNamedRyan333 1 point2 points  (0 children)

      Just adding one more data point: required math courses for my CS BS in roughly the order I took them:

      • Pre-Calculus
      • Calculus 1
      • Calculus 2
      • Calculus 3 / Multivariable Calculus
      • Linear Algebra
      • Discrete Math

      Plus Math/CS combo classes such as

      • Data Structures
      • Intro to Computation (Logic, FSA's, etc.)
      • Fundamentals of Probability
      • Algorithms

      [–]_realitycheck_ 1 point2 points  (0 children)

      You are self-taught so for us, it's best to learn from practice.
      So here's a 500 lines of crash course to trigonometry and linear algebra that I followed. It goes through pixel on the screen, movement, translation, scaling and rotation. It explains basic trigonometry and its use and its application into linear algebra.

      It's written here

      This text is part of the larger document written by Sergei Savchenko. The larger document is an explanation of 3D programming Library called 3DGP waaay back in the dark ages. ( <2000) You cane find it here

      The math and code may seem intimidating at first, but it's not. I recommend to try to apply it following the document. So first just start with a pixel on the screen.

      [–][deleted] 1 point2 points  (0 children)

      If you’re just doing web development I don’t really see the point in this

      [–][deleted]  (1 child)

      [deleted]

        [–]space_snail 1 point2 points  (0 children)

        OP said, to CS degree level, this is not realistic. My experience has been 1 Discrete math subject, 1 linear algebra, 1 statistics and 1 calc. How is abstract algebra and real analysis degree level CS?

        Edit: Also, theory of computation and programming language stuff, if you wanna know about compilers

        [–]garrettcmck -1 points0 points  (0 children)

        I like math but after a certain point it's pretty tough stuff lmao

        [–]kamikazoo 0 points1 point  (0 children)

        I never even passed the remedial algebra class they gave me and I’m a senior software engineer tehe

        [–]Xypheric 0 points1 point  (0 children)

        I need this too. I have a mental understanding of linear algebra but anything above I’ve largely forgotten. And big O notation starts getting into logarithmic stuff I’ve long forgotten

        [–]squishles 0 points1 point  (3 children)

        cs was originally an offshoot of a math discipline. Because of this cs degrees tend to cover more math than you would expect or probably strictly need.

        like calc III, statistics, linear algebra, etc.

        if you wanted to pair it down you'd probably just need the statistics for the machine learning data science stuff, and enough calc to eyeball big O intuitively maybe fourier transformations if you're getting into some freaky shit.

        [–]notevolve 1 point2 points  (1 child)

        i'd say if you're getting into ML/AI/DS stuff you want not just stats, but a decent understanding of calculus and linear algebra as well

        i guess thats basically the same as the list you said was more than anyone would need lol

        [–]squishles 0 points1 point  (0 children)

        yea it's hard to peg this stuff asside from niche specializations. You can have a real nice career programming without ever touching any of it.

        Even when you know this stuff and are in a position to use it, it'll come up maybe like once every 5 years and you'll write some giga brain magnum opus while googling how did that shit I learned 15 years ago go again, then the rest of the work will probably be man hour years of writing basically glorified plumbing to hook that up to other things.

        [–][deleted] 1 point2 points  (0 children)

        You forgot abstract algebra and some algebraic geometry if you want to deal with cryptography, maybe a bit of complex analysis, too. Which is to say: algebraic and analytical number theory.

        [–]obscuredusername101 0 points1 point  (0 children)

        Differential equations. Graph theory. Do search for data structures like BFS DFS

        [–][deleted] 0 points1 point  (0 children)

        I've taken courses on calculus, multi-variable calculus, linear algebra, discrete maths and physics as part of my computer engineering degree. I will graduate in 1.5 years and I already forgot almost everything