|
CS1 (Othello ('Reversi') (XNA) ; Othello ('Reversi') (Console) ) |
Key Topics That Students Will Learn In This Assignment: |
|
Pre-requisite Knowledge
That Students Must Know, Prior To Starting This Assignment: (What students must know in order to able to complete this assignment) |
|
Summary |
Game Description: Othello (also known as 'Reversi') is a
simple-yet-engaging game for 2 players; the objective is to have the
largest number of playing pieces under one's control when the game
ends. The game is played on a square board composed of a grid
of spaces (visually, the board resembles graph paper - normally the
grid is 8x8). The game starts with 2 of each player's pieces
on the board. Each of the players alternates playing, with
each player placing a piece on the board during their turn.
Each piece must be placed according to two rules: (1) the newly
placed piece is adjacent to one of the other player's pieces that's
already on the board, and (2) the newly placed piece must be able to
trace a straight-line path (vertically, horizontally, or diagonally)
over the other player's pieces to a piece that belongs to the
current player, which 'brackets' the opponent's pieces. Doing
so flips (or 'reverses') all the opposing player's pieces between
the two pieces. The game is described in more detail at
http://en.wikipedia.org/wiki/Reversi
Assignment Description: This assignment is remarkably similar between the Console and XNA versions. In both cases, the students are provided with all the user-interface code (that renders the board on the screen, informs the players whose turn it is, and accepts input from the current player), and they are required to implement the logic that determines if a move is valid (if it's adjacent to a piece of the opposite color, and if a line can be traced from the newly placed piece, across 1+ pieces of the opposite color, to a piece of the same color). The students must also implement a routine that tells the user interface code if there are no more valid moves left to be made for the current player (in which case, the game is over) |
Instructor F.A.Q. | |
Pre-Test | Post-Test |
Lecture Hours Prior To Assignment Due Date: | 5 |
ACM Classification (Topics Covered): (What the students will learn, and demonstrate, by doing this assignment)
From: Computing Curricula 2001 Computer Science — Final Report —
The Joint Task Force on Computing Curricula
|
PF1. Fundamental programming constructs
PF2. Algorithms and problem-solving
PF3. Fundamental data structures
AL2. Algorithmic strategies
PL6. Object-oriented programming
|
Technical Requirements:
(What the students will learn, and demonstrate, by doing this assignment)
From: Computing Curricula 2001 Computer Science — Final Report —
The Joint Task Force on Computing Curricula
It is hoped that providing this information may help instructors with the accreditation process, as calling this information out will help clarify how this assignment (and from here, the overall course) meets the learning outcomes for the overall program/department, and institution. |
PF1. Fundamental programming constructs PF1.1 - Analyze and explain the behavior of simple programs involving the fundamental programming constructs covered by this unit. (The students are given code, and required to demonstrate that they understand the program by modifying the program)
PF1.2 - Modify and expand short programs that use standard conditional and iterative control structures and functions. (The primary goal of the assignment is to modify the code that's provided by the instructor)
PF1.3 -
Design, implement, test, and debug a program that uses each of the
following fundamental programming constructs: basic computation,
(The primary goal of the assignment is to modify the code that's provided by the instructor, which requires the use of the fundamental programming constructs listed above.)
PF1.4 - Choose appropriate conditional and iteration constructs for a given programming task. (The primary goal of the assignment is to modify the code that's provided by the instructor, which requires the appropriate use of the conditional an iteration constructs.)
PF1.5 - Apply the techniques of structured (functional) decomposition to break a program into smaller pieces. OPTIONAL (If the instructor chooses to emphasize this, then the problem will make an ideal candidate for functional decomposition.)
PF2. Algorithms and problem-solving PF2.3 - Create algorithms for solving simple problems. (The students are given a set of rules for a game, and told that they must create an algorithm that implements the rules.) PF2.4 - Use pseudocode or a programming language to implement, test, and debug algorithms for solving simple problems. (The primary goal of the assignment is to not just create an algorithm, but to implement it, as well.) PL6.
Object-oriented programming (The primary goal of the assignment is to not just create an algorithm, but to implement it in C#, as well. NOTE that the students don't create any classes, nor are they required to instantiate any objects, but instead, to merely use the existing objects)
|
This document and the related materials
are developed with support from Microsoft Research Computer Gaming Initiative
under the Computer Gaming Curriculum in Computer Science RFP, Award Number
15871.