7 ms·
Dijkstra assumes that students will already have been exposed to imperative languages before joining university, and will appreciate the change. I think that th
by timje1 13y ago
Dijkstra assumes that students will already have been exposed to imperative languages before joining university, and will appreciate the change. I think that this assumption might leave behind students that have not yet been exposed to any programming (that stuck).
Over in the UK I certainly hadn't encountered anything more complicated than html before I hit university, and was very happy with sticking with Java for the entirety of first year. I had been exposed to C++, ADA(!), Prolog and had an in depth look at Erlang by the time my course finished...
- mbrameld 13y agoWhat year did you enter university? I know the number of kids exposed to programming before university now is much higher than it was when I entered in 1996. I think it's safe to assume (but would love to have some real data) that most CS freshmen these days have dabbled with at least one of the mainstream imperative languages before they hit uni.
- tfgg 13y agoIt may be turning around now, but applicants for compsci at Cambridge were apparently getting pretty dire by 2006, and this formed a significant part of the motivation for the Raspberry Pi (http://www.raspberrypi.org/about http://www.raspberrypi.org/about) > The idea behind a tiny and cheap computer for kids came in 2006, when Eben Upton, Rob Mullins, Jack Lang and Alan Mycroft, based at the University of Cambridge’s Computer Laboratory, became concerned about the year-on-year decline in the numbers and skills levels of the A Level students applying to read Computer Science. From a situation in the 1990s where most of the kids applying were coming to interview as experienced hobbyist programmers, the landscape in the 2000s was very different; a typical applicant might only have done a little web design. I joined at about that time and found it noticeable that having experience with C++ and a few other languages marked me out as more advanced than many of the other students. Also relevant to this discussion is that in the first term we learnt ML, a functional language. This was partially because of advantages in talking about algorithms in it, but also to put everyone on a level playing field and introduce something that even keener students won't have encountered before. We did Java later, which I found much less rewarding.
- btian 13y agoStrangely I found myself struggling to pick up Standard ML despite having experience in C++ compared to my peers with no programming experience. It seems that they just treated it as math, while I had trouble changing my imperative programming mindset. Also Larry Paulson is a legend.
- agumonkey 13y agoIn case you're not learning from it, allow me to 'advertise' Coursera's proglang. A third of about sml (after racket and ruby) and it was pure joy, the language core and syntax is very tiny (unlike it's type error messages hehe).
- tfgg 13y agoIt's an incredible experience when the bit flips in your brain and you start understanding recursion and top-down design. I don't use ML any more, but it's definitely affected my coding and problem solving style :) Also, I once heard that Larry Paulson stopped going to a certain college's annual computer science dinner because he was hit with a pineapple during a food fight. Bastards.
- timje1 13y ago2005. Because I'd been exposed to HTML and some scripting, I was able to skip on ahead pretty quickly. I estimate that most of my class (about 100 CS students) hadn't had any prior exposure to programming. They dropped like flies for the first few months. However, I went to a pretty poor University (ranked ~60th), I have no doubt that the numbers are very different in the top universities.
- gambogi 13y agoI'm a second year CS major. That's not a safe assumption. Some of them learn to swim, and some of them drown. A guy in my CS1 class last year (there was no placing out) failed to comprehend the concept of words controlling a computer. Further evidence is the four class intro sequence steadily had fewer sections (of the same size) with each passing term
- tluyben2 13y agoI have some younger (sigh ;) friends in the UK attending uni CS now and almost no-one actually ever touched a programming language. Computers, sure but programming no. Same as when I went to uni mid 90s; I remember of the 80 students 3 (including me) had programming backgrounds. Most were there because 'you earn a lot' as a programmer. Don't think that much has changed, at least not in some universities. A lot of these people switched to law or psychology after a few months to 1 year because, well, CS is hard enough if you actually have no problem with the practical assignments; people who never programmed generally experienced a lot of pain and had to put in a lot of effort to do them.
- hardwaresofton 13y agoDespite the fact that I learned imperative style first (as most have) -- I think that functional programming is also a valid start point. I don't know that you necessarily benefited from starting in Java/some other procedural language. I actually graduated from UT's Comp Sci school and I know many of the "elements" courses (super introductory, even for non-majors) are taught in python. That, I think is a good introduction, but for people in the major, I don't think learning Haskell/functional programming is a stretch at all. If one can wrap their minds around functional programming (which introduced correctly is actually relatively easy to grasp) -- it will be MUCH easier to learn imperative programming. In the end, any good imperative programming seeks to be modular (s/procedures|methods|subroutines/functions/g), and will liken itself to something you would write in functional programming (loosely couple functions that do a specific task well). Yes there are places this gets hairy (side effects, I/O based operations), but computer science is not about writing procedural code, it's really more about algorithms, which is why 4 year universities are NOT trade schools, but do prepare you for the real world (in that you're not COMPLETELY useless). Program syntax is easy to learn (a skilled faker can just repeat it verbatim), efficiency/correctness/proper data-structure usage is difficult.
- catinsocks 13y agoI think many degree programs assume you have programmed before even if it is nothing substantial. I know my university's first class in programming assumes prior experience (though nothing to worry about for a motivated student) and then offers an introductory course in python for students with no experience if they'd like. The University in question is still stuck in Java for the main courses like many other Universities.
- danieldk 13y agoI think that this assumption might leave behind students that have not yet been exposed to any programming (that stuck). Let me provide some anecdotal counter-evidence: during my last year of high school, I was in a university class where they taught us programming using Haskell (this was in 2000). I observed a fairly consistent pattern - those who had prior experience with imperative programming (me included), had far more difficulty picking up Haskell than those who hadn't. The girl I worked with (who had no prior experience) was surprised, since "it's just like maths" :).
- kazagistar 13y agoA hypothesis is that it might be harder because you are learning a bit more: you not only have to learn the new way, but also internally how it relates to the old way.
- dded 13y ago> Dijkstra assumes that students will already have been exposed to imperative languages before joining university For those entering CS, this is probably true. But it's also probably true that that's because of the students' own initiative to investigate a topic that interests them. I think high schools have gone the opposite direction. In the 80s, most high schools had some sort of computer class (often taught on TRS-80s or C-64s). These were introductions to programming taught in Basic. Nowadays, most high schools still have a computer class. But now its Word, Powerpoint, Excel, and build a (static) web page. (There are, of course, some high schools with much better programs.)
- dded 13y agoAddendum: High schools also used to teach typing (on typewriters). Now that keyboards are ubiquitous, typing classes have inexplicably been dropped. Go figure.
- adamesque 13y agoI spent my first few undergrad years as a CS major at UT before this change happened, and had no prior experience with programming (I started in '97). The INTRO-intro CS class at the time actually used Pascal, and was endlessly confusing to me as a cold beginner. My next course, however, was taught in Scheme, and immediately I felt more at home. And for the first time, I felt like I might have some actual aptitude for programming. Without that peek into the elegant heart of computer science, I doubt I'd have stuck with it as long as I did.
- rbanffy 13y agoPlease, don't get me wrong, but why would someone with no programming experience pick compsci? It's not exactly a sexy career (for every übergeek in shorts with a Macbook Air there is an army of corporate drones with comporate-issue desktops using whatever tools corporate IT mandates, wearing corporate-standard neckties), it's difficult (to do it right) and financial return is far from assured.
- timje1 13y agoI went to search for the data to throw in the face of these assumptions, and found some corroborating evidence :) http://www.studentbeans.com/student-money/a/degree-courses-with-highest-unemployment-rates2370.html http://www.studentbeans.com/student-money/a/degree-courses-w... According to these numbers, of the 2006/2007 graduates in the UK, Computer Science had the highest unemployment rate after 6 months (10%).
- rbanffy 13y agoIf you do it for the money (even if you get good money), you'll lead a miserable life. I taught many aspiring programmers over my career and it's painful to see the struggle some go through contrasted with the ease the "naturals" have. Programming classes can't turn you into a programmer any more than swimming classes won't make you a fish. A good teacher will help you become a good programmer, but only if you have the knack [1]. 1- http://www.youtube.com/watch?v=CmYDgncMhXw http://www.youtube.com/watch?v=CmYDgncMhXw
- mseebach 13y ago> might leave behind students that have not yet been exposed to any programming And good riddance. If you make it to university without exposing yourself to your subject as a matter of passion (and few subjects are more easily approached by hobbyists than programming) you're going to waste your time there. University is a not a "school" you attend for learning a subject. You can't show up for English Literature if you have never read a novel. You show up at the music department if you don't already play an instrument very well. You can't show up at Zoology if you can't tell a reptile from a mammal. You can't study Economics if you've never heard of Keynes. And you can't study computer science if you can't program a computer. This was not always the case for programming, but it certainly is today, and I'm not convinced it wasn't too in 2001.
- cafard 13y agoThis strikes me as in principle somewhat wrong and in practice quite wrong. If American universities expelled everyone whose declared major was not a matter of passion, they would in general be pretty empty.
- nightski 13y agoAnd just imagine then we would not have 1 trillion in student debt with many unemployed college graduates!
- sinwave 13y agoYou're moving the goalposts.
- nightski 13y agoNo I am saying that college is not about "goalposts". I truly now believe that college is not something that should be done solely to further ones career (hence, passionless students). Instead it is something you do because you are genuinely interested in a subject and want to further education. Otherwise you end up in the situation we are in. If the goal is to have a job, there are better ways of accomplishing that than taking on student debt and pursing something you are not that interested in (or spending lots of money trying to figure out what you enjoy).
- habosa 13y agoI agree. It's nearly impossible to appreciate Haskell as a first language unless you have a strong Math background or you have an exceptional teacher. However once you've done a little programming in another non-functional language the beauty of Haskell is pretty clear.
- superuser2 13y agoThis is why the University of Chicago has two introductory programming classes - one for students with experience, one for those without. Honors Intro to Programming (161) is taught in Haskell and introduces monads 4 weeks in. Intro to Programming (151) is taught in Scheme (well, Racket) and works through How to Design Programs.