The major theme of this course is how to structure real, large programming projects, in a way that they are easy to maintain across the product lifetime. Our Java programs will consist of multiple classes, in multiple source files in IntelliJ projects / in the same directory. These examples are, generally, “toy examples” – that is, simple enough projects where you can see their full scope and understand the idea, but complex enough to convey that same idea. We will revisit object-oriented ideas you’ve already seen like encapsulation and inheritance as they occur in Java, explore additional ones such as polymorphism and generics. We will then explore program architecture and see some Design Patterns which help in that structure, all advancing certain recurring Design Principles.
This is the second or third programming course in the series. You will come in with some knowledge of Java, since this is not just a repeat of your Introductory course with a new language. We will begin with a brief review of Java programming, but will quickly more on to the aforementioned topics.
Prerequisites: COMP 1300C (Intro to Computer Science)