Re: [Edu-sig] Python @ Education: What are your problems?
[warning to edu-sig readers -- somewhat long] Hello, I use Python to teach the first year programming course in the "computer systems" and "computer programmer" streams in the School of Technology here at Durham College. The intent of this course is to take students with no prior programming experience and teach them the fundamentals: variables, branches, loops, functions, objects and a bit (excuse the term) of binary & hex. Students are from mixed backgrounds (fresh out of high school, returning to school as mature student, foreign students), aiming for practical, hands-on training as opposed to university-style courses. The experience has been mixed but mostly good. Java was the first choice for this course but I got nightmares at the thought of teaching monstrosities like: class HelloWorld { public static void main(String[] args) { System.out.println("Hello World"); } } instead of: print "Hello World" Interpreted rather than compiled: driving the interpreter directly, line by line is great for in-class demonstrations because I can "walk" through an example, then run it full speed from the .py file. This is especially good for Tkinter examples. Objects: Python's object model is simple and uncluttered so that's good. However the "self" reference in method parameter lists and for instance variables is a source of aggravation. There is trouble reconciling the fact that a method is nested in the class definition, but it still needs to be told about itself, and all instance variables need to also be referenced. Java's "this" is more subtle -- you don't see it, but it's there when you need it. You don't need to introduce it immediately. Dynamic typing: mixed blessing. Students don't trip on types, but they aren't prepared for the strict typing in Java and the little disasters due to type errors in C. Simpler syntax. No squiggles and semicolons to worry about. However, this leaves the students unprepared for the squiggles and semicolons in C, C++ and Java. Indenting block structure. Nice because it matches the pseudocode I do in class. However, some students often don't get it and occasionally give me: if x == y : # do some stuff else : # do something else # Sorry, I couldn't get it to work. It kept giving me errors :( Basically, since IDLE keeps suggesting an indent, they never de-indent when they are done the particular block. The fact that nobody around here had heard of Python before I started has been a constant aggravation. "If it's not popular, it can't be any good" (read between the lines: "if it didn't come from Microsoft, it's no good"), or the even deadlier slag "it won't help our grads get a job"). This leads to pushback from other teachers and some students who feel I'm teaching something totally irrelevant and "out in left field". Visual Basic, C, C++, Java and Turing are the alternatives proposed. (References and "ammunition" welcome). IDLE, while it meets its design goals for portability and simplicity, may be _too_ simple. For example, IDLE doesn't even let students print out their work -- I have to get them to copy and paste their console output to Notepad. I'm afraid that we have to "market" to students these days, and the glitz and flash of Microsoft Visual Studio totally obliterates IDLE. I need to find a more Microsoft-oriented IDE (but not python for dot N0T) . Anyway, that's it for now (I vented my frustrations). On the whole, I'll keep doing the course my way. I want to change a few things, but Python stays. If there are points you'd like me to follow up, feel free to ask privately or on the edu-sig list. Ciao --Louis Louis Bertrand Durham College, Oshawa, Canada louis.bertrand@durhamc.on.ca
participants (1)
-
Louis Bertrand