COSC 40453 OOP & Design Patterns

Tired of writing Spaghetti code? This course teaches students to write code of high quality (Extensible, Maintainable and Testable) by providing an in-depth coverage of object-oriented programming principles and techniques.

Prerequisites: Java and Data Structures

Topics include:

Object-Oriented Programming

  • Abstraction, Encapsulation, Inheritance and Polymorphism
  • Object-Oriented Analysis and Design in UML
  • Interfaces and Abstract Classes
  • Programming to an Interface
  • Composition over Inheritance
  • Anemic Domain Model vs. Rich Domain Model

Software Design Principles (SOLID)

  • S (Single Responsibility Principle)
  • O (Open/Closed Principle)
  • L (Liskov Substitution Principle)
  • I (Interface Segregation Principle)
  • D (Dependency Inversion Principle)

Design Patterns

  • Creational Patterns (Singleton, Factory etc.)
  • Structural Patterns (Adaptor, Proxy, Decorator, Bridge, Facade etc.)
  • Behavioral Patterns (Observer, State, Template Method, Strategy, Chain of Responsibility, Iterator etc)

New Features From Java SE 8 to Java SE 17

  • Lambda Expressions
  • Streams APIs
  • Time APIs
  • Switch Expressions
  • Records
  • Text Blocks
  • Pattern Matching for instanceof
  • Try-with-resources

Practical Coding Guidelines

  • Google Java Style Guide View
  • Alibaba Java Coding Guidelines View

Each topic will be accompanied by numerous code demos from real projects, so the course won't be dry.