Re: [Edu-sig] a non-rhetorical question

Hi Vern and Andy, I just joined this list and this is exactly the kinds of discussions I'm looking for. I too am a teacher and will be teaching Python, although this next semester I will not have an official class, just a python programming club (at the high school level). In the past I have done BASIC programming clubs with middle school students but have moved on to Python instead. The great part about clubs is that they are voluntary, and students tend to be more motivated than they are in a class. In these clubs, students often go far beyond where I would expect them to in a structured class. Andy, your question is deceptively tough, and I agree with Vern that I would expect them to get the general idea. I would expect them to have to "mess around" with Python a bit, though, to get it to work correctly. At any rate, I've learned in years of teaching to scaffold greatly, even when to me it would seem like an easy assignment. Perhaps breaking the task up into preliminary, simpler, versions would be helpful. Here are some of ideas for assignments that I wrote down on a legal pad recently, when I was looking forward to teaching Python. Some of these may seem easy, but they do give a good idea of where a student is at. 1. Write a program that asks students for their two favorite foods and have it suggest a (concatenation) combination food for them to try (from Michael Dawson's Python Programming 2nd ed.). 2. Write a program that asks the user for two numbers and then adds them for the user. [Actually, number two can lead to many variations, using multiplication, etc. This would make a great project to show how software can evolve, with the final version greeting the user, asking what operation to perform and on how many numbers, etc. This assignment would start out very simple in version 1.0, but could someday turn into something that would contain a variety of function calls for factoring numbers, finding the square root, and so on.] 3. Write a program that asks the user for a sentence and then prints it back in reverse. [Again, this one could lead to many variations: "now have it print the sentence back with all the "a" characters changed to "4"s, all the "e"s changed to "3"s, and so on (leetkey)"] 4. Write a program that asks the user for a number. If the number is odd, multiply it by three and add one, if it's even, divide by two. Now do the same with the answer.... 5. Write an area-finding program. It asks what shape the user has (square, rectangle or triangle) and the computes the area depending on what measurements the user enters. These are my notes, not the final versions I would present to students, but you get the idea of how things can go from really simple ("write a program that asks the user's name and then says hi to him/her by name"), to quite complicated. Keep working with your students! Richard ----- Original Message ---- From: Vern Ceder <vceder@canterburyschool.org> To: Andy Judkis <ajudkis@verizon.net> Cc: "edu-sig@python.org" <edu-sig@python.org> Sent: Thursday, July 5, 2007 5:44:36 PM Subject: Re: [Edu-sig] a non-rhetorical question Hi, We do brief surveys with 8th and 9th graders, so I'm somewhat familiar with the age and skill level. I would say that *most* students should be able to answer this question after 4 weeks (depending on how much looping they've done, of course). By "answer" I don't mean necessarily get full credit, but at least get the basic idea right - setting up a while loop and prompting for user input...... ____________________________________________________________________________________ Get the Yahoo! toolbar and be alerted to new email wherever you're surfing. http://new.toolbar.yahoo.com/toolbar/features/mail/index.php

Sorry, but I don't think you've successfully motivated your students if that is all they can do in a month. Let me hazard a suggestion. Rather than being too mabitious you are not being ambitious enough. Scripting languages have batteries included. Doing the stuff you would have done with BASIC in 1980 is not necessary and not sufficient. I imagine few tenth graders can connect printing sentences backwards and such with anything they care about. see http://hacketyhack.net I'd rather kids learned Python than Ruby or PHP or ActionScript, but I'd *much* rather they learned one of those than nothing at all. mt

On 7/6/07, Michael Tobis <mtobis@gmail.com> wrote:
Sorry, but I don't think you've successfully motivated your students if that is all they can do in a month. Let me hazard a suggestion. Rather than being too mabitious you are not being ambitious enough.
For having exchanged a few emails with Andy over the years, I feel I have to come to his defense and disagree with this statement. (more below)
Scripting languages have batteries included. Doing the stuff you would have done with BASIC in 1980 is not necessary and not sufficient. I imagine few tenth graders can connect printing sentences backwards and such with anything they care about.
The following is a quote from an old message from Andy on this very list: ======== I've found RUR-PLE to be a very constructive way to approach programming. I use it to teach the basics of looping and branching and defining subroutines, and we do about 6 of Andre's exercises. (We spend about 4 1/2 hours of class time on it before moving on to Python, using modified versions of the LiveWires and a little bit from How To Think Like a Computer Scientist.) ======== These are all modern resources targeted to kids. ---- As for Andy's original query.... I have no answer to provide. André

Hi All, I am very interested in responses to Andy's question because it was just this sort of frustration with students' inability to write simple programs that led me to using Python (as opposed to C++ or Java) in CS1. After my switch to Python and "back to basics" CS1 back in 1999, my results dramatically improved. However, I've noticed lately that an increasing share of my (college-level) students are beginning to struggle. It's not like the C++ days, but enough to be concerned. So I ask myself again "What has changed about the course?" If anything, what has changed is that I am adding more "bells and whistles" to try to make the course enticing. Doing projects like HTML screen scrapers, image processing, and animations. However, even though the students like these projects, I'm feeling that they may actually detract from learning fundamental concepts like how to design sentinel loops and simple decisions. Let's face it, every API you introduce is extra detail for the students to master, no matter how "fun" it is. Plain old text processing programs can be fun too if: 1) The instructor provides the proper setup/explanation/motivation. 2) Students have opportunity to master them. Students enjoy what they feel they understand and can do. On Thursday 05 July 2007 11:24 pm, Michael Tobis wrote:
Sorry, but I don't think you've successfully motivated your students if that is all they can do in a month. Let me hazard a suggestion. Rather than being too mabitious you are not being ambitious enough.
Scripting languages have batteries included. Doing the stuff you would have done with BASIC in 1980 is not necessary and not sufficient. I imagine few tenth graders can connect printing sentences backwards and such with anything they care about.
I've looked at hacetyhack.net. As others have pointed out, it looks like lots of fun for certain well-motivated students. Those with a strong inner-geek can go to a site like this and actually learn something. But there is a ton of mystery lurking behind this API, and it's not clear to me that this is the quickest way for the average student to really learn the universals of programming.
I'd rather kids learned Python than Ruby or PHP or ActionScript, but I'd *much* rather they learned one of those than nothing at all.
I'd much rather that they learned the power and limitations of computing in general. Learning the details of any particular specialized API does not seem all that valuable (or important or useful) to me. Of course, your mileage may vary. I'm dealing with older and presumeably more mature students. --John -- John M. Zelle, Ph.D. Wartburg College Professor of Computer Science Waverly, IA john.zelle@wartburg.edu (319) 352-8360

I am not totally sold on hackety; not having had access to MS Windows of late I haven't played with it. I am saying that the whole business is great fun if approached right, and there at least hackety has much to teach us. I have had great success starting with ascii art, drawing boxes and triangles out of blanks and punctuation characters. By the time the kite figure is drawn, the utility of input() is obvious. I think you and Guzdial (and Andy Harrington who uses your book) are right to proceed to graphics fairly quickly. Guzdial and hackety also stress music. It's necessary to demonstrate the power and joy of the tool to get people interested. As a Python loyalist I see Python instruction as a way to strengthen the language and the community, but I'm getting the impression that the community won't be able to manage it. I agree in the long run that which language wins is relatively unimportant compared to the benefit of widespread programming competence, from the point of view of society or the individual student.
From the point of view of the specific language community it's another matter. Python has enough momentum in the areas where I work that I have no hesitation in sticking to it, but that being the case, I would rather that Ruby not be the language of the future.
mt

Michael Tobis wrote:
I have had great success starting with ascii art, drawing boxes and triangles out of blanks and punctuation characters. By the time the kite figure is drawn, the utility of input() is obvious. I think you and Guzdial (and Andy Harrington who uses your book) are right to proceed to graphics fairly quickly. Guzdial and hackety also stress music.
It's necessary to demonstrate the power and joy of the tool to get people interested.
An interesting idea - teaching with ascii art. Some teach with pixel art and some with games. You know, it'd be useful to have a wiki page on www.python.org under the educational section that collected the various educational ideas for a teacher to consider when designing a new course. Another cool thing would be if some of the instructors could record some screencasts for www.showmedo.com where they demonstrated their approach on-screen, and talked over explaining why and what they were trying to achieve and what results they've seen with it. I'm curious to see how ascii art can be applied here, and such screencasts would let other instructors get involved and encourage discussion. Classrooms so often seem like little islands, with only messages-in-a-bottle between them.
As a Python loyalist I see Python instruction as a way to strengthen the language and the community, but I'm getting the impression that the community won't be able to manage it.
Could you expand on your phase "the community won't be able to manage it"? Do you mean people won't come forward with instructional materials, or that they won't offer the classes, or that certain features are missing in the language? Basically are you saying it is a lack of will or a lack of collective ability or community size/maturity? I'd like to help, as advocacy coordinator, if we can identify problem areas. -Jeff
participants (5)
-
Andre Roberge
-
Jeff Rush
-
John Zelle
-
Michael Tobis
-
Richard Guenther