Re: [Discuss] example of a well-written lesson

2014-11-30 Thread Jan T Kim
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

2014-11-30 Thread Hsi-Kai (Kai) Yang
@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

2014-11-28 Thread Hsi-Kai (Kai) Yang
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

2014-11-28 Thread Greg Wilson

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

2014-11-28 Thread Hsi-Kai (Kai) Yang
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

2014-11-06 Thread Greg Wilson
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