Maybe to put it in the Core CS section BEFORE all math? BTW, Mathematics for Computer Science course covers everything from it but in more comprehensive way.
@Tvicker I was thinking the same thing
I did originally position it in Core CS before the other math courses, but ultimately ended up moving it to Advanced CS as an elective because it wasn't strictly necessary. MIT Mathematics for Computer Science is about the math you need for CS, while Stanford Introduction to Mathematical Thinking merely uses a few topics (a couple of which do overlap with Math for CS) as a means of analyzing the mathematical thinking process -- not really to teach those topics. In other words, the former is about the how, the latter about the why and only relevant to those who will focus on the more mathy/theoretical aspects of CS. So my thinking was that the Core CS curriculum would be too bloated with the latter course included.
I also noticed that the MIT intro course was added after CS50. Is this course really required? What is covered in the MIT course that is not covered on the CS50 course and vice versa? Are they complimentary or can you feel free to skip MIT if you have already done CS50? CS50 is a phenomenal course and I think everyone should take it. Beginners and professional developers can learn from it. The reason I am asking, is because I went through the problems sets and there is nothing that CS50 seems to have missed. I could be mistaken by someone who has taken both.
I personally haven't taken the MIT intro course, but I've looked at the syllabus and I do believe they are both good survey courses for CS. CS50 was phenomenal and covered a good amount of topics, but I feel they show more a software engineering side of CS since the latter half of the course was dedicated to web development. The MIT course seems to be more oriented towards computer science and scientific computing. Based on the MIT syllabus, there was a lot of algorithms and some topics that CS50 doesn't discuss such as object oriented programming. Whether you should skip it is something I can't definitively comment on, but I do believe there are at least a few new topics in the MIT intro course.
I'm inclined to agree that CS50 after the C part kind of heads off in an entirely different direction. It also even in the 2017 version fails to teach you sufficient Python.
What's absolutely required is that students are, one way or another, exposed to the very basics of imperative programming with manual memory management (which is the lowest level of programming without dropping to assembly) as well as basic data structures and algorithms.
CS50 does fulfill this (though not as thoroughly as I'd like), but at least in the 2017 version, it gets really easy and shallow as soon as they transition students away from C. They barely teach any Python or JavaScript, you just fill in a couple lines here and there; whereas in the best part of the course, you have to implement a non-trivial data structure (ideally, the trie, but they don't force you to choose this one) all on your own using nothing but C and the command line, with the goal of maximizing performance. It seems like CS50 has been getting easier over the years.
The MIT Intro class is more robust and hardcore overall, but doesn't completely fulfill the above requirement because it's taught in Python alone, which though imperative (like C) it does not teach manual memory management since it uses a garbage collector.
So the decision was made for v7 of the curriculum to list both courses, with the note that "Both are required, but feel free to skip straight to the second course when CS50 (the first course) moves away from C." Note that this recommendation is only relevant for new students. If you have already finished CS50 and moved on to Core CS, just keep going. In other words, the MIT Intro replaces the non-C parts of CS50.
If students do choose to skip the non-C part of CS50, they won't get exposed to HTML/JavaScript/SQL right away, but this is fine as they will get this later in the curriculum.
Most helpful comment
What's absolutely required is that students are, one way or another, exposed to the very basics of imperative programming with manual memory management (which is the lowest level of programming without dropping to assembly) as well as basic data structures and algorithms.
CS50 does fulfill this (though not as thoroughly as I'd like), but at least in the 2017 version, it gets really easy and shallow as soon as they transition students away from C. They barely teach any Python or JavaScript, you just fill in a couple lines here and there; whereas in the best part of the course, you have to implement a non-trivial data structure (ideally, the trie, but they don't force you to choose this one) all on your own using nothing but C and the command line, with the goal of maximizing performance. It seems like CS50 has been getting easier over the years.
The MIT Intro class is more robust and hardcore overall, but doesn't completely fulfill the above requirement because it's taught in Python alone, which though imperative (like C) it does not teach manual memory management since it uses a garbage collector.
So the decision was made for v7 of the curriculum to list both courses, with the note that "Both are required, but feel free to skip straight to the second course when CS50 (the first course) moves away from C." Note that this recommendation is only relevant for new students. If you have already finished CS50 and moved on to Core CS, just keep going. In other words, the MIT Intro replaces the non-C parts of CS50.
If students do choose to skip the non-C part of CS50, they won't get exposed to HTML/JavaScript/SQL right away, but this is fine as they will get this later in the curriculum.