Skip to content

BestSithInEU/cse211-fall2025-project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 

Repository files navigation

Yeditepe University Logo

CSE 211 — Data Structures

Term Project


Yeditepe University CSE Fall 2025-2026



Instructor: Batuhan Edgüer



Navigation

Download · Requirements · Structure · Technical · STL Rules · Testing · UML · Mistakes · Submit · Checklist · Tools



Table of Contents

Expand / Collapse
§ Section Description
1 Download Your Project Get your assignment files
2 Quick Start Get started in 4 steps
3 Hard Requirements Non-negotiable requirements
4 Project Structure Directory organization
5 Technical Requirements Language, compiler, build targets
6 STL Restrictions What you can and cannot use
7 Testing Requirements Test coverage expectations
8 UML & Documentation Required diagrams
9 Common Mistakes to Avoid Critical errors to prevent
10 Submission Format How to submit your work
11 Pre-Submission Checklist Final verification
12 Tools & Libraries Recommended resources



↓ Download Your Project


We have split the project into two document types:

Document Description Priority
base.pdf General specification with shared requirements, data formats, and technical constraints. Applies to everyone. Read First
PROJ-XX.pdf Your specific assignment describing the unique problem your group must solve. Read Second



► Quick Start

1. Download base.pdf and read it thoroughly (SERIOUSLY!)
2. Download your assigned PROJ-XX.pdf
3. Set up your project using the structure below
4. Implement, test, document, present!



⚠ Hard Requirements

Caution

Missing any of these requirements = significant point loss!

Requirement Description
Custom Data Structures Implement your own — std::vector, std::map, std::list etc. are NOT allowed
Build System Makefile or CMake with make, make test, make clean targets
Data Directory Read input from data/ folder with multiple test files
Visual Frontend GUI or TUI that visualizes your solution
Testing Unit tests + edge cases + integration tests
UML Diagrams Class diagram + one behavioral diagram (sequence, activity, etc.)
Modular Code Separate headers/source files — no 1000-line monster files
Presentation 15-minute demo + code walkthrough + Q&A



◈ Project Structure

Source Code

project/
│
├── include/
│   ├── data_structures/    ← Custom DS headers
│   ├── core/               ← Core logic headers
│   └── utils/              ← Utility headers
│
├── src/
│   ├── data_structures/    ← DS implementations
│   ├── core/               ← Core logic
│   ├── utils/              ← Utilities
│   └── main.cpp            ← Entry point
│
└── frontend/               ← GUI/TUI code

Testing & Data

project/
│
├── tests/
│   ├── unit/               ← Unit tests
│   ├── integration/        ← Integration tests
│   └── edge_cases/         ← Boundary tests
│
├── data/
│   ├── input_default.json  ← Default input
│   ├── edge_case_*.json    ← Edge cases
│   └── expected_*.json     ← Expected outputs
│
└── docs/
    └── uml/                ← UML diagrams

Root Files

File Purpose
Makefile Build system (or CMakeLists.txt)
.clang-format Code formatting configuration
README.md Project documentation
Doxyfile Documentation generator config



⚙ Technical Requirements

Language & Compiler

Requirement Specification
Language C++17 or later
Compiler g++ or clang++
Platforms Linux (Ubuntu 20.04+) · Windows

Required Build Targets

Target Description
make Build the project
make run Build and run
make test Run all tests
make clean Remove build artifacts
make deps Install dependencies



⊘ STL Restrictions

NOT Allowed Allowed
std::vector std::string
std::list std::fstream / std::iostream
std::map std::unique_ptr / std::shared_ptr
std::set <algorithm> on primitive arrays
std::unordered_map <functional>
std::queue
std::stack
std::deque
std::array
std::priority_queue

Important

All custom data structures must use pointer-based implementation. Array-based implementations are NOT allowed.




⧩ Testing Requirements

Your tests should cover:

Category Test Cases
Construction Default constructor, parameterized constructor
Insertion Beginning, middle, end, duplicate handling
Deletion Beginning, middle, end, non-existent element
Search Existing element, non-existent element
Edge Cases Empty structure, single element, full capacity
Boundary Maximum size, minimum values, overflow
► Test Organization Structure
tests/
├── test_main.cpp              ← Test runner
├── unit/
│   ├── test_data_structures.cpp
│   ├── test_algorithms.cpp
│   └── test_utils.cpp
├── integration/
│   ├── test_workflow.cpp
│   └── test_io.cpp
├── edge_cases/
│   ├── test_empty.cpp
│   ├── test_single.cpp
│   └── test_limits.cpp
└── fixtures/
    └── test_helpers.hpp
► Memory Testing with Valgrind
valgrind --leak-check=full --show-leak-kinds=all ./build/bin/tests

Expected clean output:

All heap blocks were freed -- no leaks are possible



△ UML & Documentation

Required Diagrams

Diagram Purpose Required
Class Diagram Shows structure, attributes, methods, relationships ✓ Yes
Sequence Diagram Shows object interactions over time Recommended
Component Diagram Shows high-level module organization Optional

UML Notation Reference

Relationship Notation
Inheritance Solid line with hollow triangle
Interface Implementation Dashed line with hollow triangle
Composition Solid line with filled diamond
Aggregation Solid line with hollow diamond
Association Plain solid line
Dependency Dashed line with arrow
► UML Tools
Tool Type Link
PlantUML Text-based, version control friendly plantuml.com
Draw.io Free web-based editor draw.io
Mermaid Markdown-integrated mermaid.js.org
Umbrello Open source desktop app umbrello.kde.org
StarUML Professional modeling tool staruml.io



✗ Common Mistakes to Avoid

Warning

These mistakes will cost you significant points!

✗ Mistake ✓ Solution
Using std::vector or other STL containers Implement your own data structures
No Makefile (we can't build = we can't grade) Include Makefile or CMakeLists.txt
Hardcoded paths or no data/ directory Use relative paths, read from data/
No tests or only testing "happy path" Write unit, integration, and edge case tests
All code in one giant file Modularize: separate headers and source files
Frontend that doesn't visualize the solution Actually show the algorithm/data in action



◰ Submission Format

GroupID_ProblemNumber.zip

Example: Group05_01.zip


Important

Submit source code only! Do NOT include:

  • Compiled binaries (*.o, *.exe, *.so)
  • Build directories (build/, bin/)
  • IDE files (.idea/, .vscode/)
  • Version control (.git/)
  • Temporary files (*.tmp, *.log)
  • External libraries (fetch via make deps)

Fresh Build Test

Before submitting, extract your zip to a new directory and verify:

unzip Group05_01.zip -d /tmp/test
cd /tmp/test/Group05_01
make deps
make
make test
make run



✓ Pre-Submission Checklist

Category Item
Build Code compiles without errors
Build No compiler warnings
Testing All tests pass
Testing No memory leaks (Valgrind clean)
Code Code is formatted (clang-format)
Code No prohibited STL containers
Code Minimum two custom data structures
Code Pointer-based implementation
Docs Documentation generates (Doxygen)
Docs README is complete
Docs UML diagrams included
Docs Presentation slides included
App Frontend works
App Data files included in data/



⚒️ Tools & Libraries

Core Tools

Tool Purpose Link
GNU Make Build automation gnu.org/software/make
CMake Cross-platform build system cmake.org
GCC GNU Compiler Collection gcc.gnu.org
Clang LLVM C++ compiler clang.llvm.org
clang-format Code formatter clang.llvm.org/docs/ClangFormat.html
Doxygen Documentation generator doxygen.nl
Valgrind Memory debugger valgrind.org

Frontend Frameworks

► C++ GUI Libraries
Framework Description Link
Qt Cross-platform, feature-rich qt.io
Dear ImGui Immediate mode GUI github.com/ocornut/imgui
wxWidgets Native look-and-feel wxwidgets.org
FLTK Lightweight, fast fltk.org
GTKmm C++ bindings for GTK gtkmm.org
Nana Modern C++ GUI library github.com/cnjinhao/nana
► Terminal UI (TUI) Libraries
Library Description Link
ncurses Classic terminal UI invisible-island.net/ncurses
FTXUI Modern C++ TUI github.com/ArthurSonzogni/FTXUI
termbox2 Minimal terminal library github.com/termbox/termbox2
► Web Interface (REST API)
Framework Description Link
Crow Fast micro web framework crowcpp.org
Drogon High-performance HTTP framework github.com/drogonframework/drogon
cpp-httplib Single-header HTTP library github.com/yhirose/cpp-httplib
Pistache Modern HTTP framework pistacheio.github.io/pistache
► Desktop/Hybrid Apps
Framework Description Link
Electron Web tech for desktop (with C++ addon) electronjs.org
Tauri Lightweight alternative to Electron tauri.app
Neutralinojs Lightweight cross-platform apps neutralino.js.org

C++/Python Integration

Tool Description Link
pybind11 Modern C++/Python bindings (recommended) github.com/pybind/pybind11
ctypes Python built-in FFI docs.python.org/3/library/ctypes.html
cffi C Foreign Function Interface cffi.readthedocs.io
SWIG Multi-language wrapper generator swig.org
Boost.Python Boost C++/Python interop boost.org/libs/python

Testing Frameworks

Framework Description Link
Catch2 Modern header-only test framework github.com/catchorg/Catch2
Google Test Full-featured testing framework github.com/google/googletest
doctest Fastest single-header testing github.com/doctest/doctest
CTest CMake's testing driver cmake.org/cmake/help/latest/manual/ctest.1.html

Data Parsing Libraries

Library Format Link
nlohmann/json JSON github.com/nlohmann/json
RapidJSON JSON (high performance) rapidjson.org
simdjson JSON (fastest) github.com/simdjson/simdjson
yaml-cpp YAML github.com/jbeder/yaml-cpp
fast-cpp-csv-parser CSV github.com/ben-strasser/fast-cpp-csv-parser
pugixml XML pugixml.org
toml++ TOML github.com/marzer/tomlplusplus



For complete details, read base.pdf


Good luck with your projects!



CSE 211 — Data Structures · Term Project · 2025-2026 Fall Semester

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published