What is Stakeout?
Stakeout is a simple turn-based strategy game meant to be used as a lesson plan for an introductory Java programming course. The game incorporates the concept of staking out and holding one's territory with the goal of world domination. Along with a reference implementation called the "prototype", there are a set of lesson outlines that can be used by an instructor to teach the course. The lessons start from the beginning, assuming no prior knowledge of computer programming, and take the student through all the techniques he will need in order to build a simplified version of the game.
What it isn't
Sometimes the best way to describe something is in the negative. Here are a few things that Stakeout is NOT:
- a short course ("Learn Java in 24 hours") to learn the Java syntax for someone who knows another language
- a rigorous textbook approach to learning the essentials: we will eventually learn all the essentials, but we'll also learn a lot of non-essentials along the way
- a reference for the frantic student who has a programming assignment due in an hour
- an instruction page on how to add an applet to your web page
What it is
In contrast Stakeout can be described as a fun, goal oriented approach to learning Java for someone who has no programming experience and who isn't in a particular hurry.
Why this project was started
All too often introductory computer science classes either have no cohesive project around which the course is focused or the project is unrealistic and incapable of holding the students interest. The hope is that by putting the acquisition of programming skills in the context of a gaming environment, the students will be more motivated to persevere despite the inevitable difficulties involved in programming. Also, by presenting the lessons in terms of adding specific features in the game Stakeout aims to show the students the why and not just the how of programming. It will start from a minimalistic game where students can practice the most basic of programming techniques, to a full-blown version where students will have to digest more code and employ advanced techniques to solve real problems.
- Ease of graphics programming: It is very simple in Java to load 2D graphics and display them on the screen. The other popular graphics packages out there currently focus almost entirely on 3D environments which are much harder to deal with. Java has a graphics API specifically designed for 2D graphics which makes it much simpler.
- Full-featured, modern programming language: There are scripting languages out there that have simple, 2D graphics APIs, but they aren't your typical, full-featured programming language that the student will encounter when he starts to work on real projects.
- Portability: Java has the added advantage that it is portable across many operating systems. While certain things specifically address people who are using PCs, most of the content of the lessons can apply just as easily to someone using a Macintosh or Linux operating system.
Currently the most popular games with high school students are the 1st person shooters and the real-time strategy games. Unfortunately these two genres are so inherently complex that they aren't really feasible for a first-time programmer. The turn-based strategy, on the other hand, has the right balance of complexity and is thus the perfect candidate for an introductory course.
- Originality: Stakeout is not just a computer port of a board game. It would be too complicated to manually do all the calculations for unit production and battle resolution by hand.
- Simplicity: The concept, rules, graphics, and game play were all chosen with simplicity in mind to ease the burden on the first-time programmer.
- Manageable: Because of the relative simplicity of the game, it is small enough for a student to write a basic (but fully functional) version in a one year course.
- Expandable: The nature of the game lends itself well to being able to start out very simplistically and then gradually add features as the student learns new concepts. There are lots of possibilities for future development for the motivated student.
Who's behind all this?
Stakeout was designed and implemented by Dan Wheadon
. Dan is currently a software engineer at Intel where he works on Intel's Threading Tools. In his volunteer experience teaching computer science to high school students, he found that it was necessary to have a manageable and concrete goal for the students to work towards. And that's where Stakeout began. Dan hopes to use Stakeout himself to teach computer science to high school students. Similarly, it could be useful for others who perhaps don't have the time to develop such a project on their own, but who are looking for a compelling way to teach computer science.
Honorable mention also goes to Dan Hoeflinger and John Loucaides who provided ideas and feedback on the initial concept of the game.