Moduł oferowany także w ramach programów studiów:
Informacje ogólne:
Nazwa:
Język C++
Tok studiów:
2018/2019
Kod:
JFT-1-306-s
Wydział:
Fizyki i Informatyki Stosowanej
Poziom studiów:
Studia I stopnia
Specjalność:
-
Kierunek:
Fizyka Techniczna
Semestr:
3
Profil kształcenia:
Ogólnoakademicki (A)
Język wykładowy:
Polski
Forma i tryb studiów:
Stacjonarne
Osoba odpowiedzialna:
dr hab. inż. Krawczyk Małgorzata (krawczyk@fis.agh.edu.pl)
Osoby prowadzące:
dr hab. inż. Wołoszyn Maciej (woloszyn@newton.fis.agh.edu.pl)
dr hab. inż. Krawczyk Małgorzata (krawczyk@fis.agh.edu.pl)
dr hab. inż. Bołd Tomasz (tomasz.bold@fis.agh.edu.pl)
Krótka charakterystyka modułu

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

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 wie kiedy stosować proceduralne, a kiedy obiektowe podejście do rozwiązywanego problemu. FT1A_W02 Aktywność na zajęciach,
Kolokwium,
Wykonanie ćwiczeń laboratoryjnych
M_W002 Student rozumie istotę polimorfizmu i hermetyzacji. FT1A_W04, FT1A_W02 Aktywność na zajęciach,
Kolokwium
Umiejętności
M_U001 Student potrafi utworzyć klasę i wykorzystać mechanizm dziedziczenia do stworzenia odpowiedniej hierarchii klas. FT1A_U04, FT1A_U03 Aktywność na zajęciach,
Kolokwium,
Wykonanie ćwiczeń laboratoryjnych
M_U002 Student potrafi korzystać z programowania uogólnionego. FT1A_U03 Aktywność na zajęciach,
Kolokwium,
Wykonanie ćwiczeń laboratoryjnych
M_U003 Student umie zarządzać pamięcią w programie. FT1A_U04 Aktywność na zajęciach,
Kolokwium,
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 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. - - + - - - - - - - -
Treść modułu zajęć (program wykładów i pozostałych zajęć)
Wykład:
  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. Operacje wejścia/wyjścia

    • strumienie
    • obiekty cout i cin
    • operacje na plikach

Ćwiczenia laboratoryjne:
  1. Zajęcia wprowadzające

    • 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. Biblioteka 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ć

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
Samodzielne studiowanie tematyki zajęć 30 godz
Udział w wykładach 30 godz
Udział w ćwiczeniach laboratoryjnych 45 godz
Przygotowanie do zajęć 45 godz
Pozostałe informacje
Sposób obliczania oceny końcowej:

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, która równoważna jest ocenie końcowej, anulowana jest najsłabsza ocena z kartkówek i najsłabsza ocena z programów. 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).

Wymagania wstępne i dodatkowe:

Podstawowa umiejętność posługiwania się komputerem

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)

Sposób i tryb wyrównania 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 wyznaczonym przez prowadzącego zajęcia
  • obecność na wykładzie: zgodnie z Regulaminem Studiów AGH

Zasady zaliczania zajęć:

  • ćwiczenia laboratoryjne: 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.