Python was heavily based on ABC, a language which targeted new programers and made syntax choices based on user testing: http://python-history.blogspot.ca/2009/02/early-language-design-and-development.html It says a lot about our understanding of our field that new languages generally do not formally test their syntaxes (and other "mental model" features) for usability.
But there is some weird stuff in Python syntax. Like, why do you create a dict with {} but access it with []? It always felt to me like an organic language, not one that was planned with consistency in mind (which is fine, of course).
Python is now the most popular introductory language at top U.S. universities
371–375 of 375 posts
Re: Python is now the most popular introductory language at top U.S. universities
#372Honestly, I'm not surprised, but I believe this is bad news. Learning C programming (first) was probably the most advantageous thing that has ever happened in my life of programming. When you understand C you understand how the computer functions, and in turn can write better software. It prepared me for virtually all programming and has enabled me to understand concepts correctly, the first time, and has made my lif…
I think C makes a great second language. Use Python to teach if statements, variables, control structures etc - then later use C to teach low-level algorithms, pointers and how computers actually work. I don't think there's any harm in learning Python first. I think they may be harm in learning C first - it's much more likely to frustrate people and potentially even put them off programming. This is the same reason I…
Re: Python is now the most popular introductory language at top U.S. universities
#373Earlier quoted context omitted.
Our unit is a first year unit, and runs for twelve weeks. This means that we have ten weeks to take people who may have never programmed by typing text into an editor and teach them enough CS and programming that they can implement their own hashmap in Python and reason about its big O performance in one week, start programming in MIPS assembly the next week, and implement function calls in assembly and reason about…
I've commented before in a variety of places that if I were to design a first-year curriculum that would have suited me best, it would start with python in much the way that is discussed in this thread, focusing on the concepts and algorithms and general concepts of coding. But the next course would be a hardcore introduction to C, embracing the language peculiarities instead of shunning them and trying to stick to c…
Re: Python is now the most popular introductory language at top U.S. universities
#374Earlier quoted context omitted.
Grad school rankings are a proxy for the strength of the professors, grad students (who TA/grade classes), and the overall CS research strength.
Bachelor level students do not conduct research... so it seems odd to rank schools for their Bachelor CS degree program based off of stats about their Graduate CS programs. (this thread is about beginner programming courses, ie. undergrad students). -- as a footnote, at least at my school, the graduate level professors are not the same ones teaching undergrad classes.
Re: Python is now the most popular introductory language at top U.S. universities
#375Earlier quoted context omitted.
If these Python classes were given to an industrial engineer or a chemistry major who just needs enough programming knowledge to crunch numbers/create scripts I would definitely get the approach and agree with it. However, if you want your Computer Science majors to be able to create the next runtime like the JVMs, .NETs etc. or be able to do some device programming they need to learn C/C++. A decade after going thro…
My first language was Basic (in 1982). The second was assembly. I've gotten by in my career (to put it mildly). What "top tier" undergraduate program is graduating students that can't lay out data structures in memory, don't know types, and so on?
This is not terribly different than what I suggest. I'm saying in the modern world, Python fills the role of Basic and C fills the role of assembly.
The abstract idea is:
First Language: Clean and simple, to introduce the very idea of coding algorithms for a computer.
Step two: Low-level language requiring a lot of attention to detail. Should be useful for exploring low-level details about computer architecture as well as writing real programs.
Notably: Java doesn't fit very well into either category. There's a lot of overhead for pure beginners, and too many layers between the programmer and the hardware