Prerequisites: CS 9C or 9F or 61A (experience with object-oriented programming or with a C-based language)

Course objectives: Students will learn constructs of the Java programming language, along with built-in facilities to create graphical user interfaces. In the process of learning the language, they will be applying knowledge of mathematics, science and engineering. As many of their projects require a fair bit of software engineering, they will also be making design decisions (algorithm, data structure, time-vs-space, etc) and considering various implementation trade-offs.