This repository showcases my projects from the Advanced Object-Oriented Design and Programming course (CS635, Fall 2023) at SDSU. This course emphasized advanced object-oriented programming concepts, design patterns, software quality, and effective coding techniques.
- Description: Implemented a trie data structure for efficient word storage and manipulation.
- Key Features:
- Linked structure for data storage.
- Add and find word functionality.
- Special method to find words containing "ar".
- Print all stored words.
- Skills Developed: Java programming, data structure implementation, object-oriented design.
- Description: Created a binary search tree (BST) for managing Student objects with custom sorting.
- Key Features:
- BST storing Student objects with attributes like name, ID, and GPA.
- Internal iterator with lambda functions.
- Strategy pattern for sorting: by ID, by name, and by GPA.
- Null Object pattern for eliminating checks for null references or pointers in the tree
- Visitor pattern for counting null nodes and the computing the longest path
- Skills Developed: Strategy pattern, lambda expressions, advanced data structures, Java programming.
- Description: Developed an interpreter for a mini turtle language inspired by Etoys and Scratch.
- Key Features:
- Turtle class simulating movement on a 2D plane.
- Mini language with commands for movement, turning, looping, and variable management.
- Interpreter design pattern for executing turtle programs.
- Skills Developed: Interpreter pattern, language design, Java programming, abstract syntax tree representation.
- Design Patterns: Singleton, Factory Method, Observer, Strategy, etc.
- Refactoring: Code improvement techniques.
- Coupling and Cohesion: Impact on software quality.
- Unit Testing: Ensuring code reliability.