[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