Moduł oferowany także w ramach programów studiów:
Informacje ogólne:
Nazwa:
Język C++
Tok studiów:
2019/2020
Kod:
JMNB-1-304-s
Wydział:
Fizyki i Informatyki Stosowanej
Poziom studiów:
Studia I stopnia
Specjalność:
-
Kierunek:
Mikro- i nanotechnologie w biofizyce
Semestr:
3
Profil:
Ogólnoakademicki (A)
Język wykładowy:
Polski
Forma studiów:
Stacjonarne
Prowadzący moduł:
dr hab. inż. Krawczyk Małgorzata (krawczyk@fis.agh.edu.pl)
Treści programowe zapewniające uzyskanie efektów uczenia się dla modułu zajęć

Celem modułu jest poznanie języka programowania C++ w stopniu umożliwiającym samodzielne przeprowadzenie obliczeń i symulacji.

Opis efektów uczenia się dla modułu zajęć
Kod MEU Student, który zaliczył moduł zajęć zna i rozumie/potrafi/jest gotów do Powiązania z KEU Sposób weryfikacji i oceny efektów uczenia się osiągniętych przez studenta w ramach poszczególnych form zajęć i dla całego modułu zajęć
Wiedza: zna i rozumie
M_W001 Student wie kiedy stosować proceduralne, a kiedy obiektowe podejście do rozwiązywanego problemu. MNB1A_W02, MNB1A_W01, MNB1A_W03 Wykonanie ćwiczeń laboratoryjnych,
Kolokwium,
Aktywność na zajęciach
M_W002 Student rozumie istotę polimorfizmu i hermetyzacji. MNB1A_W02, MNB1A_W01, MNB1A_W03 Kolokwium,
Aktywność na zajęciach
Umiejętności: potrafi
M_U001 Student potrafi utworzyć klasę i wykorzystać mechanizm dziedziczenia do stworzenia odpowiedniej hierarchii klas. MNB1A_U04, MNB1A_U11, MNB1A_U05, MNB1A_U01 Wykonanie ćwiczeń laboratoryjnych,
Kolokwium,
Aktywność na zajęciach
M_U002 Student potrafi korzystać z programowania uogólnionego. MNB1A_U04, MNB1A_U05, MNB1A_U06, MNB1A_U01 Wykonanie ćwiczeń laboratoryjnych,
Kolokwium,
Aktywność na zajęciach
M_U003 Student umie zarządzać pamięcią w programie. MNB1A_U05, MNB1A_U06, MNB1A_U01 Wykonanie ćwiczeń laboratoryjnych,
Kolokwium,
Aktywność na zajęciach
Kompetencje społeczne: jest gotów do
M_K001 Student potrafi wykorzystać wiedzę informatyczną do rozwiązywania problemów inżynierskich w naukach ścisłych i przyrodniczych. MNB1A_K02, MNB1A_K05, MNB1A_K03 Wykonanie ćwiczeń laboratoryjnych,
Kolokwium,
Aktywność na zajęciach
Liczba godzin zajęć w ramach poszczególnych form zajęć:
SUMA (godz.)
Wykład
Ćwicz. aud
Ćwicz. lab
Ćw. proj.
Konw.
Zaj. sem.
Zaj. prakt
Zaj. terenowe
Zaj. warsztatowe
Prace kontr. przejść.
Lektorat
75 30 0 45 0 0 0 0 0 0 0 0
Matryca kierunkowych efektów uczenia się w odniesieniu do form zajęć i sposobu zaliczenia, które pozwalają na ich uzyskanie
Kod MEU Student, który zaliczył moduł zajęć zna i rozumie/potrafi/jest gotów do Forma zajęć dydaktycznych
Wykład
Ćwicz. aud
Ćwicz. lab
Ćw. proj.
Konw.
Zaj. sem.
Zaj. prakt
Zaj. terenowe
Zaj. warsztatowe
Prace kontr. przejść.
Lektorat
Wiedza
M_W001 Student wie kiedy stosować proceduralne, a kiedy obiektowe podejście do rozwiązywanego problemu. + - + - - - - - - - -
M_W002 Student rozumie istotę polimorfizmu i hermetyzacji. + - + - - - - - - - -
Umiejętności
M_U001 Student potrafi utworzyć klasę i wykorzystać mechanizm dziedziczenia do stworzenia odpowiedniej hierarchii klas. + - + - - - - - - - -
M_U002 Student potrafi korzystać z programowania uogólnionego. + - + - - - - - - - -
M_U003 Student umie zarządzać pamięcią w programie. - - - - - - - - - - -
Kompetencje społeczne
M_K001 Student potrafi wykorzystać wiedzę informatyczną do rozwiązywania problemów inżynierskich w naukach ścisłych i przyrodniczych. + - + - - - - - - - -
Nakład pracy studenta (bilans punktów ECTS)
Forma aktywności studenta Obciążenie studenta
Sumaryczne obciążenie pracą studenta 150 godz
Punkty ECTS za moduł 6 ECTS
Udział w zajęciach dydaktycznych/praktyka 75 godz
Przygotowanie do zajęć 45 godz
Samodzielne studiowanie tematyki zajęć 30 godz
Szczegółowe treści kształcenia w ramach poszczególnych form zajęć (szczegółowy program wykładów i pozostałych zajęć)
Wykład (30h):
  1. Wstęp

    • obiektowość w C++
    • standardy języka
    • słowa kluczowe języka
    • pierwszy program w C++
    • podstawy instrukcji sterujących

  2. Typy danych, zmienne

    • zmienne proste
    • typy liczbowe
    • typ znakowy
    • typ logiczny
    • operatory arytmetyczne
    • konwersja typu

  3. Typy złożone

    • ciągi znaków
    • struktury, wyliczenia
    • tablice, alokacja i zwalnianie pamięci
    • wskaźniki

  4. Instrukcje sterujące

    • instrukcje warunkowe
    • instrukcje iteracyjne

  5. Funkcje

    • przekazywanie wartości do funkcji
    • zwracanie wartości z funkcji
    • przeciążanie funkcji
    • szablony funkcji
    • funkcje anonimowe

  6. Klasy

    • konstruktor i destruktor
    • metody klas
    • dziedziczenie
    • szablony klas
    • przeciążenie metod
    • przeciążanie operatorów
    • klasy zaprzyjaźnione

  7. Biblioteka STL

    • kontenery
    • algorytmy

  8. Wyjątki

    • słowa kluczowe obsługi wyjątków
    • obsługa wyjątków
    • asercje

  9. Opreacje wejścia/wyjścia

    • strumienie
    • obiekty cout i cin
    • operacje na plikach

Ćwiczenia laboratoryjne (45h):
  1. Wprowadzenie

    • Student potrafi samodzielnie napisać program wypisujący komunikat na ekran
    • Student potrafi wykonywać operacje na zmiennych całkowitych i zmiennoprzecinkowych
    • Student potrafi skompilować i uruchomić napisany program

  2. Instrukcje sterujące

    • Student potrafi napisać złożoną instrukcję warunkową
    • Student potrafi skorzystać z konstrukcji switch
    • Student potrafi napisać pętle typu for i while
    • Student potrafi wykorzystać w programie argumenty wiersza poleceń

  3. Tablice

    • Student potrafi zaalokować i zwolnić tablice jedno- i dwuwymiarową
    • Student umie poruszać się po tablicy za pomocą indeksu
    • Student potrafi poruszać się po tablicy za pomocą wskaźnika

  4. Funkcje

    • Student potrafi przekazywać parametry do funkcji
    • Student umie zwracać wartości z funkcji
    • Student potrafi korzystać w wyrażeń lambda
    • Student potrafi tworzyć szablony funkcji

  5. Klasy

    • Student potrafi utworzyć klasę zawierającą elementy niezbędne do jej prawidłowego funkcjonowania
    • Student potrafi utworzyć metody zwracające bądź nie wartość oraz przyjmujące bądź nie parametry
    • Student potrafi skorzystać z przeciążania metod
    • Student potrafi utworzyć egzemplarz zdefiniowanej przez siebie klasy i wywołać metody
    • Student potrafi utworzyć i wywołać metodę statyczną
    • Student potrafi przeciążyć operator

  6. Dziedziczenie

    • Student potrafi skorzystać z mechanizmu dziedziczenia

  7. Ciągi znaków

    • Student potrafi skorzystać z metod dostępnych w klasie Sting

  8. Szablony klas

    • Student potrafi utworzyć uogólnioną klasę
    • Student potrafi utworzyć egzemplarz klasy uogólnionej

  9. Bibliteka STL

    • Student potrafi dobrać i skorzystać z odpowiedniego kontenera dla zadanego problemu
    • Student potrafi wykorzystać algorytmy dedykowane do wykonywania operacji na określonych kontenerach

  10. Operacje na plikach

    • Student potrafi odczytać dane z pliku
    • Student potrafi zapisać dane w pliku

  11. Wyjątki

    • Student potrafi zastosować obsługę wyjątków
    • Student rozumie do czego służą asercje i potrafi je wykorzystać

Pozostałe informacje
Metody i techniki kształcenia:
  • Wykład: Treści prezentowane na wykładzie są przekazywane w formie prezentacji multimedialnej w połączeniu z klasycznym wykładem tablicowym wzbogaconymi o pokazy odnoszące się do prezentowanych zagadnień.
  • Ćwiczenia laboratoryjne: W trakcie zajęć laboratoryjnych studenci samodzielnie rozwiązują zadany problem praktyczny, dobierając odpowiednie narzędzia. Prowadzący stymuluje grupę do refleksji nad problemem, tak by otrzymane wyniki miały wysoką wartość merytoryczną.
Warunki i sposób zaliczenia poszczególnych form zajęć, w tym zasady zaliczeń poprawkowych, a także warunki dopuszczenia do egzaminu:

Każde zajęcia laboratoryjne (oprócz dwóch pierwszych) rozpoczynają się krótką kartkówką z materiału wcześniejszego, za które można uzyskać 25% punktów. Pozostałe 75% punktów można uzyskać za program napisany w czasie zajęć. Przy obliczaniu oceny końcowej z laboratorium anulowana jest najsłabsza ocena z kartkówek i najsłabsza ocena z programów.
Podstawowym terminem uzyskania zaliczenia jest koniec zajęć w danym semestrze. W przypadku braku zaliczenia w terminie podstawowym Student może je uzyskać poprzez poprawę ocen z dwóch laboratoriów.
Student, który bez usprawiedliwienia opuścił więcej niż dwa zajęcia i jego cząstkowe wyniki w nauce były negatywne, może zostać pozbawiony przez prowadzącego zajęcia możliwości poprawkowego zaliczania zajęć. Od takiej decyzji prowadzącego zajęcia Student może się odwołać do prowadzącego przedmiot (moduł) lub Dziekana.

Zasady udziału w zajęciach:
  • Wykład:
    – Obecność obowiązkowa: Nie
    – Zasady udziału w zajęciach: Studenci uczestniczą w zajęciach poznając kolejne treści nauczania zgodnie z syllabusem przedmiotu. Studenci winni na bieżąco zadawać pytania i wyjaśniać wątpliwości. Rejestracja audiowizualna wykładu wymaga zgody prowadzącego.
  • Ćwiczenia laboratoryjne:
    – Obecność obowiązkowa: Tak
    – Zasady udziału w zajęciach: Studenci wykonują ćwiczenia laboratoryjne zgodnie z materiałami udostępnionymi przez prowadzącego. Student jest zobowiązany do przygotowania się w przedmiocie wykonywanego ćwiczenia, co może zostać zweryfikowane kolokwium w formie ustnej lub pisemnej. Zaliczenie zajęć odbywa się na podstawie zaprezentowania rozwiązania postawionego problemu. Zaliczenie modułu jest możliwe po zaliczeniu zajęć laboratoryjnych.
Sposób obliczania oceny końcowej:

Ocena końcowa tożsama jest z oceną uzyskaną z laboratorium. Wysokość oceny końcowej będzie ustalana zgodnie ze skalą ocen obowiązującą w regulaminie AGH, przyporządkowującą procent opanowania materiału konkretnej ocenie (Par.13, pkt.1).

Sposób i tryb wyrównywania zaległości powstałych wskutek nieobecności studenta na zajęciach:

Ćwiczenia laboratoryjne: usprawiedliwiona nieobecność na zajęciach wymaga od studenta samodzielnego opanowania przerabianego na tych zajęciach materiału i jego zaliczenia w formie i terminie uzgodnionym pomiędzy Studentem i prowadzącym zajęcia. Nieobecność nieusprawiedliwiona oznacza uzyskanie 0 punktów za dane zajęcia. Obecność na wykładzie: zgodnie z Regulaminem Studiów AGH

Wymagania wstępne i dodatkowe, z uwzględnieniem sekwencyjności modułów :

Brak

Zalecana literatura i pomoce naukowe:
  1. Dokumentacja aktualnego standardu języka
  2. Stephen Prata, ”Język C++”, ISBN 83–7361–958–5 (najnowsze wydanie)
  3. Bjarne Stroustrup, ”Programowanie. Teoria i praktyka z wykorzystaniem C++”, ISBN 978-83-246-2233-7
  4. Bruce Eckel, ”Thinking in C++, edycja polska”, wydanie IV, ISBN 83-7197-709-3
Publikacje naukowe osób prowadzących zajęcia związane z tematyką modułu:

- Krawczyk M.J., Kułakowski K., and Hołyst J.A., ‘’Hierarchical partitions of social networks between rivaling leaders’‘, PLoS One 13(3) (2018) e0193715
- Krawczyk M.J. and Kułakowski K., ’’How networks split when rival leaders emerge’’, Physica A 492 (2018) 2249
- Warchałowski W., Krawczyk M.J., ‘’Line graphs for fractals’‘, Communications in Nonlinear Science and Numerical Simulation 44 (2017) 506
- Krawczyk M.J., Kułakowski K., ’’Authors as vehicles of scientific memes’’, International Journal of Modern Physics C 27 (2016) 1650110
- Krawczyk M.J., del Castillo-Mussot M., Hernandez-Ramirez E., Naumis G.G. and Kułakowski K., ‘’Heider balance, asymmetric ties, and gender segregation’‘, Physica A 439 (2015) 66
– Krawczyk M.J., ’’New aspects of symmetry of elementary cellular automata’’, Chaos, Solitons and Fractals 78 (2015) 86
– Krawczyk M.J., ‘’Classes of states of discrete systems’‘, International Journal of Modern Physics C 26 (2015) 1550126
- Krawczyk M.J., ’’Communities and classes in symmetric fractals’’, International Journal of Modern Physics C 26 (2015) 1550025

Informacje dodatkowe:

Zajęcia laboratoryjne:

  • dwa pierwsze zajęcia laboratoryjne (wliczając w to zajęcia w tygodniu rozpoczęcia roku akademickiego) mają charakter wstępny i nie będą oceniane, jednak obecność na nich jest wymagana tak samo, jak na wszystkich laboratoriach
  • pozostałe zajęcia rozpoczynają się krótką kartkówką z materiału wcześniejszego, następnie Studenci samodzielnie realizują projekt według instrukcji podanej przez prowadzącego zajęcia (tematyka określana z tygodniowym wyprzedzeniem)