ossu / computer-science

:mortar_board: Path to a free self-taught education in Computer Science!
MIT License
165.59k stars 20.92k forks source link

Request For Comment: Reduce Math Requirements #637

Closed waciumawanjohi closed 4 years ago

waciumawanjohi commented 4 years ago

Problem: OSSU:CS requires far more math than our curricular guidelines suggest.

Duration: Feb 29, 2020

Proposer: Waciuma Wanjohi

Background: OSSU refers to two curricular guidelines. These guidelines are created by professional and non-governmental organizations: ABET, ACM and IEEE. More information about these can be found here: https://github.com/ossu/computer-science/blob/dev/extras/curriculum_guidelines.md

The Curriculum Guidelines for Undergraduate Programs in Computer Science (CS2013) is the more specified of the two guidelines. In it, there is a discussion of the necessary math requirements for an undergraduate CS education. To quote the authors, "CS2013 only specifies mathematical requirements that we believe are directly relevant for the large majority of all CS undergraduates (for example, elements of set theory, logic, and discrete probability, among others)."

The guide continues, "CS2013 distinguishes between the foundational mathematics that are likely to impact many parts of computer science—and are included in the CS2013 Body of Knowledge— from those that, while still important, may be most directly relevant to specific areas within computing. For example, an understanding of linear algebra plays a critical role in some areas of computing such as graphics and the analysis of graph algorithms. However, linear algebra would not necessarily be a requirement for all areas of computing".

Similarly, ABET specifies, "One year of science and mathematics: Mathematics: At least one half year that must include discrete mathematics."

Currently, OSSU:CS recommends students take Math for Computer Science, which matches both guidelines' expectations of teaching discrete mathematics. But OSSU:CS also requires the equivalent of 2 additional math courses in Core Math and another 2 courses in Advanced Math. This goes far beyond the recommendations.

There is still a general expectation that CS students demonstrate the ability to handle college level mathematics. CS2013 states "a CS program must provide students with a level of 'mathematical maturity.' To wit, some programs use calculus requirements not as a means for domain knowledge, but more as a method for helping develop such mathematical maturity and clarity of mathematical thinking early in a college-level education." The ABET program criteria states, "The additional mathematics might consist of courses in areas such as calculus, linear algebra, numerical methods, probability, statistics, number theory, geometry, or symbolic logic."

OSSU:CS must ensure that our prerequisites match this expectation. Students should be encouraged to choose 1 additional math course after discrete mathematics.

Proposal: 1) Move Linear Algebra to Advanced Math. 2) Move Calculus 1A, 1B, 1C into Advanced Math. 3) Move Introduction to Logic into Advanced Math. 4) Move Multivariable Calculus into Extras/Courses. 5) Add language making clear that students need only take one Advanced Math course.

Alternative: CS2013 states, "undergraduate CS students need enough mathematical maturity to have the basis on which to then build CS-specific mathematics (for example, as specified in the Discrete Structures Knowledge Area)". This suggests that students would benefit from taking their elective math course before taking Mathematics for Computer Science. OSSU could move the math elective earlier in the curriculum.

Future Work: When offering math options for CS students, the ABET standards call out a number of disciplines where OSSU does not have a recommendation: numerical methods, statistics, geometry. OSSU should identify the best course(s) for each of these. Students with experience taking MOOCs in these disciplines are encouraged to open an RFC making a particular recommendation (e.g. create an issue with the title "Request for Content: Add University of Amsterdam's Statistics MOOCs to Advanced Math"). High quality RFCs will reference student reviews, syllabus/assignment comparison between courses, and other evidence of course quality.

waciumawanjohi commented 4 years ago

Note: This proposal is in line with the suggestions for v9.

riceeatingmachine commented 4 years ago

I would like to recommend the replacement of LAFF Linear Algerbra with Gilbert Strang's MIT OCW lectures.

LAFF was too fast for me follow, especially towards the end focused a bit too much on the efficient multiplication of matrices and the mechanical aspects of calculations.

I've seen some of Strang's lectures and it's much more conceptual.

Regarding feedback, there are question and answer videos and a handbook available in the market.

riceeatingmachine commented 4 years ago

Regarding Calculus 1A, 1B, 1C - I think we should mention a khan academy alternative. The MIT courses are almost 9 months long.

While they are very good, I think the student should be aware that a significant amount of time could be saved if he chooses Khan Academy (I think this can be done in two months).

Khan Academy also has a multivariable calculus course.

spamegg1 commented 4 years ago

Why not remove all math requirements? Students can catch up on math they need on an "as-needed" basis for each course. There can be an explanation of math needed and links to sources "in case you need it" to brush up on it.

Most CS classes in the curriculum either cover the required math anyway, or it's not too important to know the details.

For example I just finished Machine Learning in Core Applications, and there is a TON of linear algebra going on there... but you don't really need to know any of it to implement the algorithms. The instructor explains it all very well.

Regarding, for example, Principal Component Analysis in that course, I happen to know all the theorems in Linear Algebra that show under which conditions there exists a basis of eigenvectors for a vector space, and how that can be used to diagonalize a matrix etc., but you don't really need to. You can just take it for granted.

Or, again in the same course, the requirement of Multivariable Calculus... all you do is take a few partial derivatives of the cost functions, and the instructor shows you the formula, and says "if you didn't take MvC don't worry about it here is how it works". I would admit that Computer Graphics course definitely requires some vector calculus, but it can be learned without taking an entire course. It's just a few cross products and normalizing vectors, no big deal. Again the instructor covers it all.

The most math-heavy courses were Algorithms I & II in which almost all you do is write mathematical proofs for correctness of algorithms, but the instructor Tim Roughgarden covers it so well you don't need any prior math proof writing experience. He explains mathematical induction. He also covers all the necessary Probability theory needed for analysis of the randomized algorithms. Also there is a TON of graph theory, which can be considered somewhat abstract and advanced for undergraduate students, but again the instructor teaches all the basic graph theory you need; I had already taken the Math for CS course which taught graph theory, which was a waste.

There are many many more examples like this, which show that taking the math classes can be a waste of time.

I think it's not a good idea for an online curriculum to follow a "college curriculum" kind of mindset, having taught college math for 10 years. College curricula have tons of math requirements mostly due to bureaucratic reasons. They want to avoid student complaints, and avoid complaints from other departments; the administrators put pressure on us the instructors, and so on and so on... a vicious cycle of requirements piling up higher and higher. Not to mention the overall increased graduation time for students (goes up to >= 5 years) and the tuition/student debt accrued.

It makes much more sense for an online curriculum to adopt the Udacity-like "get a nanodegree in 6 months" mindset (I'm not saying OSSU should take 6 months, you get what I'm saying). Online learners are supposed to be self-motivated and self-disciplined anyways, they can sail on through much more quickly than a college curriculum. Online learning is supposed to save us from the bloat and expense of college, not imitate it. Maybe it's not a good idea to "offer a world class education."

You might consider my suggestion too extreme, then at least consider reducing math requirements VERY SIGNIFICANTLY. If it were up to me I would throw them all out.

riceeatingmachine commented 4 years ago

@spamegg1 Thank you so much for taking the time to comment! You make some very good points.

spamegg1 commented 4 years ago

@riceeatingmachine You are welcome, I hope I am being useful.

Thinking along the same lines I would recommend removing the "Electricity and Magnetism" courses too. I don't think anyone needs two 7-week courses on Electricity just to understand logic gates etc. in "Computation Structures Part I - Digital Circuits". When I reach that point in the curriculum I am skipping those classes. Moreover in Nand2Tetris Part I we already built logic gates, ALU, CPU etc. from a NAND gate.

jasonsbarr commented 4 years ago

The MIT Mathematics for Computer Science (6.042j) course on OCW lists single-variable calculus (18.01) as a prerequisite. Given that, it might be wise to keep single-variable calculus as a requirement.

I'm all for moving linear algebra to an advanced/elective status though.

jasonsbarr commented 4 years ago

I mention that because I'm pretty sure the ACM specifies that a computer science program should cover some degree of discrete mathematics, and I believe OSSU's goal is to follow ACM specifications with this program.

waciumawanjohi commented 4 years ago

Close of the Comment Period

Findings: 1) Feedback included support for reducing the required math courses. 2) Some recommendations for course alternatives were proposed. 3) Calculus is listed as a prerequisite of Math for Computer Science (which is a core course in the OSSU:CS curriculum)

Response: 1) MIT requires all students to take calculus, and guides all freshman to complete calculus by the end of their first year. My understanding is that all other math classes therefore have calculus as a prerequisite, but it is not clear to me how much these other courses depend on calculus. (There is a good Gilbert Strang intro lecture where he talks about linear algebra being a truly different discipline from calculus) It has been some time since I took Mathematics for Computer Science, but I cannot remember a hard dependency on calc. 2) As mentioned above, CS2013 expects students to demonstrate mathematical maturity. It is in that context that it points out that many universities require calculus. Notably, the guidelines posit that gaining this math maturity will prepare students for discrete math. This suggests that the additional math elective should precede Mathematics for Computer Science. 3) Discussion on ‘which courses best teach a topic’ is always welcome, but is a little out of scope on this RFC about which topics to recommend.

Conclusion A new section, Math Elective, will be created. Courses will be recommended for 4 topics: calculus, linear algebra, logic, and probability. Students will be directed to take one of their choosing. Math Elective will immediately precede Math for CS. Multivariable Calculus will into Extras/Courses.

Alaharon123 commented 4 years ago

A new section, Math Elective, will be created. Courses will be recommended for 4 topics: calculus, linear algebra, logic, and probability. Students will be directed to take one of their choosing. Math Elective will immediately precede Math for CS. Multivariable Calculus will into Extras/Courses.

CS2013 also says the following:

More generally, we believe that a CS program must provide students with a level of "mathematical maturity." For example, an understanding of arithmetic manipulations, including simple summations and series is needed for analyzing algorithmic efficiency...

Summations and series are generally taught at the end of Single Variable Calculus. You might argue that MIT's Mathematics for Computer Science course goes over that, but I think you'd have a bit of a hard time following along if that was your first encounter with the concept; it's covered in a way that's expecting you to already be familiar with it (hence the Single Variable Calculus prerequisite)

In addition, OSSU also uses the ABET guidelines, which says the following:

Mathematics: At least 15 semester credit hours (or equivalent) that must include discrete mathematics and must have mathematical rigor at least equivalent to introductory calculus. The additional mathematics might include course work in areas such as calculus, linear algebra, numerical methods, probability, statistics, or number theory.

If we're following ABET, that's an argument for more math. Single Variable Calculus and Math for Computer Science are MIT's equivalent of 4 credits each, which would lead one to think that there's actually a deficit of 7 credits worth of math. Single Variable Calculus covers in 4 credits what most colleges would cover in 8 though so assuming that's the case for Math for Computer Science as well, the two cover that math requirement.

I really think that if OSSU truly aims to be the equivalent of a bachelor's degree in Computer Science, it would be a mistake to remove the requirement for Single Variable Calculus.

Alaharon123 commented 4 years ago

I've thought about it more and I see how you're considering Linear Algebra, Logic, and Probability to be equivalent to Calculus and how that's supported by ABET, but I still don't think that's the way to go. Math for Computer Science states:

The prerequisite is 18.01 Single Variable Calculus. In particular, some familiarity with sequences and series, limits, and differentiation and integration of functions of one variable are necessary.

Considering that we need a math course or two there anyway, I don't see why you would change the requirement away from Calculus. Mathematical maturity means Calculus. Do you have that innate understanding of integration and differentiation that you learn in Calculus. Even if Math for Computer Science and Physics and whatever else uses Calculus teaches the basic things that you need, you'll be missing that intuitive understanding of it that you learn in a Calculus course. I don't think requiring Single Variable Calculus and Math for Computer Science is too much math in a computer science degree. That's the minimum that any reputable cs degree would require and that is what OSSU should require. If the criticism of 18.01x is how long it takes because it's paced, put the OCW version there as an alternative. The other choices should indeed be electives for people who want to take courses that rely on them. Calculus should be required.