Basics
- Instructor
- Peter Snyder
- Time and Location
- Burnham Hall 208, Monday, Wednesday and Friday, 12:00–1:40
- Book
- Benjamin J Evans, David Flanagan - Java in a Nutshell, 6th Edition
- Required hardware
- Every student must have a physical iClicker. The version does not matter as long as it is functional.
- Discussion
- Piazza
- Office Hours and Location
- Monday, Friday, and (with 24 hour notice) Thursday (2:00 - 4:00pm) SEO 1218, or by appointment.
- TA and Office Hours
- Hoangminh Huynhnguyen, Tuesday (3:30 - 5:30pm), Wednesday (2:30 - 4:30pm) in SEO 1318
Description
The purpose of this course is to learn how to write non-trivial software, with an emphasis on modern design techniques and tools. This includes topics like asynchronous programming, programming in teams, structuring applications to reuse code, testing and test-driven development, patterns, among others.
Java will be used throughout the class. No Java experience expected or required. Roughly the first half of the class will be learning the language, and the second half will be using it to learn and exercise software design principles and practices.
Topics Covered
This list is tentitive and will change depending on how class progresses.
- Introduction to the class 6/12
- Variables, control flow 6/14
- Classes, objects, and OOP 6/16
- Inheritance, class design, and error handling 6/19
- Exceptions and abstract classes 6/21
- Type generic programming 6/23
- Packages and sharing code 6/26
- Lambda and functional programming 6/28
- Documentation, reusable code, and tooling 6/30
- More library and clean code constructions 7/3
- Unit testing and reliability 7/5
- Concurrency 7/10
- Concurrency continued 7/12
- Version control 7/14
- Inversion of control and event loops 7/17
- Event loops in practice 7/19
- Architectural patterns 7/21
- Implementation strategy patterns and build tools 7/24
- Creational patterns 7/26
- Patterns concluded 7/28