CSCI 605 -- Advanced Object-Oriented Programming Concepts -- GTA Website

Welcome to CSCI 605 -- Advanced Object-Oriented Programming Concepts! My name is Viet, and I will be your teaching assistant.

Objective: After completing this class, students will be able to describe thoroughly all JAVA programming concepts as well as OOP concepts. Students can also construct systematic applications/softwares that are suitable for industry and professional environments.

The purpose of this website is to upload recitation references, code references, covered topics, agenda, and recitation-related announcement. Please feel free to send me an email or drop me a discord message if you have questions regarding the course work.

Link to code used in this class.

Week 14

Reviewed/Covered Topics: Lambda, Stream, and Reflection

  • Lambda function/expression and its use cases
  • JAVA Stream API and examples
  • A touch on JAVA Reflection API and related applications

Week 13

Reviewed/Covered Topics: JAVA Collections

  • JAVA Collections: theory
  • Examples of all Collection concepts:
    • Collection
    • List: ArrayList, Linked List
    • Set: HashSet
    • Map: HashMap
    • Iterable/Iterator
    • Comparable /Comparator

Week 12:

Reviewed/Covered Topics: JAVA Networking

  • Basic networking theory
  • Socket
  • REST API
  • Examples:
    • Multi-threaded server
    • JAVA Client

Week 11

Reviewed/Covered Topics: Threads and Parallel processing (next)

  • Homework 11 clarification
  • Review on thread theory:
    • Deadlock
    • Race Condition
    • Mutual Exclusion
  • join
  • synchronize:
    • Class synchronization: synchronizing static method and block synchronization of class
    • Object synchronization: synchronizing instance method and block synchronization of object
  • Thread pool
  • Thread cooperation: monitor, wait, notify
  • Producer consumer paradigm and examples
  • All concept includes examples

Week 10

Reviewed/Covered Topics: Threads and Parallel processing

  • Theory on Threads
    • Thread life cycle
    • Deadlock
    • contention and starvation
  • join
  • Shared Variables/Resources. Race Condition. Mutual Exclusion
    • How to prevent:
      • Use lock
      • Use atomic operation
  • synchronize
  • Thread cooperation: monitor, wait, notify

Week 9

Reviewed/Covered Topics: IO Streams

  • IO Streams are a core concept in Java IO
  • Files
    • Pipes (threads)
    • Network Connection
    • In-memory Buffers (e.g. arrays)
    • Standard Streams (keyboard input, terminal output)
  • Random access
  • java.io package
  • Serialization

Week 8

Reviewed/Covered Topics: Generics and Exceptions

  • Recap on generics:
    • Bounded Type Parameters: upper bound, lower bound
    • Multiple Bounds
    • Wildcards
    • Type Erasure
    • Resources on Generics
  • Exceptions
  • Examples:
    • Building a Global Payment System
  • Leetcode question: https://leetcode.com/problems/search-in-a-binary-search-tree/

Week 7

Reviewed/Covered Topics: Generics

  • Why Generics? Benefits?
  • Types of Java Generics
  • Bounded Type Parameters
  • Multiple Bounds
  • Wildcards
  • Type Erasure
  • Resources on Generics
  • Examples:
    • Building a Tensor Library

Week 6

Reviewed/Covered Topics

  • Interface
  • Casting explained
  • Overriding
  • Reference Type / Object Type in compile time / runtime
  • Modeling flying object with interface and example
  • Designing Elevator system using OOP system design example

Week 5

Reviewed/Covered Topics

  • Homework explained
  • Review on JAVA classes -- inheritance and polymorphism
  • Compile time -- run time object instantiation
  • JAVA interface
  • JAVA abstract class
  • Comparison of JAVA interface and JAVA abstract class
  • Implemtation example
  • Tips for designing OOP classes
  • Practice designing an elevator system

Week 4

Reviewed/Covered Topics

  • Pass by Value/Copy vs Pass by Reference
  • Regular Expression
    • Pattern
    • Matcher
    • Common regular expressions
    • Back references
  • Review homework patterns
  • Finite State Machine/Finite Automata concept:
    • Constructions of FSA/FA
    • Debugging ChatGPT's FSM in Q3 hw4
    • Implementing an actual FSM
  • Solution to last week Hackerank problem (if have time)

Week 3

Topics

  • Classes
  • Naming convention of variables and methods
  • Instance and class method
  • this
  • static/instance example
  • Access Modifier
  • BigInteger
  • method override vs overload
  • Common functionality for method overriding
    • toString
  • String Manipulation Practice Problem: Hackerrank Problem

Week 2

Topics

  • Scanner
  • Recursive
  • Java Programming Basics (cont)

Algorithms

Week 1

1. Topics

  • General information
  • JAVA Programming Basics
    • Theory
    • Syntax: Data types, Control flow, etc.
  • Object-Oriented Programming

2. Recitation Agenda

  • Introduction
  • Objective
  • Communication
  • JAVA Syntax Brief Overview
  • Review 4 main ideas in object-oriented programming
  • Demonstrate code for all of above topics
  • Solve 2 easy hackerrank problem (if have time)