Module also offered within study programmes:
General information:
Name:
Object-oriented Programming 1
Course of study:
2018/2019
Code:
JIS-1-402-s
Faculty of:
Physics and Applied Computer Science
Study level:
First-cycle studies
Specialty:
-
Field of study:
Applied Computer Science
Semester:
4
Profile of education:
Academic (A)
Lecture language:
Polish
Form and type of study:
Full-time studies
Responsible teacher:
dr hab. inż. Mindur Bartosz (mindur@agh.edu.pl)
Academic teachers:
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)
Module summary

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

Description of learning outcomes for module
MLO code Student after module completion has the knowledge/ knows how to/is able to Connections with FLO Method of learning outcomes verification (form of completion)
Social competence
M_K001 Student potrafi samodzielnie pracować i zdobyć odpowiednią wiedzę i umiejętności niezbędne do realizacji postawionego przed nim zadania. IS1A_K01 Activity during classes,
Execution of laboratory classes
M_K002 Student ma świadomość odpowiedzialności za własną pracę. IS1A_K01 Participation in a discussion,
Execution of laboratory classes
Skills
M_U001 Student potrafi napisać prosty program w języku C++ z wykorzystaniem paradygmatów programowania obiektowego. IS1A_U04, IS1A_U01 Activity during classes,
Execution of laboratory classes
M_U002 Student potrafi napisać prosty program w języku C++ łącząc go z elementami biblioteki standardowej. IS1A_U04, IS1A_U01 Examination,
Execution of laboratory classes
Knowledge
M_W001 Student zna proces kompilacji oraz konsolidacji kodów źródłowych do kodu maszynowego. IS1A_W02 Activity during classes,
Examination,
Execution of laboratory classes
M_W002 Student zna podstawowe cechy i elementy charakterystyczne dla obiektowych języków programowania. IS1A_W03, IS1A_W02 Activity during classes,
Examination,
Execution of exercises
M_W003 Student zna elementy wchodzące w skład biblioteki standardowej języka C++. IS1A_W03, IS1A_W02 Activity during classes,
Examination,
Execution of laboratory classes
M_W004 Student zna i potrafi wyjaśnić działanie słów kluczowych oraz konstrukcji stosowanych w języku C++. IS1A_W03, IS1A_W02 Activity during classes,
Examination,
Execution of laboratory classes
FLO matrix in relation to forms of classes
MLO code Student after module completion has the knowledge/ knows how to/is able to Form of classes
Lecture
Audit. classes
Lab. classes
Project classes
Conv. seminar
Seminar classes
Pract. classes
Zaj. terenowe
Zaj. warsztatowe
Others
E-learning
Social competence
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ę. - - + - - - - - - - -
Skills
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. + - + - - - - - - - -
Knowledge
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++. + - + - - - - - - - -
Module content
Lectures:
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.

Laboratory classes:
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++

Student workload (ECTS credits balance)
Student activity form Student workload
Summary student workload 148 h
Module ECTS credits 5 ECTS
Examination or Final test 3 h
Realization of independently performed tasks 45 h
Participation in lectures 30 h
Participation in laboratory classes 30 h
Preparation for classes 40 h
Additional information
Method of calculating the final grade:

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).

Prerequisites and additional requirements:

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++.

Recommended literature and teaching resources:

• 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

Scientific publications of module course instructors related to the topic of the module:

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).

Additional information:

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/