Re: [Discuss] example of a well-written lesson
Dear All, On Fri, Nov 28, 2014 at 07:13:24PM -0500, Greg Wilson wrote: Hi Kai, Our experience is that trying to get learners who have little previous training in programming all the way to defining classes in half a day (which is all the time we usually have for Python in our workshops) fails badly. If they leave understanding that they should break their programs into short, readable, testable, reusable functions (and that those are all actually the same thing), that's a big step forward, and as far as we can reasonably expect to get. And yes, the lesson on functions is mostly about scoping. Our experience shows that's what confuses people most, and it's difficult to debug code without a solid understanding of what a call stack is. I'm adding more discussion of this (our collected pedagogical content knowledge) to the next run of the instructor training course; I hope that will convince you that what's in our core lessons is already very ambitious. I think I agree with both sides of the argument here -- on the one hand, it's better to have a procedural mental model of computing than to have no real mental model at all, but on the other hand, an OO informed model is better than a purely procedural one. On a practical perspective, having a good grasp on the procedural basics will enable people to use e.g. biopython -- the biopython tutorial doesn't require readers to know about writing classes or even extending existing ones. My guess (perhaps a bit biased, me being a computational biologist) is that people taking SWC may workshops often want to use things like biopython, so getting them up to speed with a procedural model of computing will fit their expectations. Personally, I'd be inclined to mention in courses a few times that OO concepts exists, that they're not really too complicated for anyone with a science background so people should be encouraged to explore them on their own after the workshop, and that some software systems (most notably web applications) should preferably be developed on an OO basis. Best regards, Jan Thanks, Greg On 2014-11-28 6:54 PM, Hsi-Kai (Kai) Yang wrote: Sorry, there is typo in my previous email. To be accurate, I meant scoping rather than name space. -kai On Fri, Nov 28, 2014 at 2:54 PM, Hsi-Kai (Kai) Yang h...@uw.edu mailto:h...@uw.edu wrote: Teaching polymorphism in the basic workshop could be overkill. But it might be worthwhile to add object-oriented concepts. When I browsed V5 of SWC’s Python teaching material during this holiday, I could only find ‘function’ which was introduced as an encapsulation mechanism (among others) although the code example there was more about name space than encapsulation. My two cent. Thanks. -kai On Thu, Nov 6, 2014 at 2:19 PM, Greg Wilson gvwil...@software-carpentry.org mailto:gvwil...@software-carpentry.org wrote: I've just added a short post to the teaching blog [1] that includes an example of a well laid out lesson from Byron Weber Becker (an instructor in Computer Science at the University of Waterloo whose work I've admired for a while). It certainly gives us something to shoot for... Thanks, Greg [1] http://teaching.software-carpentry.org/2014/11/06/an-example-of-a-well-written-lesson/ -- Dr. Greg Wilson| gvwil...@software-carpentry.org mailto:gvwil...@software-carpentry.org Software Carpentry | http://software-carpentry.org ___ Discuss mailing list Discuss@lists.software-carpentry.org mailto:Discuss@lists.software-carpentry.org http://lists.software-carpentry.org/mailman/listinfo/discuss_lists.software-carpentry.org -- Dr. Greg Wilson| gvwil...@software-carpentry.org Software Carpentry | http://software-carpentry.org ___ Discuss mailing list Discuss@lists.software-carpentry.org http://lists.software-carpentry.org/mailman/listinfo/discuss_lists.software-carpentry.org ___ Discuss mailing list Discuss@lists.software-carpentry.org http://lists.software-carpentry.org/mailman/listinfo/discuss_lists.software-carpentry.org
Re: [Discuss] example of a well-written lesson
@Jan Numpy indeed provides both procedural model and OO informed model. When I first read Numpy, I was a little surprised at the redundancy but then I quickly realized the reality and the need. I remembered the first API I designed was also procedural model based, considering my users were mostly Visual Basic programmers. -kai On Sun, Nov 30, 2014 at 3:18 AM, Jan T Kim jtt...@googlemail.com wrote: Dear All, On Fri, Nov 28, 2014 at 07:13:24PM -0500, Greg Wilson wrote: Hi Kai, Our experience is that trying to get learners who have little previous training in programming all the way to defining classes in half a day (which is all the time we usually have for Python in our workshops) fails badly. If they leave understanding that they should break their programs into short, readable, testable, reusable functions (and that those are all actually the same thing), that's a big step forward, and as far as we can reasonably expect to get. And yes, the lesson on functions is mostly about scoping. Our experience shows that's what confuses people most, and it's difficult to debug code without a solid understanding of what a call stack is. I'm adding more discussion of this (our collected pedagogical content knowledge) to the next run of the instructor training course; I hope that will convince you that what's in our core lessons is already very ambitious. I think I agree with both sides of the argument here -- on the one hand, it's better to have a procedural mental model of computing than to have no real mental model at all, but on the other hand, an OO informed model is better than a purely procedural one. On a practical perspective, having a good grasp on the procedural basics will enable people to use e.g. biopython -- the biopython tutorial doesn't require readers to know about writing classes or even extending existing ones. My guess (perhaps a bit biased, me being a computational biologist) is that people taking SWC may workshops often want to use things like biopython, so getting them up to speed with a procedural model of computing will fit their expectations. Personally, I'd be inclined to mention in courses a few times that OO concepts exists, that they're not really too complicated for anyone with a science background so people should be encouraged to explore them on their own after the workshop, and that some software systems (most notably web applications) should preferably be developed on an OO basis. Best regards, Jan Thanks, Greg On 2014-11-28 6:54 PM, Hsi-Kai (Kai) Yang wrote: Sorry, there is typo in my previous email. To be accurate, I meant scoping rather than name space. -kai On Fri, Nov 28, 2014 at 2:54 PM, Hsi-Kai (Kai) Yang h...@uw.edu mailto:h...@uw.edu wrote: Teaching polymorphism in the basic workshop could be overkill. But it might be worthwhile to add object-oriented concepts. When I browsed V5 of SWC’s Python teaching material during this holiday, I could only find ‘function’ which was introduced as an encapsulation mechanism (among others) although the code example there was more about name space than encapsulation. My two cent. Thanks. -kai On Thu, Nov 6, 2014 at 2:19 PM, Greg Wilson gvwil...@software-carpentry.org mailto:gvwil...@software-carpentry.org wrote: I've just added a short post to the teaching blog [1] that includes an example of a well laid out lesson from Byron Weber Becker (an instructor in Computer Science at the University of Waterloo whose work I've admired for a while). It certainly gives us something to shoot for... Thanks, Greg [1] http://teaching.software-carpentry.org/2014/11/06/an-example-of-a-well-written-lesson/ -- Dr. Greg Wilson| gvwil...@software-carpentry.org mailto:gvwil...@software-carpentry.org Software Carpentry | http://software-carpentry.org ___ Discuss mailing list Discuss@lists.software-carpentry.org mailto:Discuss@lists.software-carpentry.org http://lists.software-carpentry.org/mailman/listinfo/discuss_lists.software-carpentry.org -- Dr. Greg Wilson| gvwil...@software-carpentry.org Software Carpentry | http://software-carpentry.org ___ Discuss mailing list Discuss@lists.software-carpentry.org http://lists.software-carpentry.org/mailman/listinfo/discuss_lists.software-carpentry.org ___ Discuss mailing list Discuss@lists.software-carpentry.org http://lists.software-carpentry.org/mailman/listinfo/discuss_lists.software-carpentry.org ___ Discuss mailing list
Re: [Discuss] example of a well-written lesson
Sorry, there is typo in my previous email. To be accurate, I meant scoping rather than name space. -kai On Fri, Nov 28, 2014 at 2:54 PM, Hsi-Kai (Kai) Yang h...@uw.edu wrote: Teaching polymorphism in the basic workshop could be overkill. But it might be worthwhile to add object-oriented concepts. When I browsed V5 of SWC’s Python teaching material during this holiday, I could only find ‘function’ which was introduced as an encapsulation mechanism (among others) although the code example there was more about name space than encapsulation. My two cent. Thanks. -kai On Thu, Nov 6, 2014 at 2:19 PM, Greg Wilson gvwil...@software-carpentry.org wrote: I've just added a short post to the teaching blog [1] that includes an example of a well laid out lesson from Byron Weber Becker (an instructor in Computer Science at the University of Waterloo whose work I've admired for a while). It certainly gives us something to shoot for... Thanks, Greg [1] http://teaching.software-carpentry.org/2014/11/06/an- example-of-a-well-written-lesson/ -- Dr. Greg Wilson| gvwil...@software-carpentry.org Software Carpentry | http://software-carpentry.org ___ Discuss mailing list Discuss@lists.software-carpentry.org http://lists.software-carpentry.org/mailman/listinfo/discuss_lists. software-carpentry.org ___ Discuss mailing list Discuss@lists.software-carpentry.org http://lists.software-carpentry.org/mailman/listinfo/discuss_lists.software-carpentry.org
Re: [Discuss] example of a well-written lesson
Hi Kai, Our experience is that trying to get learners who have little previous training in programming all the way to defining classes in half a day (which is all the time we usually have for Python in our workshops) fails badly. If they leave understanding that they should break their programs into short, readable, testable, reusable functions (and that those are all actually the same thing), that's a big step forward, and as far as we can reasonably expect to get. And yes, the lesson on functions is mostly about scoping. Our experience shows that's what confuses people most, and it's difficult to debug code without a solid understanding of what a call stack is. I'm adding more discussion of this (our collected pedagogical content knowledge) to the next run of the instructor training course; I hope that will convince you that what's in our core lessons is already very ambitious. Thanks, Greg On 2014-11-28 6:54 PM, Hsi-Kai (Kai) Yang wrote: Sorry, there is typo in my previous email. To be accurate, I meant scoping rather than name space. -kai On Fri, Nov 28, 2014 at 2:54 PM, Hsi-Kai (Kai) Yang h...@uw.edu mailto:h...@uw.edu wrote: Teaching polymorphism in the basic workshop could be overkill. But it might be worthwhile to add object-oriented concepts. When I browsed V5 of SWC’s Python teaching material during this holiday, I could only find ‘function’ which was introduced as an encapsulation mechanism (among others) although the code example there was more about name space than encapsulation. My two cent. Thanks. -kai On Thu, Nov 6, 2014 at 2:19 PM, Greg Wilson gvwil...@software-carpentry.org mailto:gvwil...@software-carpentry.org wrote: I've just added a short post to the teaching blog [1] that includes an example of a well laid out lesson from Byron Weber Becker (an instructor in Computer Science at the University of Waterloo whose work I've admired for a while). It certainly gives us something to shoot for... Thanks, Greg [1] http://teaching.software-carpentry.org/2014/11/06/an-example-of-a-well-written-lesson/ -- Dr. Greg Wilson| gvwil...@software-carpentry.org mailto:gvwil...@software-carpentry.org Software Carpentry | http://software-carpentry.org ___ Discuss mailing list Discuss@lists.software-carpentry.org mailto:Discuss@lists.software-carpentry.org http://lists.software-carpentry.org/mailman/listinfo/discuss_lists.software-carpentry.org -- Dr. Greg Wilson| gvwil...@software-carpentry.org Software Carpentry | http://software-carpentry.org ___ Discuss mailing list Discuss@lists.software-carpentry.org http://lists.software-carpentry.org/mailman/listinfo/discuss_lists.software-carpentry.org
Re: [Discuss] example of a well-written lesson
Hi, Greg: Yes, the package in the basic Python is rich in contents already. My email was indeed a response to your reference to Byron Weber Becker's slide deck. I thought you liked his guides on polymorphism, and solicited possible extension to our package. There's misunderstanding here. I guess OO might be a burden for beginners in scientific programming esp., for those from FORTRAN or C. Thanks. -kai On Fri, Nov 28, 2014 at 4:13 PM, Greg Wilson gvwil...@software-carpentry.org wrote: Hi Kai, Our experience is that trying to get learners who have little previous training in programming all the way to defining classes in half a day (which is all the time we usually have for Python in our workshops) fails badly. If they leave understanding that they should break their programs into short, readable, testable, reusable functions (and that those are all actually the same thing), that's a big step forward, and as far as we can reasonably expect to get. And yes, the lesson on functions is mostly about scoping. Our experience shows that's what confuses people most, and it's difficult to debug code without a solid understanding of what a call stack is. I'm adding more discussion of this (our collected pedagogical content knowledge) to the next run of the instructor training course; I hope that will convince you that what's in our core lessons is already very ambitious. Thanks, Greg On 2014-11-28 6:54 PM, Hsi-Kai (Kai) Yang wrote: Sorry, there is typo in my previous email. To be accurate, I meant scoping rather than name space. -kai On Fri, Nov 28, 2014 at 2:54 PM, Hsi-Kai (Kai) Yang h...@uw.edu wrote: Teaching polymorphism in the basic workshop could be overkill. But it might be worthwhile to add object-oriented concepts. When I browsed V5 of SWC’s Python teaching material during this holiday, I could only find ‘function’ which was introduced as an encapsulation mechanism (among others) although the code example there was more about name space than encapsulation. My two cent. Thanks. -kai On Thu, Nov 6, 2014 at 2:19 PM, Greg Wilson gvwil...@software-carpentry.org wrote: I've just added a short post to the teaching blog [1] that includes an example of a well laid out lesson from Byron Weber Becker (an instructor in Computer Science at the University of Waterloo whose work I've admired for a while). It certainly gives us something to shoot for... Thanks, Greg [1] http://teaching.software-carpentry.org/2014/11/06/an-example-of-a-well-written-lesson/ -- Dr. Greg Wilson| gvwil...@software-carpentry.org Software Carpentry | http://software-carpentry.org ___ Discuss mailing list Discuss@lists.software-carpentry.org http://lists.software-carpentry.org/mailman/listinfo/discuss_lists.software-carpentry.org -- Dr. Greg Wilson| gvwil...@software-carpentry.org Software Carpentry | http://software-carpentry.org ___ Discuss mailing list Discuss@lists.software-carpentry.org http://lists.software-carpentry.org/mailman/listinfo/discuss_lists.software-carpentry.org ___ Discuss mailing list Discuss@lists.software-carpentry.org http://lists.software-carpentry.org/mailman/listinfo/discuss_lists.software-carpentry.org
[Discuss] example of a well-written lesson
I've just added a short post to the teaching blog [1] that includes an example of a well laid out lesson from Byron Weber Becker (an instructor in Computer Science at the University of Waterloo whose work I've admired for a while). It certainly gives us something to shoot for... Thanks, Greg [1] http://teaching.software-carpentry.org/2014/11/06/an-example-of-a-well-written-lesson/ -- Dr. Greg Wilson| gvwil...@software-carpentry.org Software Carpentry | http://software-carpentry.org ___ Discuss mailing list Discuss@lists.software-carpentry.org http://lists.software-carpentry.org/mailman/listinfo/discuss_lists.software-carpentry.org