Distributed Game Playing in Java I

Quarters
Winter Open
Location
Olympia
Class Standing
Sophomore
Junior
Senior
Paul Pham

Distributed Game Playing in Java I is a second course in programming giving students the chance to develop novel software, work in a team, practice pair programming and livecoding, and produce a portfolio-worthy project. Students will use Java--a strongly-typed, widely-used programming language used at companies such as Netflix, Amazon, Google, and Etsy, and in Android and Minecraft. The goal of this course is to help students gain competence and confidence in programming using design thinking.

Students will learn to express their computing ideas methodically and solve problems in code. Topics covered include: software objects, references and equality, interfaces and implementations, abstraction and inheritance, generics and collections, optionals, error-handling, lambda functions, and streams. Prior programming experience, such as Computer Science Foundations or equivalent, is required, but no previous Java knowledge is necessary.

The class will guide students in becoming proficient in modern software development tools, especially the Linux command-line, Git for version control using various hubs and remotes, and the IntelliJ integrated development environment.

Students will work individually or in small teams to complete weekly assignments and divide up software development work in playing Battlecode, a strategy game  with a programmable collective of bots. Advanced students may repeat this class and/or enter the Battlecode competition at MIT in January 2026. In class, students will collaborate to develop common features and player programs, applying principles of distributed algorithms and collective intelligence.

Course materials include Head First Java, 3rd Edition (Sierra, Bates, Gee) with selections from Liskov's Program Development in Java and Bloch's Effective Java and the Battlecode lectures from January 2025. Supplemental practice is provided by Codecademy and the online MOOC from the University of Helsinki.

Anticipated credit equivalencies:

* 4 - Java Programming

*Upper division credit is awarded for teams that implement, document, and demonstrate their solution against the reference player.

This class provides sufficient background and training to continue self-learning Scala, Clojure, Kotlin, and other popular Java Virtual Machine languages in future independent learning contracts, or to continue with Java in Distributed Game Playing in Java II.

Registration

Course Reference Numbers
So - Sr (4): 20271

Academic Details

4
25
Sophomore
Junior
Senior

4 upper division science credits awarded upon completion of a working game-playing program that beats the reference player, in a team of 1 to 3 students

Schedule

Winter
2026
Open
Remote (W)

See definition of Hybrid, Remote, and In-Person instruction

Evening
Schedule Details
Remote/Online
Olympia