On Feb 7, 2007, at 4:07 PM, kirby urner wrote: > On 2/7/07, David Reed <[EMAIL PROTECTED]> 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 _______________________________________________ Edu-sig mailing list [email protected] http://mail.python.org/mailman/listinfo/edu-sig
