0% found this document useful (0 votes)
75 views7 pages

Prospectus Introduction To Programming in Java: Simple Computer Games

This document provides an introduction and prospectus for a new textbook called "Simple Computer Games" that aims to introduce programming concepts to beginning computer science students using Java in the context of writing computer games. It describes the problem of declining interest in computer science and proposes that engaging students through game development examples and a gradual learning approach can help address this issue. The document outlines the proposed approach and framework called FANG that will allow students to write simple games from the beginning while abstracting away complexity. It also summarizes a few similar existing textbooks and how the proposed book differs in its singular focus on game development throughout.

Uploaded by

Shaoyuan Xu
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
75 views7 pages

Prospectus Introduction To Programming in Java: Simple Computer Games

This document provides an introduction and prospectus for a new textbook called "Simple Computer Games" that aims to introduce programming concepts to beginning computer science students using Java in the context of writing computer games. It describes the problem of declining interest in computer science and proposes that engaging students through game development examples and a gradual learning approach can help address this issue. The document outlines the proposed approach and framework called FANG that will allow students to write simple games from the beginning while abstracting away complexity. It also summarizes a few similar existing textbooks and how the proposed book differs in its singular focus on game development throughout.

Uploaded by

Shaoyuan Xu
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 7

Prospectus

Simple Computer Games


Introduction to Programming in Java
Brian C. Ladd
Jam Jenkins
Robert Duvall
April 30, 2009

0.1

Introduction

Beginning computer science students are overwhelmed by the cognitive overhead of


writing their very first line of Java. This is one reason for the general decline in interest
in computer science in the United States and the difficulty in recruiting students into
the computer science major. A simpler introduction utilizing a spiral approach is necessary to support students in the first course. This prospectus describes a new book,
Simple Computer Games (SCG), that both engages students with examples and projects
drawn from a wide range of computer games and holds complexity at bay by abstracting away the first line of Java in a toolkit.
Using a strong, objects-early pedagogy, SCG teaches the logical underpinnings of
sequence, selection, iteration, and delegation with a gradual learning curve suitable for
CS1 in a small-liberal arts college. Introducing clear, concise communication with both
the human and the machine audience, SCG helps beginning students reach a level of
maturity with regard to designing computer games and designing computer programs.
SCG leverages student interest in computer games and permits them to write interesting games from the very beginning using the Freely Available Networked Game
(FANG) Engine framework. As students mature, they replace more and more of the
framework until they are writing entire computer games themselves. The framework
supports students as well as instructors by permitting a large number of labs, design
assignments, and complete game assignments in the Programming Problem sections
in almost every chapter. Instructors are also provided with a large number of reading
questions, and concept questions in each Chapter Review.

0.2

The Problem

Interest in computer science has fallen nearly fifty percent in the last six years. This
trend has hit computer science departments in small liberal arts colleges particularly
1

2
hard. Declining interest leads to declining enrollments in introductory courses and in
turn to declining numbers of majors. Several explanations for the problem have been
offered including that the current crop of students came of age after the Internet bubble burst, that interest during the Internet bubble were artificially inflated, that current college students are jaded with respect to computers because they use them every
single day, and that computer science is fundamentally a difficult discipline. Similar to
learning a new human language, learning to program a computer requires a new, foreign way of thinking. Many students find the required literal, logical thinking difficult
because it is different. Their struggle is compounded by the need to know everything,
all at once. This refers to the need to learn an unforgiving machine-readable syntax,
a technical vocabulary, and the skills to execute a program, all before the first Hello,
World! program can be run. Whether computer science is intrinsically difficult or our
pedagogy in CS1 only makes it seem so, any other reason for the decline in interest in
computer science is compounded by the steep learning curve in introductory computer
programming.
The very success of computerization, the ubiquity of cellphones, digital music, educational software, and hand-held and console-based computer games, has commodified the computer at the same time it raised the bar on what students expect computers
to be able to do. Student outcomes are best when students are engaged with the material; traditional introductory textbooks (and, unfortunately, traditional professors)
seem frozen in time, starting with Hello, World! and sales tax calculations. The current generation of college student is not engaged by this sort of programming. The
other possible explanations of declining student interest focus on student perceptions
of computer science. Stories now focus on outsourcing of technology jobs rather than
on many-figured signing bonuses offered to computer science graduates. This is both
a cause and an effect of the decline in student interest. SCG addresses all three of these
problems. It uses the SCANS framework to abstract away some of the cognitive overhead of learning the Java language, permitting students to focus on learning the new
concepts first. It leverages many students interest in computer games by teaching
concepts in the context of building different types of computer games. The consistent
context gives students a place to plug in their newly learned concepts, further easing
the learning curve. Student perceptions are the hardest to address; SCG includes examples and discussions that take the student beyond the computer game context to other
parts of computer science. The spiral approach is applied on both a micro and a macro
scale so some interesting problems in different parts of the field are presented when
students can understand them with guidance that answers will only come in future
courses. The approach and benefits of SCG are covered in more detail in the Approach
section below.

0.3

The Competition

These three books seem closest to SCG in approach. A synopsis of each is provided
along with an analysis of how similar/different they are from the vision of Simple Computer Games. They are presented in chronological order which happens to coincide with
increasing commonality in approach.

0.3. THE COMPETITION

Biermann, A. and Ramm, D. Great Ideas in Computer Science with Java. The MIT Press.
Cambridge, MA, USA. 2002. 528pp. (16 Chapters, 510pp; Bibliography, 2pp; Index,
14pp).
Based on earlier Scheme editions of the book, Biermann and Ramms text is very
broad in its coverage, ranging from variables and control structures in the second
chapter through simulation, computability, program speed, and finally artificial intelligence in the last chapter. This text is geared toward a well-prepared, motivated
audience such as that found at Duke University (where one of the authors teaches). The
breadth of coverage encouraged student engagement. It also provides an overview of
the history of algorithms and hardware that have led to the digital society that the current crop of students has grown up in. Starting with HTML, objects, and Java applets
in the first two chapters, the learning curve in this text is very steep.
SCG attempts to engage students in a similar fashion, providing an interesting context including both historical and societal connections to computers and computer
games. By being more focused and providing a minimalist framework, SCG is able to
provide beginning students with more support as they learn to program and a gentler
learning curve. By focusing on computer games, it is able to address interesting problems including simulation and artificial intelligence covered in Biermann and Ramms
book.
Bruce, K. and Danyluk, A. and Murtagh, T. Java: An Eventful Approach. Pearson Prentice Hall. Upper Saddle River, NJ, USA. 2006. 675pp (21 Chapters, 642pp; 4 Appendices,
29pp; Index 4pp).
Bruce, addresses the same problems identified above in a similar manner to that
used in SCG: the ObjectDraw toolkit is provided to permit students to create interactive
programs and applets from day one. Bruce, introduces variables, types, and selection
in the context of programs derived from the base GUI class in ObjectDraw. This use
of classes leads naturally to a more formal definition of classes and objects; the spiral
approach is used similarly in SCG. SCG differs from Bruces text by providing a single, unified context, computer games, for the presentation of new material. The FANG
engine is different than ObjectDraw in that it was designed from the beginning to be
light-weight, to be able to get out of the students way as she develops as a programmer. One of Bruces appendices (12pp) focuses on programming without ObjectDraw;
FANG is systematically removed throughout the text of SCG.
Guzdial, M. and Ericson, B. Introduction to Computing and Programming with Java: A
Multimedia Approach. Pearson Prentice Hall. Upper Saddle River, NJ, USA. 2007. 558pp
(16 Chapters, 542pp; 1 Appendix, 8pp; Bibliography, 2pp; Index, 6pp; CD).
Guzdial and Ericsons book addresses the everything-all-at-once problem through
the use of the Dr. Java interpretive Java environment. This permits Guzdial to apply his
experience with the Squeak dialect of Smalltalk to teaching Java: students are urged
to engage by creating programs that manipulate images, sound, and at the end of the
book, simple video. This book is the closest competitor to SCG in that student engagement was designed in from the start and considered the most important part of the
book. It differs by focusing on an interactive, objects-first pedagogy and by ignoring
the medium of video games; SCG is about the medium of computer games and while
students are provided with a scaffold in the SCANS framework, it is peeled away, layer
by layer, as students master more Java.

0.4

The Approach

Declining interest in computer science, exacerbated by a disconnect between traditional introductory course content and the role of the computer in our students lives,
causes declining enrollment in introductory courses. Traditional contents failure to
engage students convinces many who do enroll that computer science too hard or too
dull for them to continue.
Simple Computer Games leverages many students interest in computer games to address these problems. Traditional assignments are replaced with writing computer
games and the Freely Available Networked Game engine permits students to write simple, interactive, multi-player games from day one.
Two approaches influenced the development of the FANG framework: BlueJ, and
Felleisens work in layered programming languages (embodied, for one example, in
DrScheme and DrJava). FANG similarly hides the main declaration and exceptions from
the user, holding some of the cognitive overhead at bay. Unlike other educational
frameworks, however, every effort has been made to keep FANG both simple and minimal. This permits the entirety of the framework to be exposed by the end of this textbook. In Simple Computer Games, the student goes from depending on FANG to being
able to write their own Java programs by the end of the text
The FANG engine also lets students start writing interesting games right away. As
many have noted, educating the Net generation is hard because they see a seamless
integration of technology in their lives. Growing up with graphical user interfaces on
everything from the computer in their kindergarten to their set-top cable box to their
cellphone has raised their expectations on what they should be able to do with technology. Students learn to write FANG games early to motivate their learning but the
goal of the text is traditional CS1 learning; FANG is light-weight enough that students
can reach past it to interact directly with Java.
The following sections highlight how SCG supports beginning computer scientists
and their instructors.
Spiral Approach. Simple Computer Games makes good use of the spiral approach
to teaching complex topics, presenting them in a reduced form early and then revisiting them multiple times, each time revealing a little more of the complexity [Spicer, A
Spiral Approach to Software Engineering Management Education. International Conference on Software Engineering, 1984.]. Examples include the FANG Sprite class. Sprites are
used in every chapter from 2 onward with more detail about how they work exposed in
Chapter 6.
SCG proposes applying this same approach to many advanced topics, introducing
concepts that are built upon in future courses. Examples include computer history
(discussed along-side the history of games through-out the book), computer organization (in the discussion of threads, the history of arcade games, and the overview of
networked communication), the use of design patterns (Factory in Chapter 10), game
design fundamentals (through out the book), and game studies.
The inclusion of material from the new field of game studies is one unique aspect of
this text, making it suitable as a text for introducing game studies students to programming just as it introduces programming students to game studies. SCG takes the best

0.5. TABLE OF CONTENTS

parts of early introduction of topics and stretches out the examples to ease the learning curve for introductory students. SCG also benefits from focusing on game-based
examples. This context gives students somewhere to put what they learn.
FANG. FANG is an open-source gaming engine designed from the start to support
beginning students. Whenever an architectural choice had to be made, the critical
lens of CS1 pedagogy was applied to make it in favor of simplicity. As is mentioned
earlier, FANG can build Java applications without requiring the student to write their
own main method. This, in turn, means that developing an application or an applet
requires exactly the same code.
One unique feature of FANG that draws students into it is the ability to create multiplayer games almost as easily as single-player games. Networked games use a client/server architecture and the server can run on a dedicated machine or the first player
starting a multi-player game can run the server. This flexibility means that FANG networking is robust in light of different network access policies. FANG networked games
also run as applications or applets.

0.5

Table of Contents
1
1.1
1.2
1.3
1.4
1.5
2
2.1
2.2
2.3
2.4
2.5
2.6
2.7
3
3.1
3.2
3.3
3.4
3.5
3.6
4
4.1
4.2
4.3
4.4

Getting Started: Whats in a Game?


What is in a Game?
Active and Passive: Rules Followers
Strategies: Winning a Game
What is in a Computer Program?
Summary
Your First Program
Drawing a Playing Card
How Computers Work
Java
FANG
An Introduction to Sprites
Get the Picture
Summary
Deciding What Happens: Making Choices
A Simplest Game
Computer Program (Game) Design
Sequence
Selection
Finishing NewtonsApple
Summary
Components: Names, Types, Expressions
Randomness in a Game
One More Sprite: CompositeSprite
Java Components
Examining a Public Interface

6
4.5
4.6
5
5.1
5.2
5.3
5.4
5.5
5.6
6
6.1
6.2
6.3
6.4
6.5
7
7.1
7.2
7.3
7.4
7.5
7.6
8
8.1
8.2
8.3
8.4
8.5
9
9.1
9.2
9.3
9.4
9.5
9.6
10
10.1
10.2
10.3
10.4
10.5
10.6
11
11.1
11.2
11.3

Finishing EasyDice
Summary
Rules: Methods, Parameters, and Design
A Simple Arcade Game: SoloPong
Top-down Design
Delegation: Methods
Expressions Redux
Finishing Up SoloPong
Summary
Components Meet Rules: Classes
Playing Together
Network Programming with FANG
Abstraction: Defining New Types
Finishing the Game
Summary
Collections: ArrayLists and Iteration
Flu Pandemic Simulator
Collections: One and Many
ArrayList is an Object
Console I/O: The System Object
Finishing the Game
Summary
Multidimensional Data Structures
Rescue Mission
Multidimensional Containers
Animation
Finishing Rescue Mission
Summary
Streams and Strings: Character Input
Designing Hangman
String Manipulation
Reading User Input in FANG
Reading a Word List
Finishing Hangman
Summary
Abstraction: Public Interfaces and interface
Dungeon Crawl
Writing Just the Public Interface
How interface is used in FANG
More Physics: Perspective
Finishing Dungeon Crawl
Summary
More Streams: Separating Programs and Data
Outsmarting the Player: 20 Questions
Reading and Writing Files
Encoding Objects to Write Them

0.5. TABLE OF CONTENTS


11.4
11.5
12
12.1
12.2
12.3
12.4
12.5
12.6
13
13.1
13.2
13.3
13.4
13.5
13.6
14
14.1
14.2
14.3
14.4
14.5
14.6
A
B
C
D

20 Questions: Different Topics


Summary
The Video Game Loop
FANGs Main Loop
Tetris
Using Trackers
Nested Loops
Finishing Tetris
Summary
Searching, Sorting, and Playing Cards
Card Games
Asymmetric Views: Seeing Just My Hand
Sorting
Recursion
Finishing Euchre
Summary
Programming w/o FANG: Interactive Fiction and Recursion
Back to the Future: Interactive Fiction
Reading Recursive Data Again
Incremental Development
Separating Code and Data
Making it a Real Game
Summary
Java Language Keywords
References
Java Templates
FANG Color Names
Index

You might also like