This repository contains the projects completed as part of a Software Engineering course focused on the foundations of software engineering principles and large-scale software system development. The course primarily used Java and covered key topics such as abstraction, modularity, architecture, specification, testing, and debugging.
- Description: Implemented Abstract Data Types (ADTs) using Java and explored the Adapter Pattern to adapt interfaces for compatibility.
- Key Concepts: ADTs, Adapter Pattern, Java Collections
- Description: Applied various design patterns in Java, such as Singleton, Factory, and Observer to solve common software design problems.
- Key Concepts: Design Patterns, Object-Oriented Design, Java
- Description: Developed an automated testing framework using Java reflection, allowing dynamic discovery of test methods and class structures.
- Key Concepts: Automated Testing, Reflection, JUnit
- Description: Built a simple web server in Java that supports basic web requests and responses, simulating the functionality of frameworks like Ruby on Rails.
- Key Concepts: Web Servers, MVC Arhitecture, HTTP
- Description: Implemented a concurrent MBTA simulator that models the operation of public transportation using Java threads to simulate parallel processing.
- Key Concepts: Concurrency, Threads, Synchronization, Java