[Edu-sig] Using objects early was Procedural front end for Zelle's graphics.py

David Reed dreed at capital.edu
Wed Feb 7 22:58:48 CET 2007


On Feb 7, 2007, at 4:07 PM, kirby urner wrote:

> On 2/7/07, David Reed <dreed at capital.edu> wrote:
>
> For a CS0 course that is only spending a portion of the semester on
> Python, it probably makes little difference whether you use a
> procedural or object oriented approach, but I do agree with John that
> students learn what you show them first. I think the students can  
> learn
> to use objects just as easily as they can learn to use procedures. My
> experience of students writing their own classes also matches   
> John's -
> the students find that much more difficult.
>
>
>
> Note that writing one's own class needn't be the entry point.


I didn't say it was - I just said students find it easier to use an  
object than write their own.


<big snip>

>
> The main point being:  as with any language, it's easier to develop  
> a reading fluency
> and a recog vocabulary (of keywords, of design patterns), than it  
> is to develop a
> writing or speaking fluency and a recall vocabulary, which is what  
> you'll need if they
> sit you down in front of a blank screen and say "write Python code  
> please."
>

<snip>

Right - we're saying the same thing - it's easier to read code than  
write to write code.

 From all your posts I've read over the years I think you need to  
remember that you seem to be teaching highly motivated high school  
students who are good at math and thus generally have good problem  
solving skills. Most of us teaching introductory CS courses and a  
significant subset of our students do not have very good problems  
solving skills so our goal in the first course (and I assume this is  
even more true of CS0 courses, but we don't have a CS0 course) is  
mainly to develop and improve problem solving skills. The reason I  
like Python for CS1 (and would for CS0 if I taught such a course) is  
that the language syntax is simpler and thus lets the students focus  
on problem solving skills. For a CS0 course I wouldn't care what  
language paradigm they learn/use - I would just want the students to  
get an appreciation for algorithms and problem solving. As you  
mention, your goal for math applications requires operator  
overloading, but just developing problem solving skills does not  
require object oriented techniques. For a CS1 course I want to  
develop problem solving skills but also slowly move them towards  
writing code using the style/paradigm they will be using in later  
courses.

Thanks to a 7th grade math teacher who introduced us to Basic on a  
TRS-80, I knew more about programming (note that I did not say I knew  
more about computer science) by the time I got to 9th grade than most  
of our students do 2 years later. But again, I was highly motivated  
and taught myself Z-80 assembly language so I could write programs  
that run faster than Basic on that machine. I suspect that I was the  
type of student you see in your teaching, but that is not what most  
of us see in our CS0/CS1 courses.

All a number of us are saying is that one size does not fit all. I  
suspect what you do works well for the students you teach, but it may  
not work well for other groups of students. That's what keeps  
teaching fresh for me - I adjust what I'm doing until I see that the  
students are getting it. That's why I like teaching at a small school  
with relatively small classes (20-30 students typically). I can get  
immediate feedback from a good percentage of the students and  
determine if I need to try a different technique for explaining the  
topic. That's next to impossible if you have a classroom of more than  
50 students.

Dave




More information about the Edu-sig mailing list