Moduł oferowany także w ramach programów studiów:
Informacje ogólne:
Nazwa:
Programowanie obiektowe 1
Tok studiów:
2018/2019
Kod:
JIS-1-402-s
Wydział:
Fizyki i Informatyki Stosowanej
Poziom studiów:
Studia I stopnia
Specjalność:
-
Kierunek:
Informatyka Stosowana
Semestr:
4
Profil kształcenia:
Ogólnoakademicki (A)
Język wykładowy:
Polski
Forma i tryb studiów:
Stacjonarne
Osoba odpowiedzialna:
dr hab. inż. Mindur Bartosz (mindur@agh.edu.pl)
Osoby prowadzące:
dr hab. inż. Bołd Tomasz (tomasz.bold@fis.agh.edu.pl)
dr inż. Gach Grzegorz (grzegorz.gach@motorolasolutions.com)
dr inż. Rachwał Bartłomiej (brachwal@agh.edu.pl)
Krótka charakterystyka modułu

Moduł porusza tematykę programowania obiektowego z wykorzystaniem języka C++.

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_W001 Student zna proces kompilacji oraz konsolidacji kodów źródłowych do kodu maszynowego. IS1A_W02 Aktywność na zajęciach,
Egzamin,
Wykonanie ćwiczeń laboratoryjnych
M_W002 Student zna podstawowe cechy i elementy charakterystyczne dla obiektowych języków programowania. IS1A_W03, IS1A_W02 Aktywność na zajęciach,
Egzamin,
Wykonanie ćwiczeń
M_W003 Student zna elementy wchodzące w skład biblioteki standardowej języka C++. IS1A_W03, IS1A_W02 Aktywność na zajęciach,
Egzamin,
Wykonanie ćwiczeń laboratoryjnych
M_W004 Student zna i potrafi wyjaśnić działanie słów kluczowych oraz konstrukcji stosowanych w języku C++. IS1A_W03, IS1A_W02 Aktywność na zajęciach,
Egzamin,
Wykonanie ćwiczeń laboratoryjnych
Umiejętności
M_U001 Student potrafi napisać prosty program w języku C++ z wykorzystaniem paradygmatów programowania obiektowego. IS1A_U04, IS1A_U01 Aktywność na zajęciach,
Wykonanie ćwiczeń laboratoryjnych
M_U002 Student potrafi napisać prosty program w języku C++ łącząc go z elementami biblioteki standardowej. IS1A_U04, IS1A_U01 Egzamin,
Wykonanie ćwiczeń laboratoryjnych
Kompetencje społeczne
M_K001 Student potrafi samodzielnie pracować i zdobyć odpowiednią wiedzę i umiejętności niezbędne do realizacji postawionego przed nim zadania. IS1A_K01 Aktywność na zajęciach,
Wykonanie ćwiczeń laboratoryjnych
M_K002 Student ma świadomość odpowiedzialności za własną pracę. IS1A_K01 Udział w dyskusji,
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_W001 Student zna proces kompilacji oraz konsolidacji kodów źródłowych do kodu maszynowego. + - + - - - - - - - -
M_W002 Student zna podstawowe cechy i elementy charakterystyczne dla obiektowych języków programowania. + - + - - - - - - - -
M_W003 Student zna elementy wchodzące w skład biblioteki standardowej języka C++. + - + - - - - - - - -
M_W004 Student zna i potrafi wyjaśnić działanie słów kluczowych oraz konstrukcji stosowanych w języku C++. + - + - - - - - - - -
Umiejętności
M_U001 Student potrafi napisać prosty program w języku C++ z wykorzystaniem paradygmatów programowania obiektowego. + - + - - - - - - - -
M_U002 Student potrafi napisać prosty program w języku C++ łącząc go z elementami biblioteki standardowej. + - + - - - - - - - -
Kompetencje społeczne
M_K001 Student potrafi samodzielnie pracować i zdobyć odpowiednią wiedzę i umiejętności niezbędne do realizacji postawionego przed nim zadania. - - + - - - - - - - -
M_K002 Student ma świadomość odpowiedzialności za własną pracę. - - + - - - - - - - -
Treść modułu zajęć (program wykładów i pozostałych zajęć)
Wykład:
Tematyka

Tematyka
0. Przypomnienie przeładowanie operatorów.
1. Dziedziczenie oraz funkcje wirtualne.
2. Wyjątki i ich obsługa.
3. Szablony funkcji.
4. Szablony klas.
5. Biblioteka WE/WY.
6. Biblioteka standardowa C++: kontenery, iteratory, algorytmy, allokatory.
7. Rozszerzania języka C++ o: prawe referencje, stałe wyrażenia, wyrażenia lambda, operatory przenoszenia.

Ćwiczenia laboratoryjne:
Tematyka

Tematyka
0. Przeładowanie operatory (przypomnienie)
1. Dziedziczenie i funkcję wirtualne (rozszerzone wykorzystanie)
Efekty kształcenia
• student umie wykorzystać dziedziczenie do tworzenia hierarchii klas
• student umie napisać program wykorzystujący dziedziczenie oraz funkcje wirtualne
2. Wyjątki i ich obsługa
Efekty kształcenia
• student umie wykorzystać mechanizm obsługi wyjątków
• student umie napisać program wykorzystujący mechanizm obsługi wyjątków
3. Szablony funkcji i klas
Efekty kształcenia
• student potrafi napisać funkcję realizujące określone zadanie dla różnych typów danych z wykorzystaniem szablonów
• student umie stworzyć parametryzowane typy danych z wykorzystanie szablonów klas
• student zna pojęcie statycznego polimorfizmu
4. Operacje wejścia/wyjścia
Efekty kształcenia
• student umie wykorzystać moduły biblioteczne służące do odczytu/zapisu danych ze strumieni
• student umie napisać manipulatory modyfikujące standardowe zachowanie formatowanego wejścia i wyjścia
• student potrafi wczytać i zapisać dane w formie binarnej
• student zna ograniczenia biblioteki wejścia/wyjścia
5. Biblioteka STL
Efekty kształcenia
• student potrafi wykorzystać odpowiedni typ kontenera do przechowywanie danych niezbędnych do realizacji określonego zadania
• student potrafi wykorzystać iteratory do poruszania się po kontenerach
6. Rozszerzania języka C++
• student zna nowoczesne metody projektowania programów zgodnych ze standardem języka C++
• student potrafi samodzielnie napisać program wykorzystujący nowoczesne elementy języka C++

Nakład pracy studenta (bilans punktów ECTS)
Forma aktywności studenta Obciążenie studenta
Sumaryczne obciążenie pracą studenta 148 godz
Punkty ECTS za moduł 5 ECTS
Egzamin lub kolokwium zaliczeniowe 3 godz
Samodzielne studiowanie tematyki zajęć 45 godz
Udział w wykładach 30 godz
Udział w ćwiczeniach laboratoryjnych 30 godz
Przygotowanie do zajęć 40 godz
Pozostałe informacje
Sposób obliczania oceny końcowej:

Uzyskanie pozytywnej oceny końcowej wymaga uzyskania pozytywnej oceny z wszystkich form zajęć.

Pozytywna ocena otrzymana z dowolnej formy zajęć nie może być poprawiana.

Ocena końcowa równa się średniej arytmetyczna z ocen z zaliczenia laboratorium z terminu podstawowego oraz wszystkich ocen z egzaminu, przy czym do obliczania średniej brany jest wynik procentowy.

Dodatkowo możliwe jest podwyższenie oceny końcowej, w przypadku studentów, którzy wykazali się ponadprzeciętną aktywnością podczas zajęć wykładowych (np. biorąc aktywny udział w ankietach i udzielając poprawnych odpowiedzi na pytania w nich zawarte).

Wymagania wstępne i dodatkowe:

Wymagania wstępne:
- Posiadanie aktywnego konta na serwerze taurus i orion.
- Posiadanie aktywnego konta w systemie UPEL.
- Znajomość podstaw obsługi Linuxa (w szczególności polecenia konsolowe).
- Znajomość języka C.
- Znajomość podstaw języka C++.

Zalecana literatura i pomoce naukowe:

• Materiały z wykładu
• Grębosz J.,”Symfonia C++ Standard”, Edition2000 2006
• Eckel B., “Thinking in C++”, Helion 2002 / Prentice Hall 2000
• Stroustrup B., “Język C++, WNT 2002 / The C++ Programming Language”, Addison– Wesley 2000
• 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

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, JINST 7, T10004 (2012).
2. B. Mindur, T. Fiutowski, S. Koperny, P. Wiącek and W. Dąbrowski, DAQ software for GEM-based imaging system, JINST 13, C12016 (2018).

Informacje dodatkowe:

Wszystkie efekty kształcenia podane w syllabusie przedmiotu podlegają weryfikacji i ocenie na zajęciach laboratoryjnych na podstawie przedstawionych rozwiązań zadań oraz na podstawie egzaminu.

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ż dwóch 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ż dwóch 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ęć.
Wykład:
- Obecność na wykładzie: zgodnie z Regulaminem Studiów AGH.

Zasady zaliczania zajęć:
Ćwiczenia laboratoryjne:
- Obecność na laboratorium jest obowiązkowa.
- Każdą nieobecność należy usprawiedliwiać od razu na następnych zajęciach na których jest się obecnym, jednak nie później niż w ciągu 14 dni. Dodatkowo należy ustalić z prowadzącym zajęcia ewentualny sposób ich odrobienia.
- Dopuszczalne są dwie nieobecności nieusprawiedliwione (efektywnie za 0 pkt. z danych zajęć).
- Na każdych zajęciach należy być przygotowanym ze wszystkich poprzednich wykładów oraz ćwiczeń.
- Każdy stworzony fragment kodu ma zostać opatrzony dokumentacją (w formacie podanym przez prowadzącego ćwiczenia).
- Zadania należy wykonywać samodzielnie bez żadnych pomocy (wykłady, google, itp.).
- Na każdych zajęciach kody źródłowe muszą znajdować się w takim podkatalogu dla którego prawa dostępu są tylko i wyłącznie dla właściciela.
- Na końcu zajęć należy prowadzącemu oddać zadania (w określony przez niego sposób), które podlegają ocenianiu jak również potwierdzają obecność.
- Programy nieskończone na zajęciach należy dokończyć we własnym zakresie. Nie należy ich przesyłać, ale mogą być wymagane na kolejnych spotkaniach jako punkt startowy innego ćwiczenia.
- Każde zajęcia mają taką samą wagę (10 pkt.).
- Zadania ocenianie są wg algorytmu:
- – Warunkiem przystąpienia do oceniania programu jest jego poprawna kompilacja (bez błędów).
- – Dokumentacja – 1 pkt.
- – Poprawna kompilacja (bez ostrzeżeń) – 2 pkt.
- – Poprawne wykonanie (odpowiednie wyjście, brak wycieków pamięci itp.) – 3 pkt.
- – Ocena kodu (pod względem projektowym, zgodności z OOP, przejrzystości oraz sposobu implantacji) – 4 pkt.
- – W sumie 10 pkt.
- – Programy niezgodne z tematem/celem zadania, ale kompilujące się (i dające potencjalnie “poprawne” wyjście) będą oceniane na 0 pkt.
- Na zajęciach można korzystać z dowolnego edytora tekstowego, jednak takiego który nie udziela podpowiedzi.
- Pierwsze zajęcia nie są brane pod uwagę przy obliczaniu oceny końcowej z laboratorium.
- 1-4 zajęcia będą zajęciami w parach (losowo wybieranych lub przez prowadzącego ćwiczenia) – zasady jak w każdym innym przypadku
- Max. 4 razy w semestrze odbędą się zajęcia bez oceny – w ramach konsultacji/nauki z możliwością popełniania błędów bez ponoszenia konsekwencji
- Jest jeden termin zaliczenia poprawkowego:
- – Przysługuje każdemu studentowi, który nie uzyskał zaliczenia w terminie podstawowym.
- – Student może poprawiać oceny z nie więcej niż dwóch zajęć (za maks. 20 pkt.), ocena z terminu poprawkowego liczona jest z uwzględnieniem poprawionych not z tych zajęć.
- – Zajęcia do poprawy wybiera prowadzący z CAŁEGO zakresu materiału.
- – Termin poprawy określony jest jako nie później niż w ostatnim tygodniu trwania zajęć. Termin ten może zostać wydłużony w przypadku niemożliwości wcześniejszego wyrównania zaległości wynikającego z usprawiedliwionych przyczyn.

Egzamin
- Warunkiem przystąpienia do egzaminu jest wcześniejsze uzyskanie pozytywnego zaliczenia z ćwiczeń laboratoryjnych.
- Egzamin przeprowadzany jest zgodnie z Regulaminem Studiów AGH.
- Egzamin odbywa się w formie pisemnej i ustnej, przy czym obie części są obowiązkowe.
- Ocena z każdego terminu egzaminu jest jedna, oceny cząstkowe z części pisemnej i ustnej nie są bezpośrednio określone i nie są podawane.
- Jedyną wiążącą oceną jest ta podana w systemie teleinformatycznym Uczelni.

Szczegółowe informacje organizacyjne dotyczące zajęć dostępne są na stronie:
http://taurus.fis.agh.edu.pl/~mindur/oop/