Moduł oferowany także w ramach programów studiów:
Informacje ogólne:
Nazwa:
Zaawansowane techniki programowania
Tok studiów:
2018/2019
Kod:
JIS-2-006-SW-s
Wydział:
Fizyki i Informatyki Stosowanej
Poziom studiów:
Studia II stopnia
Specjalność:
Systemy wbudowane i rekonfigurowalne
Kierunek:
Informatyka Stosowana
Semestr:
0
Profil kształcenia:
Ogólnoakademicki (A)
Język wykładowy:
Polski i Angielski
Osoba odpowiedzialna:
dr hab. inż. Mindur Bartosz (mindur@agh.edu.pl)
Osoby prowadzące:
dr hab. inż. Mindur Bartosz (mindur@agh.edu.pl)
Krótka charakterystyka modułu

Tematyka zajęć dotyczy zaawansowanych aspektów programowania (w różnych językach), pozwalających na szybkie tworzenie wydajnego oraz bezpiecznego kodu.

Opis efektów kształcenia dla modułu zajęć
Kod EKM Student, który zaliczył moduł zajęć wie/umie/potrafi Powiązania z EKK Sposób weryfikacji efektów kształcenia (forma zaliczeń)
Wiedza
M_W008 Student zna zaawansowane cechy i elementy charakterystyczne dla obiektowych i uogólnionych języków programowania. IS2A_W05 Aktywność na zajęciach,
Referat,
Wykonanie projektu,
Wykonanie ćwiczeń laboratoryjnych
M_W009 Student zna i potrafi wyjaśnić działanie zaawansowanych konstrukcji używanych w językach wysokiego poziomu IS2A_W05 Aktywność na zajęciach,
Referat,
Wykonanie ćwiczeń laboratoryjnych
Umiejętności
M_U004 Student potrafi napisać program z wykorzystaniem paradygmatów programowania obiektowego połączonych z paradygmatami programowania uogólnionego. IS2A_U05, IS2A_U01 Aktywność na zajęciach,
Referat,
Wykonanie projektu,
Wykonanie ćwiczeń laboratoryjnych
M_U005 Student potrafi napisać program działający i komunikujący się bez udziału użytkownika IS2A_U05, IS2A_U01 Aktywność na zajęciach,
Wykonanie projektu,
Wykonanie ćwiczeń laboratoryjnych
M_U006 Student potrafi przygotować dokumentację oraz prezentację poświęconą zaawansowanym zagadnieniom programistycznym IS2A_U05, IS2A_U01 Aktywność na zajęciach,
Wykonanie projektu,
Wykonanie ćwiczeń laboratoryjnych
Kompetencje społeczne
M_K004 Student potrafi samodzielnie i w zespole pracować i zdobyć odpowiednią wiedzę i umiejętności niezbędne do realizacji postawionego przed nim zadania IS2A_K02, IS2A_K01 Aktywność na zajęciach,
Wykonanie projektu,
Wykonanie ćwiczeń laboratoryjnych
M_K005 Student ma świadomość odpowiedzialności za własną pracę. IS2A_K02, IS2A_K01 Aktywność na zajęciach,
Wykonanie projektu,
Wykonanie ćwiczeń laboratoryjnych
Matryca efektów kształcenia w odniesieniu do form zajęć
Kod EKM Student, który zaliczył moduł zajęć wie/umie/potrafi Forma zajęć
Wykład
Ćwicz. aud
Ćwicz. lab
Ćw. proj.
Konw.
Zaj. sem.
Zaj. prakt
Zaj. terenowe
Zaj. warsztatowe
Inne
E-learning
Wiedza
M_W008 Student zna zaawansowane cechy i elementy charakterystyczne dla obiektowych i uogólnionych języków programowania. - - + + - + - - - - -
M_W009 Student zna i potrafi wyjaśnić działanie zaawansowanych konstrukcji używanych w językach wysokiego poziomu - - + + - + - - - - -
Umiejętności
M_U004 Student potrafi napisać program z wykorzystaniem paradygmatów programowania obiektowego połączonych z paradygmatami programowania uogólnionego. - - + + - - - - - - -
M_U005 Student potrafi napisać program działający i komunikujący się bez udziału użytkownika - - + - - - - - - - -
M_U006 Student potrafi przygotować dokumentację oraz prezentację poświęconą zaawansowanym zagadnieniom programistycznym - - - + - + - - - - -
Kompetencje społeczne
M_K004 Student potrafi samodzielnie i w zespole pracować i zdobyć odpowiednią wiedzę i umiejętności niezbędne do realizacji postawionego przed nim zadania - - + + - - - - - - -
M_K005 Student ma świadomość odpowiedzialności za własną pracę. - - + + - - - - - - -
Treść modułu zajęć (program wykładów i pozostałych zajęć)
Ćwiczenia laboratoryjne:
Tematyka

Studenci w ramach prowadzonych zajęć laboratoryjnych będą samodzielnie pisać oraz testować i weryfikować krótkie programy komputerowe ilustrujące tematykę poruszaną w ramach seminarium.
Efekty kształcenia:
• student potrafi przedstawić cechy charakterystyczne obiektowych i uogólnionych języków programowania
• student potrafi napisać programy wykorzystując elementy charakterystyczne dla ww. języków
• student potrafi zastosować w swoich programach złożone komponenty wchodzące w skład biblioteki różnych dostępnych bibliotek

Ćwiczenia projektowe:
Tematyka

Studenci w dwuosobowych zespołach realizują projekty. Każdy zespół otrzymuje do wykonania inny, przydzielony losowo projekt. Punktem wyjścia dla studentów są dostarczone założenia i wskazówki projektowe. W ramach projektu należy w oparciu o cechy charakterystyczne programowania obiektowego i uogólnionego oraz zasoby biblioteczne napisać oprogramowanie realizujące w miarę optymalny sposób założone zadanie.

Zajęcia seminaryjne:
Tematyka

1. Szablony funkcji i klas
2. Biblioteka standardowa STL
3. Kontenery specjalne
4. Standard C++11, C++14, C++17
5. Wzorce projektowe
6. Efektywne zarządzanie pamięcią
7. Serializacja
8. Wątki i ich synchronizacja
9. Komunikacja międzyprocesowa
10. Niskopoziomowe programowanie sieci (TCP, UDP, Raw)
11. Tworzenie serwisów systemowych (Windows/Linux)
12. Tworzenie bibliotek statycznych i dynamicznych
13. Łączenie programów napisanych w różnych językach (np. Python <→ C, C++)
14. Techniki optymalizacji kodu (manualne i wykonywane przez kompilator)

Nakład pracy studenta (bilans punktów ECTS)
Forma aktywności studenta Obciążenie studenta
Sumaryczne obciążenie pracą studenta 160 godz
Punkty ECTS za moduł 6 ECTS
Udział w ćwiczeniach laboratoryjnych 20 godz
Udział w ćwiczeniach projektowych 20 godz
Udział w zajęciach seminaryjnych 20 godz
Wykonanie projektu 30 godz
Przygotowanie do zajęć 40 godz
Samodzielne studiowanie tematyki zajęć 30 godz
Pozostałe informacje
Sposób obliczania oceny końcowej:

Średnia ważona ocen z zajęć seminaryjnych (S) zaliczenia laboratorium (L) oraz zaliczenia projektu (P), przy czym do obliczania średniej brany jest wynik procentowy.
OK = 0.4*S + 0.3*L + 0.3*P

Wymagane jest uzyskanie pozytywnego wyniku z każdej formy zajęć.

Wymagania wstępne i dodatkowe:

Znajomość programowania w języku C, C++, Python, Java.

Zalecana literatura i pomoce naukowe:

• Seminars
• Josuttis N., “C++. Programowanie zorientowane obiektowo”, Helion 2003 / Object– Oriented Programming in C++, Wiley 2002
• Vandevoorde D., Josuttis N., “C++. Szablony”, Helion 2003 / “C++ Templates The Complete Guide”, Addison– Wesley 2002
• http://en.cppreference.com/w/cpp
• http://www.boost.org/

Publikacje naukowe osób prowadzących zajęcia związane z tematyką modułu:

1. B. Mindur and Ł. Jachymczyk, The Ethernet based protocol interface for compact data acquisition
systems, Jour. Instr. 7, T10004 (2012).

Informacje dodatkowe:
  • Sposób i tryb wyrównania zaległości powstałych wskutek nieobecności studenta
    na zajęciach:
    Ćwiczenia laboratoryjne:
    - Nieobecność na nie więcej niż jednych zajęciach wymaga od studenta
    samodzielnego (z możliwością wykorzystania godzin konsultacji) opanowania
    przerabianego na tych zajęciach materiału.
    - Nieusprawiedliwiona nieobecność na więcej niż jednych zajęciach oznacza brak
    możliwości zaliczenia ćwiczeń laboratoryjnych.
    - Student ma prawo do odrobienia każdej usprawiedliwionej nieobecności w
    wyznaczonym przez prowadzącego terminie – do dwóch tygodni od zaistnienia tej nieobecności lecz nie później jak w ostatnim tygodniu trwania zajęć.
  • Zasady zaliczania zajęć:
    Ćwiczenia laboratoryjne:
    - Podstawowym terminem uzyskania zaliczenia jest koniec zajęć w danym semestrze. Przy braku zaliczenia w terminie podstawowym student może przystąpić do poprawkowego zaliczania. Na terminie poprawkowym student może poprawiać ocenę tylko z jednego wybranego projektu, z którego student uzyskał ocenę niedostateczną. Oceny uzyskane w terminie poprawkowym zastępują odpowiednie oceny cząstkowe z „poprawianych” projektów tzn. są one uwzględniane podczas ponownego wyliczania oceny końcowej z laboratorium.
    - Student który bez usprawiedliwienia opuścił więcej niż jedne zajęcia nie
    uzyskuje zaliczenia ćwiczeń.

Ćwiczenia projektowe:
- Podstawowym terminem uzyskania zaliczenia jest koniec zajęć w danym semestrze,
- Projekt można wykonywać samodzielnie lub w grupach
- Projekt grupowy wymaga aktywnego uczestnictwa każdej z osób, które będą oceniane indywidualnie.
- Projekt można oddać tylko osobiście.

Seminarium:
- Student przedstawia na określonych zajęciach prezentację na wskazany przez prowadzącego temat.
- Temat oraz termin zostają ustalone z co najmniej dwutygodniowym wyprzedzeniem.
- Student przedstawia prowadzącemu prezentacje do akceptacji najpóźniej jeden tydzień przed terminem jej wygłoszenia.
- Nieusprawiedliwiona nieobecność na zajęciach podczas, których student maił wygłaszać prezentację lub brak zaakceptowanej prezentacji oznacza brak zaliczenia przedmiotu.

  • Nie wszystkie tematy z listy seminariów muszą być zrealizowane. Dopuszczalne jest także realizacja innych interesujących aspektów związanych z tematyką zajęć.
  • Szczegółowe informacje organizacyjne dotyczące trybu zaliczania zajęć i
    odrabiania zaległości dostępne są na stronie
    http://taurus.ftj.agh.edu.pl/~mindur/adv