Parallel Processing

Overview

This project can earn you up to a 10% bonus to your final grade.

In this assignment, you will design and implement a high-performance concurrent log analysis engine in Java. The system must process large log files using multiple threads, safely aggregate results, and demonstrate measurable performance improvements over a sequential baseline.

The log analyzer:

Requirements

Input

The input to the program is a plain-text log file that contains:

You can assume that the timestamps are in order.

Example log file content:

2025-02-14T10:32:01Z ERROR AuthService Failed login attempt
2025-02-14T10:32:05Z INFO AuthService Login successful
2025-02-14T10:33:11Z WARN PaymentService Slow response detected
2025-02-14T10:33:15Z ERROR PaymentService Transaction failed
2025-02-14T10:34:02Z DEBUG InventoryService Cache miss
2025-02-14T10:34:45Z INFO InventoryService Item restocked
2025-02-14T10:35:01Z ERROR AuthService Token validation failed

Analyses

Your analyzer must compute at least four of the following:

The type of analysis for a specific execution of the program should be specified as a command line argument.

Implementation

The project must include a sequential baseline implementation and a concurrent implementation. There should be a clear separation of

Turning in the Assignment

For this assignment, you must turn in a zip file of a directory named bonus containing the following:

Submit the zip file to the appropriate folder on D2L.

Grading Rubric (100 points)

Program Correctness (30 points)

This evaluates whether your program works as intended. It is based on the results of automated tests that check if your code implements all required functionality correctly. This category also includes any additional issues not explicitly tested but that might lead to incorrect behavior.

Program Design (30 points)

This evaluates the overall structure and organization of your code. A well-designed program will typically have:

Code Readability & Style (5 points)

This evaluates how easy it is to read and understand your code, as well as how well you adhere to the style guide. The key points to consider are:

Documentation & Comments (5 points)

This measures how well your code is documented. At a minimum, your code should:

README (30 points)

The README file must include a technical report that includes the following:

The content of the README file must be coherent, grammatically correct English.