teaching+programming

=TEACHING PROGRAMMING SKILLS USING GAME MAKING, BLOGS AND WIKIS= - Bill Kerr (latest edit 28/9/2006) (Cairns ACEC non refereed paper, here is the [|link to abstracts of all Games in Learning and Games Programming Cairns papers])

This is a scheduled 30 minute presentation / talk, Tuesday October 3rd, 3:05 - 3:35pm (30 minutes). Not much time. So I have worked out a format of painting some broad brush strokes about the ideas behind the course design, the course dynamics as it unfolded, how it all went and what I have learnt from it. I have provided a lot of links further material and detailed background information so that anyone who is interested can take up the issues raised in their own time and preferred manner. So, hopefully this represents one useful approach to how to teach programming.


 * powerpoint slides**: [[file:GMBlogsWikis3.ppt]] (latest update 28/9/2006)


 * podcast / mp3**: http://www.ourmedia.org/node/262841

1. THREE IDEAS
- provides a variety of goals, some obvious and some which have to be developed by the programmer - Tantalising but elusive feedback - Many levels of difficulty invloved - there is an emotional and fantasy element involved in attempting to control computer - the debugging process raises expectations but also creates disappointments
 * The approach used in this course is based on three ideas:**
 * first idea: "... programming is one of the best computer games ..."** (rationale for programming, [|malone quote])

further material about programming: The big, complex issues of why program and what is programming are taken up on a separate pages of this wiki: why program what is programming

- this quote arises from daniel dennett’s comparison of animal minds with human minds in his attempt to articulate what makes humans special - I think this quote should be extended to programming languages as well as our native spoken and written language - provides a rationale for the use of blogs and wikis in this course
 * second idea: "... we use language to author ourselves, assisted by many co-authors as we grow up"** (rationale for use of blogs and wikis, [|source])


 * third idea: "eat your own dogfood"** (rationale for the teaching approach, [|source])

As teachers, do we eat our own dogfood? Is that a fair question? As teachers, should we eat our own dogfood? Would we like to sit in a lesson that we teach and do the work that we set our students?

further thoughts on [|eat your own dogfood]

2. COURSE INGREDIENTS
The course ingredients include the game maker program and the use of blogs and wikis for documentation and communication

Game Maker software
a. basic skills - some of the students hadn't done much with Game Maker before this course - all students were taken through a series of game maker programming challenges and required to document their solutions in their blogs

brief version: By solving the challenges students learnt some of the basic skills of game programming such as: what the different Events mean,how and when to use them (eg. Create Event, Step Event, Alarm Event, Collision Event, etc.). A full list of the challenges can be obtained through my website.

more detailed version: Here is a summary of some of the knowledge involved in completing the challenges:
 * what Events mean (Create, Step, Alarm, Collision, etc.)
 * how to link Events to Actions
 * the coordinate system (x, y space) and direction
 * how to use the random function to vary motion
 * how to make characters shoot and targets explode
 * how to turn actions off temporarily using Boolean T/F variables and Alarm clocks
 * how to make one character follow another character
 * how to control game flow using conditionals
 * how to draw text on the screen
 * how to push things around a room

All of the challenges are available at this URL: [|http://www.users.on.net/~billkerr/g/ch.htm]

An explanation of what I mean by challenges, by contrasting challenges with demonstrations and tutorials
 * Challenges** – student has to struggle for mastery, the teacher is a guide on the side providing hints or direct guidance occasionally.
 * Demonstrations** – teacher shows how to do it, student is relatively passive at first, construction is optional.
 * Tutorials** – Step by step instruction provided by teacher, student follows. This can be too passive, not enough exploration or struggle is required.

In general, I think challenges are more effective than either Demonstrations or Tutorials for teaching and learning. Why? Challenges involve both construction and struggle, two things that can assist learning.

Ericsson: "... what matters is not experience per se but "effortful study," which entails continually tackling challenges that lie just beyond one's competence" [|The Expert Mind], Scientific American article

[This is Vygotsky's ZPD in different words. See also [|Pea and Kurland (84)] on why we shouldnt value programming as mind building in its own right "//Similar arguments have been offered in centuries past for mathematics, logic, writing systems, and Latin e.g. see Bruner, 1966;// //Cole & Griffin, 1980; Goody, 1977; Olson, 1976; Ong, 1982; Vygotsky, 1978).// Tony 26 sep]

As I teacher (and as a learner) I still use all three modes (challenges, demonstrations and tutorials) but tend to use challenges more now than when I first started teaching programming.

an earlier account of my thinking about this here: http://billkerr.blogspot.com/2005/07/tutorials-demos-challenges.html

b. design, make and appraise their own game - this happened after the challenges were completed

//I asked students to make an educational game// - didn't want them to make a clone of their favourite shooter or whatever //Their game had to have a real audience// - they had to nominate at least one real person who would learn from their game //They were allowed to work in teams// (option) //I told them to answer these questions before anything else, in an attempt to focus their work:// > >
 * Name of your game?
 * What are you going to teach?
 * How are you going to teach it?
 * Who is your target audience? Identify at least one real person.

More detail here: http://billkerr.blogspot.com/2006/04/design-and-build-your-own-game.html

Blogs for problem solving / documentation / communication
The teacher ability to communicate with students is fairly limited in a face to face setting with a class size of 20. Opening up another regular written communication channel vastly improves teacher-student communication.
 * Why blogging?**

In particular I have found that some students who don't talk to me much at all, do write in the blogs quite a lot. This can be used extensively for feedback and also enables students to share off topic thoughts with the teacher.

Once students have setup blogrolls of other students on their blogs then student-student communication increases as well. This can be used for both fun and learning.

Extracted from a more detailed report: http://billkerr.blogspot.com/2006/04/game-making-year-11-mid-semester.html

Wikis for design, group work, documentation, communication
wikis were used for documentation in the game development part of the course, for these reasons -
 * wikis are more suited for group work
 * you can do more with a wiki than a blog, for example, guest pages and provide file downloads

http://gamedesign11.wikispaces.com/progress+report Progress report on how the student wikis evolved, it wasn't straightforward, I was worried at the start

http://gamedesign11.wikispaces.com/ The teachers wiki, which also contains links to the student group wikis

3. COURSE DYNAMICS
This is explained by a series of dichotomies or contrasts, which reflect my thinking as it has developed > I am saying that students may need lots of support early but that we would like them to become more independent learners as the course progresses. The approach was to progressively remove the scaffolding in part by setting more open ended tasks. There was more scaffolding provided in the earlier challenges part of the course than the game development part of the course > Permission to play contributes to both relationship building but also to learning the subject (eg. permission at some point to experiment or play around with code). Play is OK. As it turned out, some of the fun came about from permission to do off topic blogging and connecting to other students through blogging. As well, occasionally someone dropped in unexpectedly from the blogosphere and left comments on student blogs, which created a good deal of interest
 * the first contrast is b/w teacher directed skill development and open ended exploration
 * the contrast b/w serious work and play

"Programs must be written for people to read, and only incidentally for machines to execute" This quote from Abelson and Sussman, which highlights the importance of writing well structured code and documenting code. My aim in this course was to just get started on this process by the use of blogs and wikis http://www.cs.cmu.edu/%7Epattis/quotations.html- H. Abelson and G. Sussman (in "The Structure and Interpretation of Computer Programs) > Group work is generally seen as important by teachers but hard to achieve. I did give students the opportunity to work in groups in this course but the outcomes varied. However, since then I received a suggestion as a [|comment on my blog] from a Drama teacher about how I could have improved here, which shows how teacher blogging can extend the learning network I decided, as the teacher, to do a version of my own course, by setting up a wiki to collaboratively develop some new games, partly to help me obtain insights into what my students would be experiencing. My wiki site is focused on developing games about africa (africaGame site). I present this as a dichotomy with "spoon feeding" here, in relation to this course, because if my course was just spoon feeding there would be little incentive for me to do a version of it. This can also be described as low entry / high ceiling.
 * the contrast b/w doing and documenting
 * the contrast b/w individual and group work
 * the contrast b/w spoon feeding and eating your own dogfood

Game maker skill development through challenges and documenting how challenges were solved through blogging
All of the challenges are available at this URL: [|http://www.users.on.net/~billkerr/g/ch.htm]

I assessed the students responses to the challenges mainly through their blog records. I'm not saying this is the best way to assess the challenges but it was far more convenient and less time consuming that collecting and marking all the student files - an important consideration for busy teachers

Teachers report on how the blogging went can be found here: http://billkerr.blogspot.com/2006/04/game-making-year-11-mid-semester.html

Extract: The teachers marking scheme gave 5 marks for each game maker challenge. Students had to complete the challenge (they could ask anyone for help), blog about how they solved the problem, blog about who helped them and include a screen shot of their solution. The teacher kept an up to date open marks book which students could look at to monitor their progress at any time. Assigning percentages and grades two weeks before the interim assessment period was a powerful motivator for some students, who were behind, to catchup.

Students could also get marks for off topic blogging (limited to one mark per week), writing 'how to' tips about game maker, game maker problems and setting up their blog expertly (theme, blogroll, leaving comments on other blogs).

Quite a few students did read the blogs of more advanced students, who had detailed solutions, for tips about how to solve problems. [|Pikmik] and [|JRB01] were two favourites for this.

The teacher setup an RSS feed at bloglines which collected all student blogs in one place and informed him when their blog had been updated.This was very convenient and made it possible for the teacher to give more regular feedback than in previous years. It was also possible for the teacher to obtain a more rounded picture of student interests through their off topic posts. This built rapport and lifted morale.

Some students obviously enjoyed leaving comments on each others blogs, this was seen as a fun activity

Here's a very funny example of the blogs taking on a life of their own: http://hackthrough.wordpress.com/2006/03/28/i-set-my-shoe-on-fire-on-the-weekend/#comments

The blogroll of all students in the class can be found here on the teachers blog: http://gamedesign11.wordpress.com/

Game design, make and appraise and documentation of the process on wikis
The students made a variety of types of games. The list consists of games about alchemy, bird breeding, 2 maths games, the rules of soccer, war history, 2 road rules games, a navigation game and a school subject quiz

The quality of the finished games varied considerably, depending on the student skills, cohesion of the teams, motivation. Some games were not finished in time. It was difficult to get everything finished in a one semester course. The appraisal process was patchy too, with some groups being better organised than others.

I don't wish to dwell on the negative or unfinished but also don't want to hide the messy bits, the various outcomes that were not clearcut. That would paint a wrong picture of the course, which is still (hopefully) a work in progress, that can be modified.

Here is a summary, of the advantages that emerged from using wikis:
 * students were more likely to keep game documentation up to date (with some nagging required from teacher)
 * student games can be posted to their wikis for easy download (far more convenient than other methods)
 * students are learning to work in teams, the wiki facilitates this, they each learn to document their contribution. This was patchy but once again does work better than other methods. Some of the wikis are now starting to reflect real teamwork
 * wiki features (Recent Changes and History of each page) makes it easy for teacher to keep track of week by week progress //and to observe which students improve their work by editing//
 * as well as game making student are learning a useful modern Read / Write native web application

A more detailed report on the evolution of the wikis at: http://gamedesign11.wikispaces.com/progress report

Here are direct links to a couple of the more interesting student wikis, which contain their documentation and game downloads: http://laceyjane.wikispaces.com/ (they made a maths game for primary students) http://gangstamax.wikispaces.com/ (they made a game about the history of WW2)

5. EATING YOUR OWN DOGFOOD
http://billkerr2.blogspot.com/2006/09/eat-your-own-dogfood.html

Extract: I wanted my year 11 students to do these things:
 * improve their game maker programming skills
 * design, make and critique their own game
 * work productively in a group
 * use a wiki to document their progress and collaborate with others

So, I thought it would be a good idea if I did the same, put myself through the same process that I was putting my students through. So I set up my own wiki, africaGame, to collaboratively make games with others.

It's been a good learning process for me.

I have improved my game maker programming skills by making, documenting and collaborating on new games (map game, name game). That has been hard work and sometimes slow and [|frustrating]. But I now feel more confident about tackling harder programming problems.

I have been collaborating, mainly with mitch (the main author of the name game) and also obtaining some help on the Edna game making forum ([|wara]) and [|tony]is always helpful when I ask him a question. So that counts as groupwork but the actual collaboration has been patchy, not continuous.That's a good learning experience for me, //it is probably the nature of most collaboration. But in School, I was expecting it to be steady, continuous//.So, I need to redesign the learning so that the collaboration is allowed to be discontinuous. It is so hard for school to measure groupwork. Everyone knows that it is important but there is a measurement problem.

I haven't creatively designed my own game. The africa map game is a clone of a game I found on the internet. I couldn't do better than that so I am shamelessly copying it. That's another good lesson. One of my best students asked me, "How come you expect us to design our own games, when you aren't doing that?" Good question.

I haven't been able to keep to any sort of reasonable timeline. The game development always takes much longer than I think it will. I still haven't finished the map game, even though the class I started it with has long disappeared with the semester change over. Strict timelines in school must be a terrible burden on student creative endeavour. I think that students must get used to churning out "busy work" because that's what school demands of them.

When it comes to using the wiki I think I've been good at that. Not only are the games developing through the wiki but I have been developing other pages as well, the links to existing games found on the web and links(about africa) have been regularly updated. A friend, Paul, has regularly sent me links which have been useful. There are other useful pages on the wiki as well, even though they haven't been updated so regularly (game ideas, programming languages, mail received)

If teachers regularly ate their own dogfood we would have a better education system.

School / Class profile
Woodville High School Year 11 class NESB (Non English Speaking Background) 44% Aboriginal / Torres Strait Islanders 14% Special needs 9% (Mansfield Park is a feeder area, one of the most disadvantaged suburbs in Australia. ) GATE program / Special Music School

LEARNING THEORIES
In developing this course I have been influenced by the learning theories of Seymour Papert (constructionism, mathetics), the Instructional Software Design Project (Harel and Papert) and the more recent Connectivism of George Siemens. These theories have helped to guide the course I have designed and implemented.

Constructionism

Constructionism is Seymour Papert’s word which is made up from the Piaget’s word constructivism (children develop their own internal structures of mind) with the word construction. Papert’s idea was to accelerate learning by working with objects like the logo programming language and LEGO TClogo robotics

Papert and Harel argued for the importance of learners discovering good //objects to think with,// with these characeristics:
 * appropriability – some things lend themselves better than others to being made one’s own
 * evocativeness – some materials are more apt than others to precipitate personal thought
 * integration – some materials are better carriers of multiple meanings and multiple concepts

Papert Mathetics One of Papert’s learning principles is that a good conversation is an important part of learning. How do we set up good conversations in IT class?

Instructional Software Design Project Idit Harel integrated the theories of Piaget, Papert, Vygotsky and Perkins (“Knowledge as Design”) to develop a project where children designed and built educational software, using logo, for other children to learn with.

She reported improvement in a wide variety of areas such as collaboration, design skills, self management skills, programming language fluency, expressive writing about mathematics and technology, cognitive resilience (learning not to give up), time management, faith in one’s own thinking, teaching skills and empathy with younger students.

Marc Prensky has put forward the slogan “Engage me or Enrage me” (motivation is central to learning).

Struggle – A theory of struggle in education has been advanced by South Australian educator, the late Garth Boomer, that education is mainly about struggle and design. McGee has theorized the struggle which takes place between assimilation and accommodation and has theorized that play has an important role in this process

Connectivism

George Siemens has observed that the relevant life or half life of knowledge or content is shrinking and that informal learning experiences are becoming more important, that 80% of our learning arises informally

In this relatively new situation, the capacity to know more is more critical than what is currently known, that nurturing and maintaining connections is needed to facilitate continual learning and that //rather than have a knowledge silo it is often better to be well connected and have the ability to learn knowledge in **Just In Time** fashion//

COURSE RATIONALE
Why choose Game Maker as the programming language?

Game Maker has a free version (but not open source), has a great drag and drop interface, low entry and high ceiling programming capabilities, extensive support materials and a large, active community (Game Maker forum). Since the software is free it was included on a CD with other free and open source software which was made available for students to take home

Explicit instruction - why favour a just in time approach?

I'm always on the lookout to minimise the amount of time I spend out the front giving instructions to students. Although sometimes desirable and essential in my experience too much broadcast does not work very well. Many students just don't seem to listen.

REFERENCE
Harel, Idit. Software Design for Learning: Children’s Construction of Meaning for Fractions and Logo Programming. June, 1988.

Harel, Idit and Papert, Seymour. Software Design as a Learning Environment. MIT, January 1990

Kerr, Bill. Invitation to Immersion. April 1997 [|http://www.users.on.net/~billkerr/a/invite.htm]

Kerr, Bill. Papert’s Ideas: Mainly from Mindstorms. October, 1991 [|http://www.users.on.net/~billkerr/a/papert.htm]

Siemens, George. Connectivism: A Learning Theory for the Digital Age. December, 2004 http://www.elearnspace.org/Articles/connectivism.htm

[ON THE COGNITIVE EFFECTS OF LEARNING COMPUTER PROGRAMMING ROY D. PEA and D. MIDIAN KURLAND Center for Children and Technology Bank Street College of Education 610 West 112th Street, New York, NY 10025, U.S.A. [|http://scil.stanford.edu/about/staff/bios/PDF/Cog_Effects_Prog](Tony 26 Sep)]

Bill rules !!!!! ACEC 2006