Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Math Electives + Core Math #768

Closed
ghost opened this issue Aug 10, 2020 · 4 comments
Closed

Math Electives + Core Math #768

ghost opened this issue Aug 10, 2020 · 4 comments

Comments

@ghost
Copy link

ghost commented Aug 10, 2020

Math Electives section states that "Students must choose one of the following topics: calculus, linear algebra, logic, or probability."

The course in Core Math section requires Calculus 1C as a prerequisite. So if I don't choose to do calculus in the math electives section, I won't be able to do the course in Core Math?

@ghost
Copy link
Author

ghost commented Aug 10, 2020

@licjon agreed.

@spamegg1
Copy link
Contributor

spamegg1 commented Aug 12, 2020

@AEscasinas Hi,

This is quite a common question, and yes it's somewhat of an issue.
Here is my understanding of it (I could be wrong):

When I started the curriculum in May 2018, there were A LOT more math classes. And they were all required. Then math requirements were simplified here. Since many math courses in the "long prerequisite chain" were removed, right now it's not possible for the curriculum to be completely self-contained to include all the math prerequisites (for example, Multivariable Calculus is not in the curriculum).

Instead, now the curriculum leaves it up to the student (you) to choose your own path and take care of your own prerequisite needs based on your background (I took no math because I have a math background). This is online self-learning after all.

Even though Math for CS has a Calculus 1C prerequisite, there is only a small portion of Math for CS (the Probability parts) that requires some infinite series. It is still possible to take Math for CS without Calculus 1C, the only issue is that a few calculations will be somewhat confusing. But the rest of the course does not use Calculus at all. It's finite/discrete math (counting, combinatorics), graph theory, proofs and logic.

You might be able to teach yourself just enough infinite series from Khan Academy and avoid taking 3 entire calculus classes if you really don't want to take those. But this is up to you. You can choose how much you want to save time in exchange for difficulty/struggle. Obviously Calculus is awesome and super useful in the long term in many areas.

If you already happen to know Calculus (many people do, sometimes even from high school), you can choose to do one of the other electives if you want (Logic, Probability, Linear Algebra), or you can say: "I'm done with my math electives", take Math for CS and move on.

Linear Algebra and Logic are easier and self-contained. LA will help in Machine Learning/Computer Graphics and Logic will help in Core Theory/proofs. Logic requires a bit of naive set theory but you can teach yourself that in a few hours on Khan Academy or Youtube. Core Theory classes require a LOT of logic and proof writing, and solid mathematical induction. (Roughgarden's textbooks cover all of it in their appendices, completely self-contained.) ML requires matrix multiplication, knowing how to match the dimensions of the matrices, how to take the transpose of a matrix (and just a tiny bit of partial derivatives). CG requires matrix multiplication, vector dot and cross products, creating an orthonormal basis of vectors, and understanding how matrices rotate/transform vectors visually in 2D and 3D.

However Probability still requires Multivariable Calculus (which USED TO be required in the curriculum, but it would add another entire year). This prerequisite is also a bit overblown: Probability requires only Single Variable Calculus (integration and infinite series), plus JUST A FEW iterated double/triple integrals (which are extremely similar to single variable integrals, you treat all but one variables as constants). Vast majority of Multivariable Calculus (partial derivatives, mutivariable optimization, line/curve/surface integrals, Green's Theorem, Stokes' Theorem, Divergence Theorem, Mass/Work/Energy applications, curvature etc.) are not needed at all (these are physics/engineering topics).

Moreover, the infinitary, more difficult parts of Probability are very theoretical and are not used much in CS (Markov Chains are used in Finance if you want to go into Financial software). When you reach Core Theory you will see that the use of Probability is discrete, and requires only finite sums. But of course you should still take Probability if you are interested in it. Personally I know a few OSSU students taking it.

So now maybe you can understand why the curriculum was changed the way it was. It's a very tricky problem without a perfect solution. Just because a very small part of a future course requires a specific math topic, an entire series of courses are added as prerequisites, which adds an entire year to the curriculum and becomes a big roadblock for a lot of students. Single/Multi variable Calculus, Linear Algebra, Probability, Math for CS used to be ALL required.

A trade-off decision was made. Now it more closely resembles a CS major in a real university: they are required to take some math electives (choice based on their past math knowledge and left up to you) but not too many.

My advice would be not to get too stuck on prerequisites and take care of your own math background needs. Khan Academy is a great resource.

@ghost
Copy link
Author

ghost commented Aug 12, 2020

@spamegg1 Thank you for your detailed reply. I think I will go through all of the college courses on Khan Academy!

@waciumawanjohi
Copy link
Member

  1. This is a great writeup and reference for students in the future. I'm bookmarking it.
  2. In a few weeks we'll hit the 6 month point since the math curriculum was overhauled. I think that's about the amount of time that OSSU should wait before revisiting a change that was introduced by RFC. I plan to open a proposal to simplify the math section. I'll definitely point contributors to this writeup to gain context. Closing this issue in the meantime.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants