Closed joshmhanson closed 5 years ago
I don't think that's the solution to the problem. Right now ossu seems to have two goals for Intro to Computer Science. See if the field interests you and start off the major. So Intro to Programming is currently recommended that everyone do and consists of two courses (now one) that are the first course in Harvard and MIT respectively. The problem with this seems to be that Harvard and MIT are high level colleges so these courses are hardcore. People are being dumped straight into the deep end.
I don't think Stanford's CS101 is the solution. If you go on the Stanford website, that's a class for non-cs majors to get some computing knowledge; cs majors there are supposed to start with CS106. CS101 is definitely supposed to fulfill the testing the waters part, but it's lower level than a proper cs major; it's an entire rung down from Introduction to MIT 6.00.1x, not a stepping stone (does that metaphor even work lol).
Instead, I propose putting a note under it, like there is under Mathematics for Computer Science, that if you're failing the course, take Georgia Tech's Computing in Python and try again. This is the online version of their CS1301 course, which is their primary first cs course. Reason I'm saying this course is because I saw it mentioned twice in the mit 6.00.1x forums, one of them by a ta saying that other people have recommended it in the past (the other by two people saying that it helped them significantly).
Of course, now that I've typed this all out I'm noticing #521 and your points there are valid, but maybe putting it as an optional course for people having trouble with 6.00.1x would mitigate that. Also, there's enough time between 6.00.1x being offered to do the entirety of CS1301 so length maybe isn't as big a deal. (You can do 6.00.1x whenever afaik, but it's only offered on a schedule 2-3 times a year.) There's also the question of how much of CS1301 is helpful to 6.00.1x. Maybe part 1 is basic stuff that isn't needed and is better covered in 6.00.1x. Maybe part 4 is more advanced than will be helpful for 6.00.1x. I don't know, but it's worth thinking about. Maybe @bradleygrant can provide input here.
Anyway, take all this with a grain of salt since I haven't actually started yet (I'm in a shitty college so I don't have 15 hours a week extra, but I also don't feel fulfilled), but these are my thoughts on the matter.
@Alaharon123 -- I'd be happy to provide insight if you have some specific questions. But ultimately I think the best thing is to try CS1301 out for yourself (and beta-test it for OSSU, if you like). One of the things I specifically enjoyed about the course is how little time I needed to make a step of progress in the course. You don't need 15 hours a week, you need 15 minutes a few times a day. I think you'll be pleasantly surprised by how much time you don't need.
Contrast that to CS50, which is an amazing course -- but you need an hour and a half straight for a lecture or two each week, 45 minutes for recitation sections, and several hours over the course of a couple weeks to bang on a giant problem set. It's easy to stagnate. But in CS1301 you can keep moving. So you do.
I pinged you specifically since you've done cs1301 and 6.00.1x so you can say which parts of cs1301 are helpful for 6.00.1x (or if it's the whole thing) and generally so that you're here and can be part of the conversation.
Thanks for your feedback!
Stanford CS101 is admittedly not really a computer science course; it's more of an introduction to how modern technology works. (For those who are confused by my last statement: computer science has nothing to do with computers or technology. When computer science was discovered, the "computer" was a human being...)
It does provide some very rudimentary programming exercises (which you can see here). It's unclear if this would be sufficient preparation for MIT Intro to CS.
My suggestions in #531 could resolve this: Stanford CS101 (or anything very similar to it) would go under Foundations, a section devoted to non-CS prerequisites. Everything in Foundations would be optional for every student who already has the background.
MIT Intro to CS would still be the main course in Intro CS, but a relevant subset of GT Computing in Python (or anything like it) could be noted as optional preparation for those who already too comfortable with technology to do Stanford CS101 but still not comfortable enough to dive into the deep end of MIT's course.
Notice I said "a relevant subset of GT Computing in Python". I'm not sure if parts 1-2 would be sufficient, or if part 3 is also needed. If I remember correctly, there are also a lot of other introductions to Python in extras/courses that should be given proper consideration.
Thanks for posting that resource on Stanford's CS101!
I went through a few of the sample lessons to see what CS101's course presentation looked like. It seems to be a suitable "first foundations" course. I was a bit concerned about the course's description of the language it uses to teach its code lessons, which they characterized as "a subset of JavaScript"; I was concerned that it would be too much like "toy code" or not very useful. I was happy to find that it is real JS, if not production JS. And the entire point of the course is to teach principles anyway.
I think the Stanford CS101 possibly merits inclusion as a "foundations" course, taking the place of a "survey of programming" course one might find as an elective or sub-unit in a junior high or high school program. It's a low-stakes way to test the waters and see if either programming or computer science is something one might enjoy.
In regards to GTx's CS1301x, I think that serves a separate purpose. In my mind, CS1301 is just a longer, shallower ramp up Mount 6.00.1. In other words, it gets you to the same place (or very close) but by trading time for effort. That's not to say I learned nothing from 6.00.1 (mainly: assertions, and plotting) but I touched all of it in CS1301, sometimes lighter, sometimes much deeper.
I find all of CS1301 relevant to 6.00.1x -- but of most help will be Parts 1, 2, and 3 (until Objects week, with which I think Part 4 of CS1301 actually does a better job). Below is an approximate mapping:
CS1301x Coverage | Topic | 6.00.1x Coverage |
---|---|---|
Part 1 | Basic Programming, Procedures, Commenting, Debugging | Week 1 |
Part 1 | Variables, Logical & Mathematic Operators, Assignments | Week 1 |
Part 2 | Conditionals, Loops, Nesting | Week 1 |
Part 2 | Functions, Function Definitions, Stack Operations | Week 2 |
Part 2 | Error Handling, Try Statements | Week 4 |
Part 3 | Data Structures - Strings, String Manipulations | Week 1 |
Part 3 | Data Structures - Lists, Tuples, Sets, Dictionaries | Week 3 |
Part 3 | File Input and Output | Not directly addressed |
Part 4 | Object-Oriented Programming | Week 5 |
Part 4 | Algorithms and Algorithmic Complexity | Week 6 |
Not addressed | Package Imports, Plotting | Week 7 |
Hopefully this will help you answer questions related to course/material coverage. One thing you'll notice right away is there's a TON of material to pick up in the first week of 6.00.1x which is both language-agnostic and Python-specific... they kind of expect you to come in knowing how to code in some modern language. It's a lot to try and scrape together in the first two weeks of a course, and it's not a very nice way to learn the language.
Wow... just want to say that this is eye-opening. I will have to get back to you later with my full thoughts.
@bradleygrant You've been making a very persuasive case for OSSU recommending CS1301. I'll add a few things:
I'm a current Georgia Tech masters student. (I applied to GT after preparing through OSSU.) I like what GT is doing around online CS education. One thing that GT gets right that we're still working on is getting a student community that creates positive feedback loops at scale. That is, students are very engaged, TA for courses, contribute to thousands of posts per class per semester. I want OSSU to work with an organization getting all of that right.
Dr. Joyner, the developer of 1301x, is an instructor we should be working with.
He is well respected in general among OSSU students. He is also demonstrably trusted by GT. He is an instructor that GT asks to join struggling online courses to right the ship.
Joyner is responsive. I've corresponded with him multiple times. Recently I had a Udacity concern (Udacity hosts all the videos for OMSCS) and I reached out to Joyner and Udacity. I received a more full response from Joyner than from the platform itself.
You join a steady beat of students pointing out the need for introductory courses that teach the basic basics. (e.g. @navimac's Oct 4 comment in the Gitter) I remember 6.00.1x and I would not have been able to succeed in that class if I hadn't already read an intro book on Python. We should look carefully at courses that will obviate that need for self-study of programming before taking the first class.
I think an even more basic course should be a course on Logic. I am not sure where a course is offered that has this textbook, Introduction to Logic. This textbook should be coupled with this free software program on learning Logic, which is written by a different author.
I'm going to close this issue for now since I've changed my mind about including Stanford CS101. So far, no one has really expressed an interest in it, and I think there are better solutions to the two problems I'm trying to solve:
For problem 1, I'm currently working on evaluating the options we have in issue #540. Please head over there for further discussions on this topic. We have to evaluate the intro courses on several criteria, and sometimes, a course can seem great until we encounter a deal-breaking flaw.
Sorry @Pranaybee I forgot to respond to your comment. I think it's best if I address it in issue #540.
The first course in the curriculum, MIT Intro to CS and Programming using Python, says that you will find the course challenging if you've never done any programming before.
Thus, it doesn't really start "from zero". This excludes anyone from the curriculum who is truly starting from nothing, and I don't want our curriculum to be exclusionary.
Therefore, I think we should add Stanford CS101 before MIT's intro. It takes a step back and answers much more fundamental questions.
It's probably the closest thing I've found to a MOOC for teaching what you learn in the great book Code: The Hidden Language of Computer Hardware and Software. It also has a very rudimentary introduction to programming (using a subset of JavaScript), which should help make students more comfortable going into MIT Intro to CS.
Many people here will find this course too easy. But that's because it isn't for you — it's for people who are truly starting fresh.