Live data from Hacker News

Stanford study shows success of different programming styles in CS class

ed.stanford.edu

51–53 of 53 posts

Re: Stanford study shows success of different programming styles in CS class

#51
post #41

Earlier quoted context omitted.

One of the most touted advantages of Scheme (and other Lisps) as a teaching language is precisely the (lack of) syntax which allows the student to focus on logic.

One might as well claim that C++ has no syntax, as its source code is nothing but a linear series of undifferentiated octets. Scheme and other lisps have plenty of syntax; it's just expressed at a different level of abstraction than the one most languages use.

C++ is an abomination - it should not only be avoided when teaching, but we should make all the effort to avoid it whenever possible. Learning programming using C++ as a language is like learning to walk on a grass-covered minefield - almost every feature hides something that can blow your leg off.

Anyway, the fact remains that you need much fewer syntax lessons to get started with Scheme compared to anything else.

Re: Stanford study shows success of different programming styles in CS class

#52

Earlier quoted context omitted.

I TA for this class. The class is optional for non-engineering majors but has enrollment >= 700 people per quarter. So many people at Stanford take the class that it's a bit of a cultural phenomenon. There are three "intro" programming classes at Stanford. CS106A is "intro to java", CS106B is "intro to C++", CS106X is CS106A + CS106B + a bit more in one quarter. People who already know how to program are encouraged t…

For non-engineering people, Java seems like a slightly odd choice, is it not? So much overhead in learning, plus overhead if they did want to integrate coding into their lives in a light way. Why not Racket or a scripting language? As much as it pains me, even JS might be of better use. Or is it just the case that these people just wanna take one course from the "real" CS for a non-coding reason?

Because the assignments, section material, grading infrastructure, handouts, teacher training material, and institutional knowledge for this class are all built around Java when the class switched over in the early 2000s. In the past, couple years the process of changing just one assignment out of the six or seven assignments was difficult for everyone involved (teaching staff and students). Changing the entire class would require monumental effort, and it would have to be driven by a majority contingent of the half dozen professors / lecturers involved in the introductory CS community at Stanford.

Given that the class has been successful at teaching programming methodology to tens of thousands of beginner students over the past decade there's no pressing need to restructure the entire course, even though everyone does acknowledge that Python or some other language could be better for new students. It's basically like any other large software project, yeah it could be rewritten from scratch and modernized to make small gains, but if it ain't broke, why fix it, especially when the professors and TAs have other projects that have far more interest in, like this paper.

Also one thing that many people don't know is that CS106A actually changes the language environment as well as providing a modified version of Eclipse to remove some of the less useful overhead in Java (for example removing main, and the beginner confusion surrounding keyword static, arrays and arguments). Also there's a much simpler introductory class called CS105/101 that uses Python.

Source: I taught sections and managed the TAs for the introductory classes over the course of four years while I was a student at Stanford.

Post reply on HN