F# through Game Development and XNA

Thinking of changing how you teach programming then look no further..

Print

A great way of introducing students to programming is by doing task which they will enjoy how about game development? Learning to program games for ages is exciting and also interesting, so if your thinking of changing the way you teach your Under Graduates programming or looking for a nice language to introduce students to the Visual Studio IDE what could be better than an interesting way to learn programming than this combination?

Giuseppe Maggiore has just written to me about his new F# e-book, FRIENDLY F# through Game Development and XNA, where you learn F# through game development with XNA.

I have just finished coauthoring the first version of a digital-only book about F# applied to gaming and simulations, which has been my topic of research and (very extensive) teaching during the last half decade; in fact, the book gathers the various samples I have used for teaching functional programming to my students.

The main subject of the book is the F# language and its various constructs, but every single chapter is focused on game-related problem. Each one of the first 5 chapters describes a problem, shows and discusses its solution and then discusses in depth the F# constructs used.

The 5 problems included in the book are:

  • a bouncing ball
  • the Saturn V rocket
  • an asteroid field
  • a large asteroid field optimized with quad trees
  • a police starship that must fight off a pirate ship attacking a cargo freighter

In the last two chapters we use XNA to build a 2D and 3D renderer for two of the samples we have seen. The book shows the basics of the SpriteBatch class, the Model class, input management and audio with this powerful framework.

So from a teaching perspective the book covers the most important aspects of XNA in a simple and succinct way.

The samples are all stored at: https://fsharpgamedev.codeplex.com/

So if your thinking of adapting your curricula F# and game development may be ideal.