
How Harvard's CS50 Renewed My Hope For Online Education - eriktrautman
http://www.modernwanderlust.com/show_post.php?id=93
======
gits1225
The difference between CS50 and others is that CS50 gives you a similar
experience of taking a class in flesh and blood, while offering all the
flexibility of online education; in other courses, it feels like the
professors are held at gun point and are asked to teach the material in 10-15
mins intervals.

It is awkward to both the teacher and the student, because teaching with a
camera up so close to one's face is so, and just because Salman Khan (Khan
Academy) did so, doesn't mean every Udacity, edx, and Coursera should.
Remember that in the beginning, Salman Khan intended those videos for his
cousins.

Just look at SEE[1], to see how effective a traditional class room style
teaching can be. SICP[2], SEE and CS50 are hands down the best lectures I ever
had the pleasure to learn from.

[1] <http://see.stanford.edu/see/courses.aspx>

[2] [http://groups.csail.mit.edu/mac/classes/6.001/abelson-
sussma...](http://groups.csail.mit.edu/mac/classes/6.001/abelson-sussman-
lectures/)

------
aruss
I wholeheartedly agree with the OP. I took Prof Malan's course via the Harvard
Extension School my junior year of high school while trying to get into
programming. I first tried to get into PHP and C++ the prior summer (I had no
clue, and had no idea of how clueless I was). Enter MIT's OCW and CS50. I
quickly watched all of the lectures in about a week or so, and decided to take
the course for the following fall shortly thereafter.

Prof Malan is one of the best lecturers I have had the pleasure to learn from,
knowing how to keep an audience interested in just about anything. Malan and
his army of TAs have also done a fantastic job of creating a community around
CS50, and have provided a plethora of resources for their students. Their
assignments and problem sets were also perfect. They were challenging and
interesting without being inaccessible; teaching both programming skills and
being relevant to important CS concepts. We also got a special lecture from
Brian Kernighan at the end, which was a real treat.

I'm extremely appreciative for the skills and knowledge CS50 has given me, and
would highly recommend it to anyone willing to take on the challenge. It's the
reason why I have my current interest in and basic understanding of CS.

I'm really excited for what online education can offer if many other classes
can be brought up to the high standard Prof Malan and his team has set. With 5
years of community college (8th-12th grade) and a semester at a top liberal
arts college, all taken in-person, CS50 remains one of my favorite classes (in
terms of interest, challenge, fun, etc).

I should also mention I took CS75 with Malan as well, and while it wasn't
quite as enjoyable for a number of reasons, it was also an excellent course.

~~~
benesch
Malan truly is a fantastic lecturer, isn't he? He's also been leading the
charge for free, online education—his course has been on MIT's OCW since 2007
[1].

Did you find that the lectures provided enough basis to complete the problem
sets? A number of students I talked to struggled to actually piece together
code after the presentation of mostly concepts in lecture.

[1] <http://cs50.tv>

~~~
eriktrautman
Malan's energy is awesome.

For some of the more beastly problem sets in data structures and memory
management, where Googling the error message just didn't cut it, I had to
watch through all that week's available content (both lectures, both
recitations, the walkthrough and the shorts) before gaining enough momentum to
grind by. That's where it really hurt to not have another student sitting in
the next seat to bounce ideas off of. They've put together a well monitored
forum but it's not the same as walking someone through your code. I got it
done, but some gray hairs could have been avoided.

One of the major areas of improvement for all online ed is how to bring back
that frictionless asking of questions. It's a comparative advantage for both
people -- you may save me two hours of frustration with ten minutes of your
time on a particular memory error and I may save you two hours of frustration
in a similar fashion by better understanding pointers.

------
dschiptsov
This is mediocre course. You get lots of information, but without hows and
whys which are absolutely necessary in CS.

Compare it to MIT's course on the same page - they spend lots of time to
explain you whys and hows, so _later_ you nave no questions when faced with
crap like PHP.

They not just taught you coding in Python, they explain how it works and why -
they teach you environments - how all those classes are implemented, so, when
you see Ruby, your educated guesses (note language usage) will be correct.)

So, Berkeley's CS61A by Brian Harvey is where to start. _After_ this course
you need data-structures and algorithms (MIT has good ones).

 _Then_ it doesn't really which crap you have to face in industry - PHP, Java,
something from MS or SAP - you will be able to pick up in on the go, because
you have learned those fundamental hows and whys first.

~~~
rartichoke
I think you're way off base. I took both 6.00x (the MIT course) and cs50x side
by side. Only half way done with cs50x at the moment but 6.00x is over other
than the final exam.

I feel like cs50x explains the "hows" and "whys" in much more detail, mainly
because we're dealing with a lower level language.

For example, I know exactly what's happening on the stack now and what role
the heap plays and how to balance my data between the 2 to tweak the
performance and make trade offs. You don't learn this stuff on MIT's course.

Also MIT's course spent half the semester running simulations and dealing with
statistics using pylab. This to me seems very specific to what you want to do.
If you want to do statistical analysis that's great, but a lot of people do
not.

~~~
intellegacy
To be fair, this is simply a contrast in different pedagogical approaches to
the first Intro CS Class. You learn the hows and whys in later MIT courses
when you cover binary and C.

~~~
rartichoke
Are any of these available as online courses (lectures+psets+questions/exams)?
I didn't see them.

------
rartichoke
I really wish they opened up CS51 and CS61. I can't say enough good things
about CS50x. I haven't experienced being taught material in such a way...
ever.

They do a tremendous job at explaining everything and have loads of video /
text with really fun and interesting problem sets.

I wish I could erase the knowledge of taking the course just so I can re-take
the course again to experience its sheer amazingness.

~~~
fiatpandas
CS50 online was a really awesome experience. I haven't found another online CS
course with an equally or more effective teaching style and material.

CS51 looks great, the problem is of course they won't open it up. Harvard has
every CS51 lecture, help session, etc. recorded, with all assignments online.
The class even makes use of CS50's VM. Harvard Distance education students can
access this full material if enrolled. It's a shame it just goes to waste
after every semester.

Anyone know the CS51 professor? Maybe they can be convinced to make a
CS50-style permanent online offering with a small amount of effort.

------
benesch
This is really good to hear.

On campus, CS50 has a cult-like reputation. You'll regularly see CS50 t-shirts
worn on campus; upperclassman insist that CS50 is one of those classes "you
just have to take"; Malan is practically a celebrity. (I'll admit I was
excited to spot him in CVS one day.)

But I've watched students struggle through CS50 on-campus and come out barely
understanding C and never wanting to touch computer science again. A small
percentage, but enough to make me wonder if CS50 is the best approach. There's
no "intro to programming" course at Harvard—this is it. There's also no
advanced first-semester CS course: only four or five kids a year will skip 50.
So CS50 is forced to teach both kids who've never touched more than an
internet browser and kids who've lived on the terminal. Starting with C isn't
easy, and HTML/CSS/Javascript (and goddamit, PHP) are shoved into the last 20%
of the class.

There was a study done a while back about why programming is so hard to learn.
Wish I could find it. The researchers discovered something like a third of
people picked up programming with little effort, a third could grok it with
hard work, and the last third never had a chance. I think CS50 is great for
the first two-thirds, but completely lacking for the last third. There's just
too much material in too little time.

Based on your reaction to edX, I think there's significant potential here. A
one-size-fits-all class works much better online since you can move at your
own pace. I'm excited to see where this goes. First place might be an option
to pay for human grading. It's awfully hard to learn from automated grading.

Also, David Malan and his TFs have literally dedicated their lives to this
class. I went to a talk by Tommy MacWilliam (one of the head TFs and lead
developers of the CS50 edX platform), and they've been working tirelessly for
months to develop the UX at scale. They scrapped the standard edX format to
truly optimize the experience for this class, and I'm glad it worked. [1]
(Some of the apps were used on-campus first and had a few years in the wild.)
Most of Malan's recent research has been on large-scale pedagogy. Interesting
stuff. [2] [3]

PS. The appliance really is complete crap, isn't it? (For those unfamiliar,
Malan puts together a VMWare Fusion image with a heavily stripped-down version
of Fedora. It's got a command-line auto-submission tool and some other
CS50-specific stuff as well.) Do yourself a favor and use a vanilla install of
your favorite linux distro. It's a necessary effort to normalize hundreds of
thousands of development environments, but god they managed to cripple Fedora.

[1] <http://cs.harvard.edu/malan/publications/ccscne10.pdf>

[2] <http://cs.harvard.edu/malan/publications/CMU.pdf>

[3] <http://cs.harvard.edu/malan/publications/fp129-malan.pdf>

~~~
objclxt
_"There's no "intro to programming" course at Harvard—this is it [...] I think
CS50 is great for the first two-thirds, but completely lacking for the last
third. There's just too much material in too little time."_

There _is_ actually a course for the last third, it's CS1. I used to Head TF
it: like CS50 it counts for Gen Ed credit, but it is designed primarily for
that last third you talk about that may find CS50 too fast paced. It uses Java
rather than C. No plans to take it to edX though (with both MIT and Harvard's
Intro CS classes the space is crowded enough!).

CS1 was originally designed pre-Malan when CS50 was basically only taken by
those majoring in CS, and it is somewhat less popular now as many students
want to take CS50 for the 'experience'. The massive success of CS50 at Harvard
(now one of the top three most popular classes across the entire undergraduate
catalog) is both a blessing and a curse: it's great that more students are
interested in learning to program, but it's also meant the department is
having to rethink what it offers post-CS50.

~~~
benesch
Really? That's certainly not the way it's perceived today. The course is
called "Intro to CSII" [1], it's offered spring term only, and Malan's CS50
FAQs explicitly discourage skipping to CS51. [2]

Sounds like it could be a shame if the CS51 material hasn't changed. As of now
there's a big emphasis on functional programming and ML—was that added after
CS50's shift?

[1] <http://www.registrar.fas.harvard.edu/computer-science>]

[2] " _Should I skip CS50 if I took AP Computer Science?_

Probably not. You will likely find yourself at a disadvantage if you skip
ahead to, e.g., CS51 or CS61, if only because many courses in computer science
at Harvard assume familiarity not only with C but also with other concepts
introduced in CS50. The differences between CS50 (which focuses on C) and AP
Computer Science (which focuses on Java) do extend beyond the courses’ choice
of languages. If you cannot complete past quizzes quickly and correctly, you
should not skip CS50."

<https://www.cs50.net/faqs/>

------
vicks711
Cs50 and cs75 by prof David malan are great courses. The prof is really cool

