[Edu-sig] assigning homework

agauld@crosswinds.net agauld@crosswinds.net
Sat, 8 Sep 2001 14:59:42 +0100


On 7 Sep 01, at 22:00, Dustin Mitchell wrote:
> On Thu, 6 Sep 2001, Timothy Wilson wrote:
> > Any pearls of wisdom from the experienced programming teachers 

As a non teacher I was going to stay out of this one but 
I can't resist...

On the subject of students swapping code - I'd see that as 
inevitable and structure the homeworks around that assumption.
Sharing code is a good thing(TM), encourage it.

One other thing to encourage is not to create from scratch 
but take a working program and extend it.
- Make it menu driven
- Add an extra function to the menu
- Improve error handling
etc...

> about team programming in terms of program structure.  Algorithmic
> abstraction, functional abstraction, object abstraction, procedural
> abstraction -- all of these are ways that real programmers break
> programming problems into smaller chunks for individual team members.  

This is good too but I'd leave it till at least after functions and 
modules are covered. Then you start giving out homeworks 
where 4 modules are required to solve the problem, divide 
the class into 4 and each must solve on quarter, then get 
the 4 bits to join together.

Of course all this does make marking and levelling more 
difficult for the teacher.

> Then there's interface design, code review, etc. etc. etc.

I'd leave this till much later. The principles of good interface design 
can only really be understood after the basics of program design 
are clear. But it might be a good end of course excercise.

> Then toward the end of the course, you can then *require* group work, and
> make the type of collaboration part of the assignment.

I definitely agree with this, group work is essential - even if the 
rest of "the group" is on the internet in the form of the 
module authors on Useless Python or Parnassus...

Just some thoughts,

Alan G