I have the logic down quite well but my biggest issue is the syntax - it would appear that Stanford thinks I'm doomed to fail.
Anyway, the fact remains that you need much fewer syntax lessons to get started with Scheme compared to anything else.
I'm curious about that too; is this course optional? Would people who can already program take this course?
A large majority of my CS friends in that class had all been programming for either a little bit or quite some time, and the class was mostly a joke for them. Lectures were optional, and a bunch of friends (including myself) only attended three classes the entire semester: the first class (where we found out we didn't need to go to class except for tests) and the mid term and final.
Of course on the other side of things, I had friends who had never programmed before and found the course grueling and struggled to pass.
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 to take one of the latter two, although there is always a contingent of people with /some/ background in 106A.
Or is it just the case that these people just wanna take one course from the "real" CS for a non-coding reason?
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.