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. As a class, students will collaborate to develop a shared reference player, 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.
Class meets Mondays and Wednesdays from 6-8pm.
Registration
Must have taken at least one other programming course: could be Computer Science Foundations, Introduction to Python I, or C/C++.
Other prior experience at permission of instructor.
Course Reference Numbers
Academic Details
4 upper division science credits awarded upon completion of a working game-playing program, in a team of 1 to 3 students.