Aug 10, 2011
Computer Science Educators of America- Stop Teaching Scheme!
Proper Computer Science education should NOT be a trade school. If you want to learn how to make basic web pages and applications, then you don't need a degree to figure it out. Self motivation, native curiosity, and perhaps a dash of intelligence... but not an expensive piece of paper. That being said, the majority of CS graduates will not get PhD's and go on to become CS professors. They will get jobs as software engineers and work on projects using popular programming languages. With this is mind, why do some educators insist on using esoteric, niche languages that mostly cause harm to their students' job prospects? Case in point- We decided to hire an intern. Several students we interviewed definitely had the concepts down, but their programming experience had only been in Scheme. Scheme is a functional programming language derived from Lisp that is not commonly used in industry. Additional time is needed to teach them something useful, such as Python, which (as a procedural language) is a different style of programming and thinking. Question- if Computer Science concepts are universal, why would you force your students to program in a language only used in academia? The tragedy is that you harm you students' careers. Some argue that the first couple of semesters don't matter in terms of longterm career prospects. That is clearly false, as students lose out on internship opportunities when they don't know anything useful, which then makes it harder to find a job when they graduate. Also, it is my opinion that functional languages are harder to wrap your head around than procedural languages (isn't recursion one of the harder CS concepts?), so starting students in Scheme is more likely to scare them away. The solution: start your students in Java or Python. Java is slightly harder, but prepares them better for C. Once they get the concepts down, put them in a programming languages course where you can expose them to all sorts of functional and esoteric languages, be it Scheme or Haskell or LOLCODE. This will not only make your students more employable, but also make them less likely to drop CS for something easy like psychology or political science.