I work at Monash University in Melbourne, Australia. Last year we moved our foundational course in data structures and algorithms from Java to Python, with great success. This is a course that used to be taught in C, then moved to Java. I tutored it as a Java course, and was in charge of adapting the tutorial (classroom exercises) and laboratory (programming assignments) materials when we started using Python to teac…
Your first sentence made me a bit sad but the rest of your post changed my mind. All good points, and it looks like the move to Python was the right thing to do. It's important to remember we're talking about an introduction, here. Creating the spark of interest in students is the most important point in this class. There's always time after this to move them toward more expressive languages.
Python is now the most popular introductory language at top U.S. universities
221–230 of 375 posts
Re: Python is now the most popular introductory language at top U.S. universities
#222I work at Monash University in Melbourne, Australia. Last year we moved our foundational course in data structures and algorithms from Java to Python, with great success. This is a course that used to be taught in C, then moved to Java. I tutored it as a Java course, and was in charge of adapting the tutorial (classroom exercises) and laboratory (programming assignments) materials when we started using Python to teac…
Re: Python is now the most popular introductory language at top U.S. universities
#223Re: Python is now the most popular introductory language at top U.S. universities
#224Earlier quoted context omitted.
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…
>This is the same reason I dislike Java as a teaching language: having to tell people "don't worry about what public static void main(String[] args) means just yet" when teaching "hello world" isn't a great introduction to programming. This is exactly why I have always thought that the move to Java for intro courses was a terrible idea. C/C++ were never ideal for beginners, but it was still possible to strip it down…
Re: Python is now the most popular introductory language at top U.S. universities
#225a language without types, without extensive research? Then, why not C/D/Pascal. i strongly believe for universities sml/ocaml/haskell or even rust are far better choices. I prefer sml.
Re: Python is now the most popular introductory language at top U.S. universities
#226Earlier quoted context omitted.
>This is the same reason I dislike Java as a teaching language: having to tell people "don't worry about what public static void main(String[] args) means just yet" when teaching "hello world" isn't a great introduction to programming. This is exactly why I have always thought that the move to Java for intro courses was a terrible idea. C/C++ were never ideal for beginners, but it was still possible to strip it down…
"What does `#include ` and `int main()` mean? Why do I have to write them?"
Java is so deeply OOP that there's just no way for somebody to grasp and understand the concept of e.g., a public method when they haven't even learned about variables or basic conditional logic yet. A total novice just plain isn't equipped to handle some of the concepts that are immediately thrown at them with a simple hello world.
Re: Python is now the most popular introductory language at top U.S. universities
#227Earlier quoted context omitted.
Welcome to HN! Ruby is a good idea for webdev but keep in mind that Python is also dominant in other domains of computing in particular scripting and scientific computing. So in my opinion for a beginner Python is more future proof than Ruby [activate language-flamewar-prevention-daemon] and if you later add a system-language (e.g. C) and a modern general purpose language (e.g. Haskell or Scheme/LISP) to your reperto…
If you pick a Lisp, pick Racket or Clojure. All else being equal, they are the most modern and pleasant variants to work with.
Re: Python is now the most popular introductory language at top U.S. universities
#228This methodology is suspect, and the headline is extremely deceptive. Note that Guo has conflated CS0 (meaning: CS for non-majors) with CS1 (meaning: intro to CS major). He is upfront about this fact and he does it intentionally, but comments about "first officially-sanctioned exposure in college" and such make it sound like he's unaware that most CS majors do not ever take a CS0 course; and among instructors of CS,…
Author here. Thanks for your comments blahedo. I'm a bit short on time right now, but I will convert some parts of this response into more coherent form and edit my article accordingly to clarify. I'll address each of your paragraphs in turn: 1.) Re: CS0 vs. CS1. Like you mentioned, I was very upfront about the methodology for this analysis. And I am very aware that most CS majors do not ever take a CS0 course. But p…
I'm curious - would the group be less important if they were less likely to be female/non-asian minority? I get this impression from your text, though you don't actually state it explicitly. As a result I'm curious what your actual view is.
Re: Python is now the most popular introductory language at top U.S. universities
#229Earlier quoted context omitted.
If you pick a Lisp, pick Racket or Clojure. All else being equal, they are the most modern and pleasant variants to work with.
Or Emacs Lisp, if you don't have a specific project in mind and/or aren't already heavily invested in a text editor. As a programming language in and of itself, it's not a greap lisp, but it's a great practical way to learn lisp while you're customizing your text editor.
As a compromise, you might want to start people on edwin (https://www.gnu.org/software/mit-scheme/documentation/mit-sc...) instead, if you want to teach them programming. But that's probably even less useful in practice.
Re: Python is now the most popular introductory language at top U.S. universities
#230Earlier quoted context omitted.
What's lexical typing?
I may have made this term up myself; I am on the go and can't check it. As I use the expression "lexical typing", it means that the type of a variable can be ascertained from examining the text of the program, without needing to run it. Python is strongly typed, but dynamically typed: you can only know for sure the type of a value by checking the value at runtime. This by analogy with "lexical scoping", where you kno…