Skip to content

Hybrid Programming Project – combining low-level C modules with object-oriented architecture in Java/C++. Part of the Project-Based Learning (PBL) program at PUT. Students design a system that integrates memory-level data processing with high-level application logic, applying data structures, design patterns, and UML-based architecture.

Notifications You must be signed in to change notification settings

dataproctech/project_based_learning

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 

Repository files navigation

🧩 Project-Based Learning 2025/26

Hybrydowe programowanie: moduły niskopoziomowe (C) + architektura obiektowa (Java/C++)

Kierunek: Informatyka

Prowadzący: dr.inz. Serhii Baraban

Zespół: ...

Projekt: ...


📖 Opis projektu

Celem projektu jest stworzenie systemu łączącego:

  1. Moduł niskopoziomowy w języku C – odpowiedzialny za operacje na pamięci, struktury danych, parsowanie oraz przetwarzanie danych.
  2. Warstwę obiektową (Java lub C++) – implementującą logikę aplikacji, wzorce projektowe oraz interfejs użytkownika (konsolowy lub GUI).

Projekt musi demonstrować spójność architektury, integrację warstw oraz zastosowanie dobrych praktyk programistycznych.


🧱 Struktura projektu

📦 pbl-hybrid-project/
│
├── c_module/                  # moduł niskopoziomowy (C)
│   ├── src/                   # kod źródłowy C
│   ├── include/               # pliki nagłówkowe
│   ├── tests/                 # testy modułów C
│   ├── Makefile
│   └── README.md              # opis modułu C
│
├── oop_app/                   # aplikacja obiektowa (Java/C++)
│   ├── src/
│   ├── tests/
│   └── README.md              # dokumentacja warstwy OOP
│
├── integration/               # integracja C ↔ OOP
│   ├── formats/               # dokumentacja formatów wymiany danych
│   └── converters/            # ewentualne narzędzia pomocnicze
│
├── docs/
│   ├── UML/                   # diagramy klas, sekwencji
│   ├── architecture.md        # opis projektu
│   └── final_report_template.md
│
├── .gitignore
├── LICENSE (opcjonalnie)
└── README.md                  # główny opis projektu (poniżej)

🎯 Wymagania funkcjonalne

Każdy projekt musi zawierać:

✔ Moduł C:

  • minimum dwóch struktur danych (np. lista, kolejka, tablica mieszająca),
  • operacje na pamięci (alokacja dynamiczna, walidacja wskaźników),
  • parsowanie lub przetwarzanie danych (np. tekst, binaria, rekordy),
  • testy modułowe.

✔ Warstwa OOP:

  • klasy, dziedziczenie, interfejsy, polimorfizm,
  • zastosowanie co najmniej dwóch wzorców projektowych, np.
    Strategy, Factory, Observer, Singleton, Composite, Command,
  • testy jednostkowe,
  • logika aplikacji oparta o założenia projektu.

✔ Integracja:

  • przekazywanie danych z modułu C do warstwy OOP, np. poprzez:
    • pliki tekstowe/binarne,
    • JSON/CSV,
    • bufor pośredni,
  • pełna dokumentacja sposobu integracji.

📡 Komunikacja między warstwami

W pliku integration/formats/ umieść dokument opisujący:

  • strukturę danych wejściowych/wyjściowych,
  • format pliku wymiany,
  • przykład danych,
  • specyfikację konwertera (jeśli wymagany).

🧪 Testy

➤ C-module:

  • testy implementowane w C (np. Ceedling, Unity lub własny framework),
  • testy pokrywające struktury danych i krańcowe przypadki.

➤ OOP:

  • Java → JUnit
  • C++ → GoogleTest
  • testy klas, strategii, relacji między obiektami.

📝 Dokumentacja

W katalogu /docs powinny znaleźć się:

  • diagram klas UML,
  • diagram sekwencji,
  • opis architektury systemu,
  • opis integracji,
  • końcowy raport (szablon: final_report_template.md).

🚀 Uruchamianie projektu

1. Kompilacja modułu C:

cd c_module
make

2. Uruchomienie modułu:

./bin/module input.txt output.txt

3. Kompilacja aplikacji OOP:

(Java)

cd oop_app
./run.sh

(C++)

cd oop_app
mkdir build && cd build
cmake ..
make

👥 Role członków zespołu

  • Low-level Engineer (C) – implementacja modułów i struktur danych
  • Object-oriented Developer (Java/C++)
  • Architecture Designer (UML)
  • QA & Integration Engineer
  • Documentation Manager

✔ Kryteria oceny

Element Waga
Moduł C 30%
Warstwa OOP 25%
Integracja 15%
Dokumentacja 15%
Prezentacja 10%
GitHub aktywność 5%

📬 Kontakt do prowadzącego

dr.inz. Serhii Baraban Instytut Informatyki PP


🎉 Powodzenia!

About

Hybrid Programming Project – combining low-level C modules with object-oriented architecture in Java/C++. Part of the Project-Based Learning (PBL) program at PUT. Students design a system that integrates memory-level data processing with high-level application logic, applying data structures, design patterns, and UML-based architecture.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published