Course Level
CS1
Knowledge Unit
Fundamental Programming Concepts
Collection Item Type
Lab
Project
Synopsis

The purpose of this lab is to let students experiment with conditional “if” statements while building features of an actual game in Java.  The features explored in this lab include determining game over conditions, controlling sprites with a mouse, event handling to control paddle movement via keystroke, and spawning singular balls via keyboard as well as advanced game mechanics such as fire and ice ball power-ups.  Students will practice branching and gain proficiency with Selection Control Structures (“if” and “switch” statements) while producing a customized version of their very own block-breaking realtime simulation. 

Recommendations

For instructors, check out the instructors resource page (index.html in the top-level directory). It offers links to the lab, requirements, and additional resources.

This lab has been offered in multiple CS1 sections with students working in teams of two, and they all seem to follow a similar outline:

(1) Introduce the materials using the slide deck overview, and point them to the website that hosts the files they will need.
(2) Set up the SpaceSmasher files, with help from the instructor if needed.
(3) After the students read the website, try TODO 0 together with your students.

The above list is merely a suggestion, and the instructor should feel free to edit/remix/cut/add content to their liking and to support the desired educational outcomes. Finally, please email the GTCS team with any and all questions at rynn@uw.edu. We hope you like our work and will consider using it to supplement your existing materials that target conditional execution and branching.

Engagement Highlights

We have observed that providing students with an engaging digital sandbox can be a fun and motivating experience in which one can learn while exploring and playing.  To that end, we build fun realtime simulations and then dissect them for use as a lab, while focusing on the following engagement practices:

(1) Use Meaningful and Relevant Content. Rather than simple, contrived, or toy puzzles, we place the student in command of a fully functional game, to extend as they see fit.  We guide them via TODOs through interesting problems to solve involving graphics, sound, UI and UX content wrapped up in the context of an engaging realtime simulation.  We explore the use of games as a meaningful and relevant vehicle for students to learn via experimentation and play.

(2) Collaborative Learning: These labs are designed to be tackled in teams of 2, encouraging student community and effective group work.  Our slide deck (ConditionalsLabOverview.pptx) contains suggestions for group norms that could be considered for adoption in order to help guide the students towards a greater collaborative learning experience.

More information regarding the future engagement practices under consideration can be found at the bottom of the Instructors Resources landing page or in the slide deck overview included on this page.

Computer Science Details

Programming Language
Java

Material Format and Licensing Information

Creative Commons License
CC BY