Programowanie obiektowe W+P 

Kod kursu: ETD006202
Forma zajęć: wykład + projekt
Wymiar:  20020 (30h W, 30h P), ECTS: 1 + 1
Opiekun kursu: dr inż. Krzysztof Urbański
Konsultacje: wemif.net/dydaktyka
Zaliczenie wykładu: kolokwium

Wyniki


Składowe oceny za projekt

  1. Sprawne posługiwanie się pojęciami i mechanizmami OOP w praktyce (na pewno nie przejdzie "boska klasa").
  2. Systematyczne raportowanie postępów prac. Będą to kolejne etapy realizacji projektu programistycznego, począwszy od jego założeń, diagramów UML, dobranie optymalnego wzorca projektowego, wybór języka programowania, przygotowanie testów jednostkowych, implementacja i demonstracja działającego (o słodka naiwności!) produktu końcowego.
  3. Umiejętność wykonania elementu będącego częścią większej całości (np. GUI do istniejącego wielowątkowego, wbudowanego serwera TCP).
  4. Umiejętność pracy zespołowej (dotyczy projektów, w których studenci wykonują elementy składowe większego systemu). W szczególności jest to radzenie sobie z czarnym scenariuszem "inny zespół nawalił, jak tu udowodnić, że dobrze wykonałem swoje zadanie".
  5. Dokumentowanie postępów prac (krótkie, zwięzłe raporty), posługiwanie się systemem kontroli wersji (preferuję GIT, można założyć bezpłatne konto na github'ie).
Obecność na zajęciach projektowych nie jest obowiązkowa, ale punkt (2) z powyższej listy sugeruje pojawianie się na zajęciach co pewien czas z kolejnym raportem.
Jak na elektroników cyfrowych przystało, wasze projekty nie będą zupełnie jałowe i oderwane od sprzętu. Mamy zapas zestawów iMX53QSB, działających pod kontrolą embedded Linux, docelowo część projektów będzie uruchomiona właśnie na tych urządzeniach. Szczegóły techniczne uzgodnimy w trakcie semestru.

Poziom ambicji na projekcie

Wymagania niezbędne dla każdego projektu (brak jednego lub więcej warunków dyskwalifikuje projekt):
  • Przynajmniej 2 diagramy UML: przypadków użycia + dowolny inny
  • Projekt wrzucony na github
  • Śladowe ilości testów jednostkowych
Poziom trudności vs. ocena:
  • Opcja 3.0+: obiektowy projekt bazujący na jednym z wzorców projektowych (design patterns) - ale z wykluczeniem singletonu! Dowolny obiektowo zorientowany języku programowania, np. C#. Coś jak projekt z PA, ale nie może to być "boska klasa" albo "u mnie działa".
  • Opcja 4.0+: Sensowne zastosowanie wzorca metoda wytwórcza lub fabryka.
  • Opcja 5.0: Wzorzec MVC. Hybrydowy projekt będący implementacją pewnego systemu (np. wirtualne laboratorium, budynek inteligentny).
  • Opcja 5.5: Prowadzący kurs pada na kolana na widok projektu, ucząc się przy okazji nowych rzeczy.