From b1f0cf3d81fc66a258148b1b3d767e3435a6f970 Mon Sep 17 00:00:00 2001 From: j2-pelczar <jakub2.pelczar@live.uwe.ac.uk> Date: Wed, 4 Dec 2024 21:02:50 +0000 Subject: [PATCH] Upload New File --- README.md | 166 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 166 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..00af4f2 --- /dev/null +++ b/README.md @@ -0,0 +1,166 @@ + +# GitLab Repository for Worksheet Implementations + +## Overview +This repository contains solutions to the tasks provided in Worksheet 1 and Worksheet 2 of the advanced software development module. +The tasks explore advanced C++ concepts, such as memory management, template adaptation, and unit testing. Each worksheet demonstrates +the practical application of these concepts through structured tasks and accompanying documentation. + +--- + +## Repository Structure + +``` +/ +├── worksheet_one/ +│ ├── .vscode/ # IDE configuration files +│ ├── docs/ # Documentation for Worksheet 1 +│ ├── task_1/ # Implements Task 1: File parsing and validation +│ ├── task_2/ # Implements Task 2: Data processing using templates +│ ├── task_3/ # Implements Task 3: Advanced data manipulation +│ ├── task_4/ # Integrates features from previous tasks +│ ├── tasks_revisited/ # Combines tasks 2 and 3 using templates for reusability +│ +├── worksheet_two/ +│ ├── .vscode/ # IDE configuration files +│ ├── docs/ # Documentation for Worksheet 2 +│ ├── simpletest/ # Testing framework for Worksheet Two +│ ├── task_1_bump_allocator/ # Implements a custom memory allocator +│ ├── task_2_unit_tests/ # Unit tests for validating functionality +│ ├── task_3/ # Extends features with advanced functionality +│ +├── worksheet_zero/ +│ ├── TicTacToe/ # Simple implementation of the TicTacToe game +│ └── hello_world.cpp # Basic "Hello, World!" example in C++ +``` + +--- + +## Getting Started + +### Prerequisites +- **C++ Compiler**: Ensure you have a C++17 or later compatible compiler (e.g., GCC or Clang). +- **CMake**: To build and manage the project. +- **Testing Framework**: SimpleTest (provided in Worksheet Two). + +### Clone the Repository +```bash +git clone <repository-link> +cd GitLab_repo +``` + +--- + +## Worksheet One + +### Task Highlights +1. **Task 1**: File Parsing and Validation + - Parses input files to extract relevant data. + - Validates the data against predefined criteria. + - Documentation: See `worksheet_one/docs/task_1.md` for detailed instructions. + +2. **Task 2**: Data Processing Using Templates + - Implements template-based functions for processing and transforming data. + - Focuses on code reusability and modularity. + - Documentation: See `worksheet_one/docs/task_2.md` for design details. + +3. **Task 3**: Advanced Data Manipulation + - Applies advanced techniques to manipulate and process complex datasets. + - Introduces optimization strategies for efficient computation. + - Documentation: Refer to `worksheet_one/docs/task_3.md` for methodology. + +4. **Task 4**: Integration of Features + - Combines features from previous tasks into a cohesive solution. + - Focuses on system design and integration testing. + - Documentation: See `worksheet_one/docs/task_4.md`. + +5. **Tasks Revisited**: Template Adaptation + - Revisits Tasks 2 and 3 to create a reusable, template-based solution. + - Documentation: See `worksheet_one/docs/template_adaptation.md`. + +--- + +## Worksheet Two + +### Task Highlights +1. **Task 1 (Bump Allocator)**: + - Implements a custom memory allocator using the bump allocation strategy. + - Optimizes memory allocation and deallocation for specific use cases. + - Documentation: See `worksheet_two/docs/task_1_bump_allocator.md`. + +2. **Task 2 (Unit Tests)**: + - Develops unit tests to validate functionality and catch edge cases. + - Focuses on verifying the robustness and reliability of the code. + - Documentation: See `worksheet_two/docs/task_2_unit_tests.md`. + +3. **Task 3**: + - Extends features by integrating additional functionality. + - Explores advanced techniques to enhance the solution. + - Documentation: Refer to `worksheet_two/docs/task_3.md`. + +4. **Testing Framework**: SimpleTest + - Used for validating the outputs of the tasks. + - Instructions: See `worksheet_two/docs/simpletest.md` for usage. + +--- + +## Demonstration + +### Running the Code +- Navigate to the desired task directory. +- Use the provided Makefile or follow the build instructions: + ```bash + make + ./run_task + ``` + +### Example Demonstrations +1. **Worksheet One - Task 1**: + ```bash + cd worksheet_one/task_1 + make + ./run_task1 input_file.txt + ``` + Example Output: + ```plaintext + Successfully parsed 50 records. + Validation complete: 48 valid, 2 invalid. + ``` + +2. **Worksheet Two - Task 1 (Bump Allocator)**: + ```bash + cd worksheet_two/task_1_bump_allocator + make + ./run_allocator + ``` + Example Output: + ```plaintext + Allocated 1024 bytes of memory successfully. + Memory deallocation completed. + ``` + +3. **Unit Tests**: + ```bash + cd worksheet_two/task_2_unit_tests + make test + ``` + Example Output: + ```plaintext + Running all test cases... + Test 1: Passed. + Test 2: Passed. + All tests completed successfully. + ``` + +--- + +## Additional Notes + +- Ensure all dependencies are installed before running the tasks. +- Refer to the `docs/` folder for detailed instructions and design documents. +- For troubleshooting, consult the specifications in `worksheet 1.pdf` and `worksheet 2.pdf`. + +--- + +## Contact +For any issues, please create a GitLab issue or contact the repository maintainer. -- GitLab