4 ms·
I've TA'd all of Stanford's intro programming classes, including the first course in programming CS 106A, so a few things: - unlike a lot of other schools, CS
by aduffy 9y ago
I've TA'd all of Stanford's intro programming classes, including the first course in programming CS 106A, so a few things:
- unlike a lot of other schools, CS 106A is mostly taken by non-majors (90-something percent of undergrads take at least one CS course before graduation, and for non-majors that means 106A)
- the follow up course, 106B, is in C++ and focuses on OOP, pointers, memory, data structures, etc.
- 106J was crafted as a replacement for 106A by in JS. It had limited enrollment, and word on the street is 106J's first offering this past spring was an experiment and it didn't go all that well, so who's to say if it'll still be around next year.
Maybe they should switch from Java to something hipster and trendy, but there's about 10+ years worth of assignments that will need to be rewritten, including autograding infrastructure for the 600-800 people who take it every quarter.
I personally feel like JS is an awful language with few opinions or guard rails, and thus a bad language to teach people who are looking for programming principles. It works for the web but I think for a course almost entirely consisting of non-majors it's not a good first language.
- dx034 9y agoThanks for the insight. With your experience, what would be a good language for non-majors so that they can make use of their experience later? Python, Go, C?
- chii 9y agoI would definitely say Haskell. Second is python, but i feel Haskell teaches concepts better and more efficiently. Everybody has used spreadsheets before, and I think most people can draw a m mental link to spreadsheets with Haskell.
- posterboy 9y agoThat's completely out of the question at the moment. True, it could potentially be most useful to know haskell for a lot of programmers, but at the moment, the opportunities to use haskell in the work place are actually rare and not to a small part because an understanding of haskell is barely achievable in an introductory semester, while the steep learning-curve of the language is kind of intended as it's usefulness only really plays out at a higher complexity. Whereas, python has a focus on scripts, shortness and quickness are even symbolized in it's name. Script languages with introspection and reflection are best suited for REPL, especially with good integrated documentation. Javascript in the browser suffers at that because it's opinionated towards web, but OP sees that as a plus and web programming certainly is an applicable skill with a future. Not everyone would have to use facebook as homepage, for example
- sn9 9y agoHaskell used to be the introductory language at UT Austin a few years ago IIRC. So it's been done before. The point of an introductory programming class is not to teach a language for vocational purposes, but to teach the basics of computation. Someone who understands computation can reasonably be expected to pick up most languages.
- kronos29296 9y agoPython would be nice if everybody uses Python 3. Simple dynamic and most of the Open source stuff is scriptable using python. So daily automation is a real possibility. Atleast that's what I am doing.