Computing At School Hub leaders conference

http://casleaders.eventbrite.com/

I attended a TeachMeet tonight as part of the Computing At School workgroup. Simon H telephoned me earlier in the day hoping I’d be able to do a little presentation to the delegates about the industry perspective. I was very busy all day so I managed to put a few thoughts into a coherent set in the car on the way to the Digital Lab at the University of Warwick. I arrived at 7.15pm after leaving work at 6.30pm, getting home, having my tea and then driving to the event. It was a very interesting meeting and I was surprised to see the video conferencing that they had using “FlashMeet”. So what did I talk about and what did I learn?

Well the people were computer science educationalists ranging from KS3 teachers to H.E. Lecturers. Representatives from the BCS (bcs.org.uk) were there along with some from VITAL (vital.ac.uk) I talked briefly about my industry and with an emphasis on how video games are driven by programmers. Although major games involve art, animation, video production,design, script writing, music & sound production, they are all tied together and delivered in this unique form by the work of the programmers. The industry was invented by programmers who initially did everything but now these roles have split into their disciplines. To underline this the video games industry generates more revenue than the film and TV industry put together and is (should be) a very high profile industry for our government.

So why is this very successful industry and in particular, myself, so keen to work with school children? As I’ve said in this blog before, when I interview potential new programmers, I discover that many of them have been taught the wrong stuff. Blitz Games Studios has noticed this trend increasing over many years and has been liaising with Universities to create and improve their courses. For the record, many games development and games technology courses are still not teaching the right stuff. If you want to write computer games software, take a software engineering course that has a high mathematics, AI, operating systems, or computer graphics aspect. These are essential skills, and make sure it teaches C++.

Another worrying aspect of the candidates is that so many of them only had their first experience of computer programming at university. They’d taken the computer science course pretty much blind to the subject. I don’t know what motivates them to make this choice and I’ve even known some who was choosing between psychology or computer science and opted for computers. This seems a wild choice.

I did some research, to see why they were, in my opinion, leaving it so late to experience the joy of computer programming. As part of that research I discovered that the BCS had recorded that there was shocking decline in the number of applicants to computer science courses. However there was an increase in the applicants to softer science subjects (games development studies for instance!) When looking at A-Levels Computing, I discovered that this was a course in decline too. The course itself looks good for bringing a student up to the level I’d expect them to be at for entry into a Computer Science degree. For anyone to take Computer Science without this, they would (or should) find it a big struggle. Either that or their course was not going to be good enough for them to get a job at the end of it.

I also looked at ICT which is the standard computer related course at GCSE and A-Levels. This is not a computer studies replacement as I think most industrialists (and parents) think it is. It is a very valuable course but one which is designed to teach pupils about how computers can be used in all aspects of their life and work. Spreadsheet usage, building presentations, writing documents, sending emails, converting videos, creating a website, and so on. It is not programming!

So where do I go from here? This brings me back to why I was at the Computing At Schools workgroup meeting. I want to put programming back into the school agenda. I’d like to ensure those children are given the opportunity to be inspired and become enthusiastic about writing programs. Whether that be for Robots or Video Games (or anything else; iPhone or Android apps). These skills will improve the workforce in the UK and it is something at which we are a world leader but not for much longer.

And now my attempt at being profound:

I wish I could have stay for more of the weekend and explored Alice, Greenfoot, Scratch and so on. These are great bits of software for inspiring and kick starting learning about programming. However, this is not where it ends. The ability to drag objects into a scene, stick on a few actions and see it do something is programming but it is not software engineering, or Programming with a capital P. I expressed at the meeting that the use of Python, Java, Flash, or whatever is in the beginning, great. However, the software written should be vibrant, different and push the idea that is being demonstrated. I think so much emphasis is on congratulating a student for ‘writing a program’ and this is not enough. It is like the art teacher congratulating a student on ‘using a brush.’ It is the final piece using the media that is going get that artist some recognition. The programming language C++ is the tool of a video games programmer. Scratch and Alice are the tools of a teacher. However, both of these tools can be used to create something great but in both cases it is not going to be easy.

So if you are a teacher reading this, consider how much of you approach to using software and course material in the class is “here is a pen, look, it makes lines on the paper”, and how much of it is “here is a pen, with a lot of HARD work you can learn to write a great novel.”

Engines for Student Game Development

A personal perspective regarding what game engine is best for getting you an interview at a games company.

Generally I don’t mind what engine the students use although something that shows extended development knowledge into the current generation of games consoles is important.  That is, something that is written in C/C++ and requires understanding of C++.

One of the problems I’ve faced is how similar demo’s look when they are sent to us using something like OGRE.  The engine often does a lot of the work so it isn’t that impressive as it used to be to see a 1st or 3rd person shooter or RPG.  Candidates shouldn’t fall into the trap of sending something that was easy to make but “looks” like a lot of work.  This also goes for students that use Unreal (or similar) to show off their game design abilities.  Although this is an great skill, it is not a key element that I’m looking for in programming graduates.

A very good understanding of maths keeps recurring as a theme when I’m interviewing.  So using an engine to show how data can be manipulated in game-centric ways is impressive.  So, for example; flocking algorithms, path-finding, multi-processing, network-play, 3D geometry manipulation (vertex/pixel shaders), vision & audio processing (FFT), animation and AI state machines and so on*.   It is unfortunate that many of the graduates I see don’t appear to have pushed themselves very far beyond simply understanding code syntax and the engine’s library calls.

Interestingly; this just popped into my RSS feed:

http://www.wired.co.uk/wired-magazine/archive/2010/01/features/rebooting-britain-teach-kids-to-see-in-four-dimensions.aspx

Hope this helps.

 

* I think a good list of the game-play techniques that game companies use regularly could be given to the students.  They could then pick one or more that they are motivated by and follow this in more depth.  Don’t simply think of a game idea and try to make it!

Education and Programming

Over the weekend I’ve been thinking about the education system in the U.K. for programming.  A quick search of BECTA and the BBC’s ICT help shows that education at pre-16’s is designed for getting the next generation understanding what a computer is and how it can be used.  It is very broad and the only section which gets close to how a computer is programmed is the “Control and Measurement” section.  This is very poor when I compare it to what I was able to learn at school when I was 14 (back in 1984!)

Stepping away from computers into Design & Technology there is a section on Electronic Logic which is a lot more useful for budding programmers.  Looking at science, in the Additional Science (AQA) there is a useful section on Forces and Motion that is great for games programming.

Lastly, I discovered something called DiDA, the Diploma in Digital Applications – equivalent to 4 GCSEs.  Looking at the relationship between DiDA and GCSEs shows that a “Level 1 Distinction” or “Level 2 Pass” is a GCSE grade C, and a “Level 2 Distinction” is equivalent to GCSE grade A*.

In the Unit Content, they talk about “Unit 5 – Games Authoring“.   This is a very recent addition but there is a draft specification and it is being piloted this year (from Sept 2008).   Reading through the draft, I see that it is game designer/producer training that is being offered.  Obviously the pupils will need to draw upon other skills to help them with this course.

Oh, and here is the reading list:

Jason Darby, Make Amazing Games in Minutes (Charles River
Media, 2005) ISBN-10: 1584504072
Jason Darby, Game Creation for Teens (Delmar, 2008) ISBN-10:
159863500X
Jason Darby, Picture Yourself Creating Video Games (Delmar,
2008) ISBN-10: 1598635514
Jacob Habgood, Mark Overmars, The Game Maker’s Apprentice:
Game Development for Beginners (Apress, 2006) ISBN
1590596153.
Nanu Swamy and Naveena Swamy, Basic Game Design & Creation
for Fun and Learning, Charles River Media, 2006, ISBN
1584504463.
Andrew Rollings, Ernest Adams, On Game Design, New Riders
Publishing, 2003, ISBN 1592730019

It makes me sick.  From Amazon’s description: “Make Amazing Games in Minutes introduces the game creation process to the aspiring game developer with no experience or programming ability.”  I hope none of the readers of this book expect to get a job!

Continue reading

%d bloggers like this: