Become a fan of Slashdot on Facebook

 



Forgot your password?
typodupeerror
×
Education Programming

How Harvard Teaches CS Students How To Code (kqed.org) 138

Harvard computer science professor David J. Malan "is pretty amazing!" says long-time education-watcher theodp. And he's sharing a link to the online version of Malan's famous CS50 class, "if you can't pony up the estimated $63,025-a-year sticker price to take 'the quintessential Harvard (and Yale!) course' on campus."

KQED's education site "MindShift" reports: Malan's class attracts students who have never taken computer science before, as well as kids who have been coding a long time. His goal with this diverse group of learners is to create a community that's equal and collaborative. One way he does this is by asking students to self-identify by comfort level. Those groups become different section levels, and they sometimes get different homework, but harder assignments are not worth more credit. Malan said recently that the "less comfortable" group has dominated his 700-person course. "At the end of the day all students are treated with the same expectations," said Malan, speaking at the Building Learning Communities conference in Boston.

Students are graded based on each individual's growth; Malan and his team of teaching assistants don't use absolute measures when assigning grades. Instead, they look at scope, how hard the student tried, correctness, how right the work was, style, how aesthetic the code is, and design, which is the most subjective. When it's time to assign grades, Malan and his teaching fellows have lots of in-depth conversations about how each student has improved relative to where he or she started...

The course includes a tool that rewrites error messages to make them easier to understand, plus a code-checking tool which they're planning to open source. There's also a cloud-based IDE which "allows students to access their code from multiple locations," though students can also submit their code through GitHub. (The original submission complains that Harvard's students are "coddled.") But Malan says the class works partly because there's an intentionally social aspect to it -- including numerous teaching assistants holding office hours in public spaces and "the human structure within the course." Guest lecturers have even included Mark Zuckerberg and Steve Ballmer.

But all these technical details don't really capture the wild flavor of the course and all of its multimedia bells and whistles. Malan's fast-paced lectures often close with relevant clips from movies -- for example, a lecture on cryptography which ended with video from a movie you'd see "if you turn on your TV on December 24th."
This discussion has been archived. No new comments can be posted.

How Harvard Teaches CS Students How To Code

Comments Filter:
  • by Begemot ( 38841 ) on Sunday December 24, 2017 @01:50PM (#55801145)

    Guest lecturers have even included Mark Zuckerberg and Steve Ballmer.

    and some wouldn't have to waste the time on reading the whole thing

    • by AmiMoJo ( 196126 )

      They likely provided relevant industry experience. Coding at university is very different to doing it in a commercial environment.

      Don't let that stop you blindly writing the entire course off though.

      • by lgw ( 121541 )

        They likely provided relevant industry experience. Coding at university is very different to doing it in a commercial environment.

        We're talking about Ballmer and Zuckerberg here. Zuckerberg may have actually written some code while he was at university, but the closest Ballmer ever can to coding was throwing a chair at a developer. Neither has ever coded "in a commercial environment".

        But then, no one goes to Harvard to learn to code; you go there to meet people like Ballmer and Zuckerberg. Harvard is about developing your social network, not any skills that might let you contribute to society.

  • by Nutria ( 679911 ) on Sunday December 24, 2017 @01:51PM (#55801147)

    When it's time to assign grades, Malan and his teaching fellows have lots of in-depth conversations about how each student has improved relative to where he or she started...

    Because precious snowflakes can't handle the reality that computer programs are supposed to work?

    asking students to self-identify by comfort level.

    Comfort???? I think I'm going to barf.

    • by alvinrod ( 889928 ) on Sunday December 24, 2017 @02:10PM (#55801215)
      I think that's going a bit too far. If this is a course designed for anyone to take as a first programming course, I think this approach is ideal, or at least much better than many alternatives. There are a lot of classes like this (one example I remember was college vs university physics where the university physics course was still challenging, but designed around being accessible for people who weren't going to major in physics or eventually take upper level classes that demanded an even greater level of rigor) where it's more appropriate to grade on a more gentle slope instead of making the class hard as balls in order to weed out potential majors.

      On the other hand, that's why it would be a terrible idea for people who are going to major in computer science. Using this grading scale punishes someone who always tried the hardest material from the beginning and struggled with it and rewards someone who eventually made the jump from using their own shit as a crayon to managing to turn out the computer and submit assignments. There's something to be said for measuring growth as a part of a student's potential, but if the starting point is so low, I'm not sure how much it matters.

      This sounds like the kind of computer science class that everyone at Harvard has to take (given the class size of 700), so I think it's appropriate to build the class to get the maximum amount of student buy-in so that the students actually learn something. Grades at a place like Harvard are utterly useless since just having a degree already marks you as one of the elite, never mind the connections you'll make while attending. I'd also guess that most people who are going to major in computer science will test out of the course or take a much more rigorous course with a more stringent grading scale.
      • by Nutria ( 679911 )

        Using this grading scale punishes someone who always tried the hardest material from the beginning and struggled with it

        Maybe one day these uncomfortable snowflakes will learn not to do that.

        • by rtb61 ( 674572 )

          Perhaps they will take it to engineering and the construction disciplines. The building fell down, everyone died but everyone tried hard to do a proper job, so pass. Ohh how about doctors and dentists, getting their qualifications based upon comfort level, the little darlings, part way through a procedure they got a little uncomfortable with the difficulty and simply walked away from it, that's fine. We all know exactly what this is, a way to get women who are crap at coding a passing grade and that is all

      • by Roger W Moore ( 538166 ) on Sunday December 24, 2017 @04:03PM (#55801639) Journal

        There are a lot of classes like this (one example I remember was college vs university physics...)

        Exactly - the reason we have two courses is because we need to have fixed learning outcomes for the course and fixed standards against which students are graded because there are two levels of physics required by different programs. When I teach either the calculus or non-calculus course I assess students against a fixed set of standards which are lower for non-calculus than calculus.

        Having flexible standards based on how confident the student is when they start the course is utter nonsense. It's great if a student massively improves their understanding of the subject but if they fail to show that they understand the material in the course then they still need to fail because otherwise you are just setting them up to fail in subsequent courses which rely on them understanding the material in an intro course at a certain level.

        I already regularly have to explain to students that we reward performance not effort with grades. The reward for effort is putting in the best performance you can and getting the best grade you can. How many people would be happy seeing a doctor who qualified based on how hard they worked rather than how well they understood medicine? Who would want to live in a building or drive across a bridge designed by an engineer who did not understand basic physics but worked really hard at trying to?

        • Having flexible standards based on how confident the student is when they start the course is utter nonsense. It's great if a student massively improves their understanding of the subject but if they fail to show that they understand the material in the course then they still need to fail because otherwise you are just setting them up to fail in subsequent courses which rely on them understanding the material in an intro course at a certain level.

          This whole prerequisite thing is a giant edifice of instituti

    • by whoever57 ( 658626 ) on Sunday December 24, 2017 @02:13PM (#55801225) Journal

      Subjective marking makes it easier to pass those students whose families give large donations to Harvard's endowment funds.

    • There should be two grading systems in parallel - one to mark whether a standard has been met, the other to mark progress.

      That way you can evaluate both whether a student is ready to apply what they've been taught AND you can evaluate whether there is any point in continuing to teach them if they aren't.

      Traditional evaluation is done purely on the basis of 'did they meet the standard', and if you're going to use just one method, that's the way to do it (because that's what the real world will use when you'r

      • >I would qualify that by saying if you're at a prestigious post-secondary educational institution... the time for 'we will help you catch up' has long since past.

        I would further clarify that I apparently am NOT going to impress my former English teachers anytime soon.

        I should have typed, "passed".

    • Re: (Score:3, Insightful)

      by quantaman ( 517394 )

      When it's time to assign grades, Malan and his teaching fellows have lots of in-depth conversations about how each student has improved relative to where he or she started...

      Because precious snowflakes can't handle the reality that computer programs are supposed to work?

      Remember the actual objective of a 1-st year introduction to programming course, it's not to assign jobs or decide grad schools, it's to teach the kids to program, give them good fundamentals in CS, and help filter them into the appropriate academic program.

      I don't care if they sing around a campfire or take kickboxing if it helps further those two objectives.

      As to your great offence at the idea that they're being too cuddly in a 4-month introduction to programming course. Well I think there's a term for th

      • by Nutria ( 679911 )

        Remember the actual objective of a 1-st year introduction to programming course, it's not to assign jobs or decide grad schools, it's to teach the kids to program, give them good fundamentals in CS, and help filter them into the appropriate academic program.

        Shockingly, though, it's possible to do that while "demonstrating white male heterosexual privilege". (I know, because a "Programming for Business Majors" class is what encouraged me to change into Comp Sci. Of course, I'm a privileged white male heterosexual...)

    • by gweihir ( 88907 )

      Indeed. That is no way to teach engineers. Even less so in a society that critically depends on the quality of its engineers.

      • Engineers (people with engineering licenses, not the sanitary engineers who collect the trash or the software engineers who hack together computer programmers) take competency examinations and nobody cares *how* they learned, only that they've demonstrated that they have the knowledge.
        • by gweihir ( 88907 )

          Funny. I am actually a Computer Scientist with an engineering degree in the field. So I am an actual engineer. The idea that an engineer needs a "license" is a US one, where the education-system is primitive.

    • by hey! ( 33014 )

      Well, I don't know about *this* class, but I once took the online version of one of Harvard's algorithms classes. It was *hard*. In fact I'd go so far as to say it was *very* hard, even though at the time I had thirty years of programming experience and considerable knowledge of the topic already.

      You're assuming this careful individualized evaluation of improvement is about raising the scores failing students. But what if it were about raising the bar for students who had prior experience -- as most peop

      • by Nutria ( 679911 )

        Typically, and for this very reason, there are "Intro to $FOO" courses targeted at majors, and "Intro to $FOO for non-majors".

        • by hey! ( 33014 )

          Which at a place like Harvard means nobody (except legacies) will register for intro for non-majors.

          • by Nutria ( 679911 )

            Maybe Harvard students aren't as smart as they think they are. After all, Scientists Say that rich people aren't that wise... [slashdot.org]

            • by hey! ( 33014 )

              Well, there's two distinct populations an Ivy League school: the well connected and the really, really smart. In fact arguably the whole point of the Ivy League is for the social elite to borrow some of the prestige of the intellectual elite. For that to work, though, you have to serve both communities.

    • by dabadab ( 126782 )

      Because precious snowflakes can't handle the reality that computer programs are supposed to work?

      It seems it's much more about taking teaching seriously. Where you don't just seek an easy way to assign grades but actually do all the hard work that is needed to truly get an insight of what the student has accomplished (or has not).

  • by Anonymous Coward

    ..thereâ(TM)s a real engineering school down the river.

    I remember when I went to MIT that back then all the engineering classes were always graded on a curve. How hard you tried was secondary, how good you were on absolute level and vs. your peers was all that mattered. I think A+ was given to 5% of class, I believe no more than 20-25% of A grassâ(TM)s.

    Once I took a class with a TA who was a Harvard economics post-doc. Two weeks into the class that he was teaching he said that we had just covered

  • by Anonymous Coward on Sunday December 24, 2017 @02:01PM (#55801179)

    IMO, grading on how well a student improves can be easily gamed. My son goes to a high school that does this, and he frequently gets lower grades, even if he performs better than others in the subject matter.

    The problem is improvement is not linear. For those who are more advanced, it is likely levels of improvement is less because the more you know, the less there is to learn. Therfore, those with a higher level of initial competence will not show the same amout of growth as those newer to the subject matter.

    Students aware of this method of evaluation can lie about there starting level to give the appearance of more improvement over the life of the course, therefore, getting better grades then those show more advanced knowledge and skills.

    I am all for praising improvement, but those with lesser knowledge and skills should not get higher grades than those who are better for the same course.

  • by JMZero ( 449047 ) on Sunday December 24, 2017 @02:01PM (#55801181) Homepage

    I'm involved in hiring new programmers quite often. Way too many of them have absolutely no idea what they're doing, despite making it through some kind of program.

    I guess maybe they made a lot of progress towards understanding the flavor of programming. Maybe they learned to leverage the "social dynamic" of programming to cobble together some garbage out of other people's code.

    I think it would be better if they learned how to program, and had to prove they could do it before someone gave them a certification. You can learn programming the same way you learn anything else, and there's no reason to teach it or evaluate it differently. It's not magic, and I think with time and a sane approach you could teach most people how to do it in a couple years.

    • by quantaman ( 517394 ) on Sunday December 24, 2017 @03:13PM (#55801477)

      I'm involved in hiring new programmers quite often. Way too many of them have absolutely no idea what they're doing, despite making it through some kind of program.

      I guess maybe they made a lot of progress towards understanding the flavor of programming. Maybe they learned to leverage the "social dynamic" of programming to cobble together some garbage out of other people's code.

      I think it would be better if they learned how to program, and had to prove they could do it before someone gave them a certification. You can learn programming the same way you learn anything else, and there's no reason to teach it or evaluate it differently. It's not magic, and I think with time and a sane approach you could teach most people how to do it in a couple years.

      It's a 1st year intro to programming course, they have 3.5 more years to learn proper software development.

      Complaining that they aren't writing good programs after the CS50 is like complaining that grade 1 students are making derivative plots when they learn to write complete sentences.

    • Completely agree. (Score:2, Interesting)

      by Anonymous Coward

      I have also been involved in hiring new programmers. Once in a while we get a gem, fresh out of college, who can actually write code that solves problems they haven't seen before. They can figure it out, and they can make it work.

      Most of the candidates, with Computer Science or Software Engineering degrees, freeze up when given a problem that requires them to create their own data structure and write an algorithm to traverse it, in order to solve a business problem. Every piece of the problem is straight

    • by gweihir ( 88907 )

      You can learn programming the same way you learn anything else, and there's no reason to teach it or evaluate it differently. It's not magic, and I think with time and a sane approach you could teach most people how to do it in a couple years.

      Well, yes. On the level of a _technician_. Technicians are using known methods to solve known and well understood problems. That does not cut it unless it is really only simple business logic and generic web-applications the coder does. In actual reality, many coders work on the level of engineer and that is where you cannot teach things to everybody anymore, because actual, in-dept understanding is required. That is also the reason why so much code is so bad: Technicians doing the job of engineers and some

      • by Anonymous Coward

        It is human nature to challenge and attempt to disprove unpleasant statements about reality.

        Especially when there is money to be made in the attempt, regardless of its degree of actual success.

        To truly excel as a software developer, one needs more than knowledge of the tools and techniques. One needs a brain that is genetically wired to be good at the kind of thinking that is necessary. Not everybody has this. And that is an unpleasant fact.

        • by gweihir ( 88907 )

          I do disagree on the "brain wiring". First, it is known to not be genetic. And second, there is no known implication from "brain wiring" to "talent". Sure, rote skills do change the brain wiring, but even then the implication is the other way round. It is more like the person is programming their brain. But what is needed here is much more subtle.

          That said, I fully agree that to be a good software developer or engineer or mathematician or the like, specific talent (whatever that actually is) is required and

    • Re: (Score:3, Interesting)

      by HornWumpus ( 783565 )

      If someone is going into CS or EE they better be able to program by the time they _start_ college. They've had about 18 years at that point.

      Schools wouldn't accept an English major that didn't already know how to write, at least a little.

      A CS freshman that doesn't code is like a music major that doesn't play an instrument. Wasting his/her time.

    • A CS degree is not a 'How to program' degree any more than a Mechanical Engineering degree is a 'how to be a mechanic' degree.

      "Programming" at this point is a voctech position.

      If you are hiring CS majors for programming positions you're going to end up as ill prepared as hiring a physicist for a plumbing job.

      • by lgw ( 121541 )

        Arrogant twaddle. If you get a CS degree and can't code well, you've wasted quite a pile of money, and you certainly won't find a job related to your major.

        Most students get a CS degree because they want a related job. A university that fails to deliver that is engaging in outright fraud.

        • you certainly won't find a job related to your major.

          If you think CS majors are programmers you've failed to keep up with what CS majors actually do. CS of 2017 is not CS 1980. Just like Mechanical Engineering 2017 is a completely different job than Mechanical Engineering 1980.

          If you want to be a code monkey go to a programming bootcamp and get a job programming. If you want to do Computer Science you get a CS major.

          • by lgw ( 121541 )

            If you think CS majors are programmers

            Employed CS majors are programmers. I'm sure there are a few barristas as well, of course, though not so many as most degrees.

      • by Baki ( 72515 )

        As someone with a CS (and physics) degree that knows how to program, I have to say that I'm fed up with "computer scientists" that cannot program well, and think they're to good for that "low level" stuff.

        Instead they produce power point slides, trying to tell computer programmers and projects how they should work at a detailed level, while they have never written a single line of code and contribute zero practical value to the company.

        On the contrary, they come up with "one size fits all" standards and sol

  • ...where you get hired and paid for ability, rather than commitment.

    • by plopez ( 54068 )

      No one cares about grades. In most cases they want drones who do what they are told. The exception is academia, and that mostly used for you first grad school application. After that it is research based. And there is a bit of conforming to the mold in academia as well, though it is not as bad as the private sector.

  • by ebonum ( 830686 ) on Sunday December 24, 2017 @02:17PM (#55801255)

    Best CS101 course ever!
    https://en.wikipedia.org/wiki/... [wikipedia.org]

    Love it? You have the heart and mind to succeed in programming.
    Confused by it? Go learn WordPress or pick something more in line with your talents.

    • The course mentioned in the summary is not CS101, it's CS50. So presumably a remedial class to help people get oriented before they actually hit the CS curriculum.
  • I think that's going a bit too far. If this is a course designed for anyone to take as a first programming course, I think this approach is ideal, or at least much better than many alternatives.

    You kind of went into this, but I think it's a real problem to have a base class that you can't use in any way to understand if you will be able to handle other classes. At the university I went to, they had a "programing for non-programmers" course but then also an intro to CS class. I think you really need someth

  • by DeplorableCodeMonkey ( 4828467 ) on Sunday December 24, 2017 @02:57PM (#55801421)

    Was from a famous university with an over $50k/year price tag for tuition. Not Ivy League, but not far from it in prestige.

    - Couldn't use Google to answer truly dumbass questions like "derp derp how do I run duh script." (Answer it was inter-name script)
    - Couldn't pick up a new language to save his life.

    Dude quit his job like 2-3 weeks after starting.

    We could have gone down to a Northern Virginia Community College (very good CC, on par with most of Virginia's 4 year schools as much as a 2 year school can be), swung a dead cat into a filled CS room and every candidate it hit would have done better than this guy.

  • Privilege (Score:4, Informative)

    by lucasnate1 ( 4682951 ) on Sunday December 24, 2017 @04:30PM (#55801743) Homepage

    The real purpose is to let privileged people connect with other privileged people so that they can get privileged VCs to fund their startups or hire each other. Harvard is just capitalist america's version of aristocracy.

    • Question: if you were rich, why would you want to give away your money to other rich people rather than using it to make you more money by hiring highly skilled people?

      This is a serious question. I really would like to know why a rich person would want to blow their money on proping up other rich people rather than using it to benefit themself.

      Your post seems to imply that the rich are a unified group mind as opposed to a bunch of self centered individuals looking out for their own best interests. Is that b

      • You are buying a fancy degree so that you are seen more valuable; say you can marry into a rich family. It's an investment. The other rich may think you are not only rich but intelligent. Whether you are dumb or not doesn't matter..what matters is what others/society thinks of you. So you pay and get that degree from that fancy univ.

        So no you are not giving money away to the other rich; it's a ladder and you are climbing up pushing other rich down. Also there are other prestige issue about who is higher/
        • No, you totally missed the question because you are thinking only from your own perspective and failed to evaluate the situation from the viewpoint of the people you're trying to deceive. Consider the rich family that you're trying to marry into or the rich person who you're trying to convince to hire you at a fat, undeserved salary. What does your Harvard degree look like to them? Does it really fool them into thinking they should marry you or pay you if it's truly nothing more than a sham?

          Do you think tha

          • The rich think different. It's a battle between the rich and the not-rich. The not-rich is usually dumb and think that if you have an xyz degree, you are great. If I'm a rich dad looking from a groom for my daughter and see two candidates -- one rich without a fancy degree and one with a fancy degree, I'm going to choose the one with a fancy degree. The point is the two guys have already other important attributes (big net worth, cunningness/street-smart); the degree attribute is just a nice extra feather i
      • If you are rich, you want a situation where you invest money and somebody else does all the work and then you get most of the profits.
        • Probably true, but not even remotely an answer to my question.

          Many of the comments on this article imply that Harvard grads are not examples of "someone else who will do all the work" but there are claims that the already long established wealthy are waiting at Harvard's exit doors to hand bags of cash to the newly minted Harvard grads.

          Somehow there's a cognitive dissonance where it is apparently obvious to people that a Harvard grad is NOT "someone who will do all the work and give you all the profits" and

          • I don't think that the original comment was well thought out. But I do suspect that what happens is that well-connected students make business deals with each other rather than with the best qualified. Keep in mind not when dealing with their *own* money but when they have positions at places like publicly traded companies so they can tap into other's money.
  • One way he does this is by asking students to self-identify by comfort level. Those groups become different section levels, and they sometimes get different homework, but harder assignments are not worth more credit.

    "At the end of the day all students are treated with the same expectations,"

    Clearly not, and they state they're using subjective criteria in the grading.

    "the human structure within the course." Seriously, what is the meaning of this phrase? The whole thing reads like babble.

  • by Anonymous Coward

    You are all focusing your righteous ire on the snowflakes, but missing the obvious benefit of the "comfort level" approach. Those who get CS, like it and are happy to work at it don't have to sit in section with those who don't. They don't have to do all the project work for those that can't (the bane of the "working in groups" ideal), instead they get to collaborate with others like themselves and probably achieve something pretty cool. Those other kids, meanwhile, are helping fund the class for them.

    • by AHuxley ( 892839 )
      AC why not just fill the class with more and more talented students until the class is full? Why even have to accept students who cannot and will not study?
      Just keep looking over the best applicants from around the USA and fill the class from the very top % of exam results in the nation. Every student accepted had to pass their exams well and had to show they could study for years. No need to slow academic work down for a larger group of very below average students.
      Stop with things that are "pretty c
  • by Anonymous Coward on Sunday December 24, 2017 @06:35PM (#55802119)

    A mish-mash of random topics with no proper introduction nor depth. It's a show, where Malan is the star and only performer, every night, as the whole course is presented as such.

    Nobody who takes CS50 learns anything solid. It's just loose fragments of knowledge without any real theory or application to use it in.

  • I see lots of comments complaining about how this isn't a hardcore CS course, but it isn't meant to be. It's basically a survey course, and apparently is widely attended by non-CS majors. I haven't had time to go through the entire course on edX, but I've browsed a few units over the years. They do things like explain the absolute basics of sort algorithms, control statements, etc. in a very accessible way. It sure beats getting a textbook read to you by a TA who can barely string 2 words together...or bein

  • Why hold back the best students a nation produced that generation?
    If people who have "never taken computer science before" want to really do computer science, let them take night classes or a correspondence school to catch up.
    When they are finally ready to learn introduce them to a university setting with classes set to their educational standards as they enter university.
    The smart students who got in on passing real exams and merit can advance with the very best.
    The students who are new to study, lea
  • Considering how the students get advanced over the years. Some better way to find out if they can "program" is needed. Could other people who graduated over the years program? Have they found good jobs?
    The paper given out by a university no longer indicates any ability to study, pass an exam and program after years of attendance and social advancement.
    How can a graduates skill level be considered after they are handed academic paperwork for sitting in a class for a few years and have not been tested t

Keep up the good work! But please don't ask me to help.

Working...