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.
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
- How to prevent:
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)