Tuesday 20 March 2012

When September comes,

I am a little concerned most of the ICT / IT teachers I have talked to have little or no clue as to what changes are planned for the curriculum later this year. There has been a lot of talk about programming (great), creative computing (woohoo) and some talk about embedding computing in to every lesson (could be good). Computers have for the most part invaded almost every aspect of our lives, which is both good and bad so why not use it to teach, if it helps. I only teach creative computing; animating, coding, game design, music and so on, I do not teach you how to do things like word processors or presentations and certainly not spreadsheets or databases. I am only interested in creativity. Sure you can write a great novel in a word processor, but that's something different all together. I know that I will be busy in September, trying to help as many local teachers as I can, I think this is really important to do so, to get the next generation ready to make incredible things.

I have been asked by several conferences to help teach some of these skills to teachers, and that is fine. Even though I do have to earn a living myself and it is hard when you are self-employed, I realise I can't teach all the kids myself.

I was asked about 10 things to do/avoid so here is five of each. These are to do with programming /game development. These are my own personal views and are not intended as a guide.

Do

1) Do have a go yourself first, play the games, read the magazines, research the culture, nothing wrong with an adult playing a video game. I met a teacher recently who didn't know what a "sprite" was. I told her, I need to have a lesson with you first if not, your gonna lose their confidence. We did, it was fine, but it might have been a disaster.

2) Do code, it is great. Personally I enjoy solving coding problems better than some games. Bringing something new to life, I feel is better than blowing something up.

3) Do try alternatives, some programming languages just fit better with different people, try Processing, Scratch and Small Basic. They are all free and great to start with. There are hundreds of others, eventually you learn how to learn languages and can swap between several in one day.

4) Do talk to your technician. Your IT technician is your friend, there seems to be a lot of tension between teachers and IT techs, I even went to help at a conference to help ease these tensions. My hunch is the techs are bored sorting out paper jams and other menial tasks, talk to them about coding and watch their eyes light up, they probably know quite a bit and probably love to help. I have a brilliant one at the school I work at regularly and I certainly couldn't do everything I do without his help.

5) Do encourage them (the students) to be creative (and silly), some of the best learning come from the silliest code, it was brilliant to make a random word generator or to put Rick Astleys head on a bad guy in a maze game, they had to learn to code if they wanted to join in and be silly, and they did.


Don'ts

1) Don't buy anything. Until you and the kids have tried it first. I am so tired of seeing teachers and techs bullied at conferences in to buying substandard crap that no one else would. Be assertive get a demo, or take me along.

2) Do use what you have, differently. Got a projector have a different student display his work on a wall in a hallway for others to see, it could be code or a drawing, or my favorite a virtual fish tank with fish made by students. Got a BBC Micro or Commodore 64 bring it in talk about the history, get students to time how long it takes to load up a game. Ok that was another Do.

3) Do Re-create games, you don't have to create entirely new things to learn from, it is always good to re-create classic games. You do this with books and films, video games are art and they need to be discussed in the same way.

4) Do encourage students to talk about games, chances are they will, do context analysis on the cover art, the cut scenes, the storylines.

5) Do use free software, it means the students are more likely to go home and carry on the work themselves. There are tons of awesome free software programs out there

I hope these help.

Below is the source code for a simple maze game, it would take me around two to three hours to teach it to a teacher and fully explain how it works, you''ll need Processing to load it. Processing is free, comes with loads of examples, can run off a memory stick, technicians like that and it has a huge online community of artists and coders who use it professionally. I have annotated as best I can to help out beginners.

//THE MAP OF THE SCREEN
//99 SOLID BLOCK
//97 EXIT
//o NOTHING

int SCREENGRID [] [] =
{
{
99, 99, 99, 99, 99, 99, 99, 99, 99, 99
}
,
{
99, 0, 99, 97, 0, 99, 0, 0, 0, 99
}
,
{
99, 0, 99, 99, 0, 0, 0, 99, 0, 99
}
,
{
99, 0, 99, 99, 99, 99, 99, 99, 0, 99
}
,
{
99, 0, 0, 99, 0, 0, 0, 99, 0, 99
}
,
{
99, 99, 0, 99, 0, 99, 0, 99, 0, 99
}
,
{
99, 99, 0, 0, 0, 99, 0, 0, 0, 99
}
,
{
99, 99, 99, 99, 99, 99, 99, 99, 99, 99
}
,
};

//CHARACTER X AND Y LOCATION
int CHARX = 1;
int CHARY = 1;

//THIS RUNS AT THE START OF THE PROGRAM
void setup()
{
//10 BY 8
size (320, 320 );
CHARX=1;
CHARY=1;
}


//THIS RUNS IN A LOOP
void draw()
{
background (125);

//DRAWS ITEMS ON THE GRID
for (int y = 0; y < 8; y++) {
for (int x = 0; x < 10; x++) {

//IF IT'S A SOLID BLOCK DRAW IT
if (SCREENGRID[y][x]==99) {
fill(255);
rect (x*32, y*32, 32, 32);
}

//IF IT'S AN EXIT DRAW IT
if (SCREENGRID[y][x]==97) {
fill(0, 0, 255);
rect (x*32, y*32, 32, 32);
}
}
}

//IF THE GOOD GUY IS ON TOP OF EXIT RESTART GAME
if (SCREENGRID[CHARY][CHARX]==97) {
setup();
}

//DRAW GOOD GUY AT ITS CURRENT LOCATION
fill(255, 0, 0);
rect (CHARX*32, CHARY*32, 32, 32);
}


//IF A KEY IS PRESS AND THEN RELEASED IT IS CHECKED
void keyReleased() {
if (key == CODED) {
if (keyCode == UP) {
if (SCREENGRID[CHARY-1][CHARX]!=99) {
CHARY--; // MOVE UP
}
}

if (keyCode == DOWN) {
if (SCREENGRID[CHARY+1][CHARX]!=99) {
CHARY++; // MOVE DOWN
}
}

if (keyCode == LEFT) {
if (SCREENGRID[CHARY][CHARX-1]!=99) {
CHARX--;// MOVE LEFT
}
}

if (keyCode == RIGHT) {
if (SCREENGRID[CHARY][CHARX+1]!=99) {
CHARX++;// MOVE RIGHT
}
}
}
}

No comments:

Post a Comment