How Harvard Teaches CS Students How To Code (kqed.org)
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."
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."
Guest lecturers have even included Mark Zuckerberg and Steve Ballmer.
and some wouldn't have to waste the time on reading the whole thing
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.
"I don't know, therefore Aliens" Wafflebox1
..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 the whole first half year of the subject in Harvard.. Maybe that puts things in perspective.
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.
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.
Let's not stir that bag of worms...
...where you get hired and paid for ability, rather than commitment.
Best CS101 course ever!
https://en.wikipedia.org/wiki/...
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.
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 something like that to attend to two very diverse populations, to me I just can't see there would be a real spectrum of needs - either people who need to learn enough about programming to understand what it is but not really carry on, or a group of people meaning to do programming and so they would need something more intense right off the bat (or someone coming out of the introductory class could move into).
What if you wanted to go to another school, how would you even transfer credit from that class? Of course it being a Harvard course, that probably is not a real issue in practice.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
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.
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 out of algorithms textbooks, and yet these A-students can't do it.
It isn't that all of the candidates are stupid. Well, some of them may be, but many of them are quite smart; they have just been victimized by an education system that makes its money by dumbing-down the criteria to cater to a huge group of people who want the degree (presumably for the money) but don't want to get their hands dirty doing the work. It has created quite a challenge for us, since we are needing to try and use the interview to gauge intelligence and the ability to learn programming skills on the job, rather than a simple proof of existing abilities.
Don't even bother asking green candidates about how to make their software secure. Just assume you will have to teach them all of that on the job.
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?
""Just a warning. Expect a generation of condescending ass-coders full of themselves"
Too late. We were here decades ago.
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.
Avantgarde Hebrew science fiction
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.
...touting New And Improved(TM) init systems, windowing systems, desktop environments, and my all-time favorite: programming languages (and paradigms) that are so awesome, they will displace everything invented and debugged over the last fifty years of computing.
Wolves always prey on the weakest of the herd.
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. I'm a university teacher and if I could get away with this, I'd do it in a second, purely for the benefit of the abler students. I can't get away with it because its expensive to implement, and its a kind of intellectual apartheid that won't go down well in my public university.
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 being told by the "real" CS students that you're trespassing in their little club.
Consider this as well -- the course is at Harvard. No one truly hardcore goes to Harvard for CS. It's the most expensive and exclusive university in the country. The Harvard grads taking this class are going to get some extremely cushy research job, inherit Daddy's business, or go into investment banking or management consulting...coding is that stuff they send over to India after the McKinsey MBA delivers the PowerPoint to the executives.
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, learning and education can then be educated in different classes that are set to a slower educational pace.
Re the individual's growth and grades. If a student who passed exams to get into university is now failing to study at the same level as an average find out why.
They have some medial problem? They cant study this year? They won't study? They are distracted by something? Help them get back to getting good grades.
They did not pass their exams well and got some social advancement for non academic reasons? What are they doing at university that accepts students who passed real exams?
Help them find some education they won't fail at. Music? Art? Languages? Vocational education?
Before the below average students take out more loans on their own education or a scholarship is totally wasted on a person who cannot be educated.
Start looking after the students who can learn and want to learn. Who put in years of extra effort before university and who actually got good grades and passed their tests well every year.
Accept students on merit, graduate on merit. Sort your students before they take a class.
Domestic spying is now "Benign Information Gathering"
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 to show they can program as a university claims with the paperwork presented?
Someone should make an app for people who have to look for workers that ranks US university graduates by actual merit and real exam results?
Sort resumes by university and then interview only the best graduates. If no actual grades are been given by a university, just don't accept their graduates.
Stop accepting junk graduation paperwork. Accept the best and sort from a list of only the best academic universities.
A private sector ranking app of US universities ability graduate useful workers with real world skills.
Rank the social advancement campuses to the few universities that still only graduate the very best academic students.
Companies that hire the best will profit and grow. Companies that hire social advanced graduates will fail as their workforce is totally useless.
So if someone wants an app project, start looking at the hidden statistics surrounding years of graduates and how well they do in the work force.
Who gradates people ready for work every generation? Who gradates students that are still looking for work every decade?
Good people looking at resumes need support to get past the results of social advancement that now fills US graduations.
Domestic spying is now "Benign Information Gathering"
AC its a Cultural Revolution for the USA.
https://en.wikipedia.org/wiki/...
The US is filling its university system with people who need help understanding how to study and still expects its gradates to be useful.
Even Communist China finally understood it had to restore entrance exams.
Domestic spying is now "Benign Information Gathering"
That's who will put together your next satellite...some people who graduated community college, watched a couple youtube video's where some other kids cobbled together some bits of metal and put it in a box that was shot into space, and then announce "That doesn't look so hard", and proceed to make your satellite.
Sleep your way to a whiter smile...date a dentist!
Don't forget lots of time in on Kerbal Space Program.
"When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
This whole prerequisite thing is a giant edifice of institutional convenience.
I was highly accelerated coming out of high school. I had a fistful of glowing test scores and competition results in math and physics, top AP scores in biology and chemistry, and I was no slouch at the softer or more subjectively creative subjects either (though I never had the specific work ethic to succeed at mastering a foreign language, linguistics would up as a major focus of my professional life).
By the end of second year I had flunked out of a double major in mathematics and computer science due to a severe sleep disorder (medical science caught up twenty years later, and then it took me about a decade to best apply this new learning, so my sleep disorder has recently been reclassified as a solved problem).
Well, now I want to dive headlong into machine learning (linguistics again), but I've got a big hole in my education surrounding third and fourth year applied mathematics. I'm just a wee bit weak on my trig identities and related problem set arts, and it's often a challenge for me to work the standard problems from scratch.
So here I am reviewing in my mid-fifties what would have been basically a minor challenge if I had better had my metabolic shit together on the first pass.
What I soon discovered is that conceptually I lack for nothing. The one somewhat non-traditional year I did complete of advanced-stream mathematics coursework tended to focus on the formal equivalence of limit superior/limit inferior to the more common epsilon/delta construct (by which point—if you have any natural intuition—measure theory amounts to a common-sense extrapolation). Mainly I just lack for a layer of finger skills to work the actual problems. The notation of linear algebra slowed me down for a couple of weeks before this became comfortable again (though I still don't read this nearly as smoothly as APL, in which I was once quite proficient).
I find this interesting, so on the side I'm reading about mathematical pedagogy, and I finally found some exposition about why it matters to master those confounded trig identities.
At a certain point, as a card-carrying member of the machine learning research tribe, one needs to have a certain outback survival mentality, whereby one can easily derive most of the elementary results from a quick pencil and paper exercise.
For me, from where I now stand, such an exercise would not be "quick" (though with great effort, possible in most cases).
It's an institutional presumption of mathematical pedagogy that this skillset needs to be relentlessly driven into the fingertips by many, many manual problem sets.
The more rarefied claim here was that failing to have these patterns embedded into your fingertips, a working mathematician will suffer from weak intuition in many formal settings; that these finger skills amount to an indispensable form of pattern recognition, which one can not otherwise supplant.
As an institutional precept, I can't argue against this. As a person rudely rejected from the standard path by a balky metabolism, I can advance a strong special-case argument that this is complete bull pucky.
I didn't cease to think mathematically just because my formal education rudely ejected its crankshaft. I've been thinking deeply about gradient and curvature for most of my adult life (specifically, the unholy marriage of curvature to the asymptotic equipa