Section | 1 |
---|---|
Instructor(s) | Gerber, Adam (gerber) |
Location | JCL 298 |
Meeting Times | Monday 5:30pm - 7:30pm |
Fulfills | Core Programming |
Course Contents
• Program Control
• File and Basic I/O
• Objects
• Interfaces and Abstract Classes
• Complex Object Relationships
• Exceptions and Debugging
• GUI Programming and Swing
• Lambdas and Streams
• Recursion, Collections, and Data Structures
• Multi-Threading
• Advanced Topics
Coursework
Coursework will be divided into four components:
Labs
During labs, we will use the course tools to create applications together in class. All the source code that you will need to follow along during labs will be available in a single repository that will include rich and logically-grouped commit histories, comments, and slides. The lecture hall will be outfitted with power-strips, and students are required to bring their own laptops and follow-along during labs. Labs are not evaluated.
Projects
_01Control is a collection of solutions to simple connonical problems related to flow control and implemented using the command-line.
_02Arrays is similar to _01Control, but requires you to use single and multi-dimensional arrays to solve the problems. This project is also implemented using the command-line.
_03Objects is a collection of solutions to typical object oriented problems implemented using a driver and the command-line.
_04Interfaces is similar to _03Objects, but requires the use of both abstract classes and interfaces.
_05Dice is a dice game that you will implement using Swing.
_06Design is a solution to a vending machine where you will use CRC (Class - Responsibility - Collaboration), and UML (Unified Modelling Language) to develop your solution.
_07Streams is a collection of solutions to typical problems using Java8+ lambdas and streams.
_08Final is the final project. For your final project, you will create a multi-threaded game which extends base-code that will be provided to you. The game-engine is flexible and highly extendible, and you may create a wide variety of arcade-style 2D games such as Asteroids, Missile Comand, 1941, etc.
Exams
Quarterterm exam during week 3 (multiple-choice exam - 1/2 hour in duration)
Midterm exam during week 6 (multiple-choice exam - 1 hour in duration)
Participation
Class participation is a percentage of the final grade. The participation evaluation will be based on: your questions/comments during class, your posts/replies to the listhost, your willingness to help others during lab, and your presentation of project solutions when called on to do so. Also, ten finalists will be chosen to present their final-projects to the class.
Course Textbook
We will be using "Big Java: Late Objects, 2nd Edition" by Cay Horstmann as our textbook. ISBN: 978-1-119-32107-1. This book is available as both print and eBook; I recommend the latter.
Immersion programming (MPCS 50101) or passing score on programming placement exam.
This course requires competency in Unix and Linux. Please plan to attend the MPCS Unix Bootcamp (https://masters.cs.uchicago.edu/page/mpcs-unix-bootcamp) or review the UChicago CS Student Resource Guide here: https://uchicago-cs.github.io/student-resource-guide/
CAPP, MACSS and MSME students interested in taking this class should talk with their program's advisor.
This class is scheduled at a time that conflicts with these other classes: