Moduł oferowany także w ramach programów studiów:
Informacje ogólne:
Nazwa:
Języki programowania
Tok studiów:
2014/2015
Kod:
IEL-1-301-s
Wydział:
Informatyki, Elektroniki i Telekomunikacji
Poziom studiów:
Studia I stopnia
Specjalność:
-
Kierunek:
Elektronika
Semestr:
3
Profil kształcenia:
Ogólnoakademicki (A)
Język wykładowy:
Polski
Forma i tryb studiów:
Stacjonarne
Strona www:
 
Osoba odpowiedzialna:
dr hab. inż. Jamro Ernest (jamro@agh.edu.pl)
Osoby prowadzące:
dr hab. inż. Jamro Ernest (jamro@agh.edu.pl)
dr inż. Rydosz Artur (rydosz@agh.edu.pl)
dr inż. Pietroń Marcin (pietron@agh.edu.pl)
Krótka charakterystyka modułu

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 posiada wiedzę w zakresie sposobów reprezentacji danych w programie, stosowania podstawowych instrukcji, operatorów, wyrażeń i funkcji w językach C/C++. EL1A_W07 Kolokwium
M_W002 Student posiada wiedzę dotyczącą klas i obiektów, mechanizmów dziedziczenia, polimorfizmu, przeciążania operatorów, tworzenia funkcji wirtualnych oraz rzutowania typów, tworzenia funkcji i klas szablonowych, dysponuje wiedzą z zakresu elementów biblioteki STL, jak również zasad tworzenia i testowania oprogramowania. EL1A_W07 Kolokwium
M_W003 Student posiada wiedzę dotyczącą podstaw skryptowych języków programowania obiektowego, dostępnych bibliotek oraz ich zastosowań. EL1A_W07 Kolokwium
Umiejętności
M_U001 Student potrafi opracować i zaimplementować określony algorytm posługując się podstawowymi mechanizmami programowania obiektowego, potrafi korzystać z zasobów biblioteki STL oraz funkcji i klas szablonowych do tworzenia oprogramowania. EL1A_U01, EL1A_U13 Kolokwium
M_U002 Student potrafi konstruować oprogramowanie zgodnie z określonymi standardami programistycznymi, tworzyć proste graficzne interfejsy użytkownika oraz tworzyć odpowiednią dokumentację projektu. EL1A_U14, EL1A_U15, EL1A_U18 Kolokwium
Kompetencje społeczne
M_K001 Student ma świadomość ciągłego podnoszenia swoich kwalifikacji. EL1A_K01
M_K002 Student potrafi wykorzystać opanowane technologie w przedsiębiorstwach oraz projektach komercyjnych EL1A_K04, EL1A_K05
M_K003 Student ma świadomość odpowiedzialności za pracę własną oraz gotowość podporządkowania się zasadom pracy w zespole i ponoszenia odpowiedzialności za wspólnie realizowane zadania EL1A_K04, EL1A_K03, EL1A_K02
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 posiada wiedzę w zakresie sposobów reprezentacji danych w programie, stosowania podstawowych instrukcji, operatorów, wyrażeń i funkcji w językach C/C++. + - + + - - - - - - -
M_W002 Student posiada wiedzę dotyczącą klas i obiektów, mechanizmów dziedziczenia, polimorfizmu, przeciążania operatorów, tworzenia funkcji wirtualnych oraz rzutowania typów, tworzenia funkcji i klas szablonowych, dysponuje wiedzą z zakresu elementów biblioteki STL, jak również zasad tworzenia i testowania oprogramowania. + - + + - - - - - - -
M_W003 Student posiada wiedzę dotyczącą podstaw skryptowych języków programowania obiektowego, dostępnych bibliotek oraz ich zastosowań. + - + + - - - - - - -
Umiejętności
M_U001 Student potrafi opracować i zaimplementować określony algorytm posługując się podstawowymi mechanizmami programowania obiektowego, potrafi korzystać z zasobów biblioteki STL oraz funkcji i klas szablonowych do tworzenia oprogramowania. + - + + - - - - - - -
M_U002 Student potrafi konstruować oprogramowanie zgodnie z określonymi standardami programistycznymi, tworzyć proste graficzne interfejsy użytkownika oraz tworzyć odpowiednią dokumentację projektu. + - + + - - - - - - -
Kompetencje społeczne
M_K001 Student ma świadomość ciągłego podnoszenia swoich kwalifikacji. + - + + - - - - - - -
M_K002 Student potrafi wykorzystać opanowane technologie w przedsiębiorstwach oraz projektach komercyjnych + - + + - - - - - - -
M_K003 Student ma świadomość odpowiedzialności za pracę własną oraz gotowość podporządkowania się zasadom pracy w zespole i ponoszenia odpowiedzialności za wspólnie realizowane zadania + - + + - - - - - - -
Treść modułu zajęć (program wykładów i pozostałych zajęć)
Wykład:
  1. Podstawy – Wprowadzenie do programowania obiektowego w C++ – 2 godziny

    Przypomnienie i uzupełnienie wiadomości z zakresu programowania; Przegląd języków programowania; Etapy budowy oprogramowania; Elementy modelowania z wykorzystaniem Unified Modeling Language (UML): diagramy przypadków użycia, aktywności; Podstawy reprezentacji danych: stałe i zmienne, podstawowe typy danych i zasady ich używania (int, char, long, double); Podstawy C++: instrukcje if oraz for, podstawowe operatory arytmetyczne oraz logiczne, elementarne funkcje, przydatne obiekty (cout, cin, vector<>, string) wraz z przykładami; Przykład użycia podstawowych konstrukcji języka do implementacji prostego przykładu.

  2. Podstawowe instrukcje, operatory, wyrażenia i funkcje – 6 godzin

    Szczegółowe informacje na temat instrukcji C/C++: warunkowa (if, switch-case), pętle (while, for, do-while), throw-try-catch; Przegląd wszystkich grup operatorów, prawa hierarchii oraz łączności: arytmetyczne, logiczne, bitowe, warunkowe, inne; Wskaźniki: rola, składania, semantyka; Tablice; Struktury; Referencje; Budowa wyrażeń; Funkcje: rola, struktura, przekazywanie parametrów do funkcji, zwracanie wartości z funkcji; Organizacja projektu C/C++: preprocesing, kompilacja, konsolidacja, debuggowanie; Przykłady w rzeczywistych aplikacjach;

  3. Programowanie obiektowe – 8 godzin

    Koncepcja obiektu i klasy: zasadnicze paradygmaty programowania obiektowego (encapsulation, polymorphism, code reusability, code safety), relacje has-a, is-a, knows; Anatomia klasy: składowe klasy, wskaźnik this, ochrona składowych, grupa metod konstrukcyjnych, grupa metod dostępu do danych, operacje input/output, static members, member pointers; Typ enumerowany; Zasady projektowania klas na przykładach; Przeciążąnie operatorów: podstawowe konstrukcje, przykłady; Dziedziczenie i polimorfizm: podstawowe pojęcia, funkcje wirtualne, projektowanie hierarchii klas, wirtualne klasy bazowe; Rzutowanie typów; Klasy specjalne: funktory, friends; Obsługa wyjątków; Przestrzenie nazw; Analiza istniejących rozwiązań;

  4. Szablony C++ – 4 godziny

    Idea meta-programowania, wstęp od szablonów; Funkcje szablonowe: deklaracja parametrów; Szablony klas: deklaracja parametrów szablonowych, sposoby łączenia, template-template parameters, szablony typowe, szablony nietypowe, funkcje wirtualne, szablonowe składowe klasy (template members), parametry domniemane (default), szablonowe hierarchie klas. Instancjacja klas szablonowych; Proces dedukcji argumentów szablonowych; Specjalne klasy szablonowe: traits oraz policy, funkcje określania typu, smart pointers, funktory oraz funcje typu callback; Metodyka projektowania konstrukcji szablonowych; Przykłady w rzeczywistych aplikacjach;

  5. Biblioteka standardowa STL – 6 godzin

    Wprowadzenie do STL: przykład użycia podstawowych konstrukcji (vector, string), podział biblioteki (kontenery, iteratory, algorytmy); Podstawowe kontenery, ich właściwości oraz użycie: vector, list, set oraz multiset, maps oraz multimaps; Iteratory: kategorie iteratorów (input, output, forward, bidirectional, random access), adaptery iteratorów; Obiekty funkcyjne STL: budowa oraz używanie predykatów; Algortymy STL: niemodyfikujące (liczenie elementów, minimum/maksimum, przeszukiwanie kontenerów, porównywanie zakresów), modyfikujące (kopiowanie, transformacje, zamiana, przypisywanie wartości elementów), usuwające składowe kontenerów, mutujące (odwracanie kolejności, rotacje, permutacje), sortowanie, algorytmy numeryczne; Kontenery specjalne: kolejka, stos; Operacje input/output: podstawowe klasy I/O, przeciążenia operatorów stream, manipulatory, formatowanie, dostęp do plików, strumienie ciągów znakowych;

  6. Elementy projektowania oprogramowania. Konstrukcje zaawansowane – 2 godziny

    Rozszerzenie wiadomości o UML; Projektowanie oprogramowania: etapy konstrukcyjne, dokumentacja; Standardy programistyczne; Konstrukcja bibliotek; Testowanie oprogramowania: rodzaje błędów, konstruowanie testów, programowanie przez kontrakt, sztuka debuggowania;

  7. Inne języki obiektowe – 2 godziny

    Wstęp do języka Python: specyfika języków skryptowych, podstawowe konstrukcje, tryby używania języka, różnice w stosunku do C++, programowanie obiektowe, wstęp do bibliotek Pythona; Przykłady w rzeczywistych aplikacjach;

Ćwiczenia laboratoryjne:
  1. Opracowanie oraz implementacja problemu reprezentacji oraz obliczania pierwiastków wielomianów – 2 godziny

    Praca w środowisku Linux, dokumentacja wykonywanego zadania, realizacja programowa, metody kompilacji, konsolidacji oraz debuggowania, metody radzenia sobie z błędami.

  2. Opracowanie oraz implementacja kalkulatora walut – 4 godziny

    Praca w środowisku Visual C++, utworzenie aplikacji do poszukiwania kursów walut w danych z banku, realizacja połączenia internetowego, projekt interfejsu użytkownika (GUI), wykonanie w MFC i/lub FLTK.

  3. Opracowanie oraz implementacja dziennika zajęć – 5 godziny

    Implementacja prostej bazy danych z funkcjami dodawania/usuwania/sortowania rekordów; Umiejętność obsługi operacji wejścia/wyjścia, praca z plikami.

  4. Opracowanie oraz implementacja klasy liczb zespolonych – 4 godziny

    Implementacja klasy liczb zespolonych, przeciążanie operatorów, operacje przesyłania danych do i z plików, operatory konwersji typów. Implementacja metod programowania “przez kontrakt”.

Ćwiczenia projektowe:
  1. Opracowanie oraz implementacja hierarchii klasy do reprezentacji algebry liniowej – 4 godziny

    Implementacja hierarchii klas. Przykłady wykorzystania w aplikacjach obliczeniowych.

  2. Opracowanie oraz implementacja aplikacji wykorzystującej grafikę komputerową z OpenGL – 4 godziny

    Zapoznanie z biblioteką graficzną OpenGL, projekt prostej aplikacji w oparciu o zasoby biblioteki graficznej, praca z hierarchiami klas oraz z funkcjami wirtualnymi. Przykłady wykorzystania w aplikacjach graficznych.

  3. Opracowanie oraz implementacja prostej gry komputerowej – 4 godziny

    Stworzenie aplikacji zgodnie z prawidłowymi wzorcami projektowymi, modelowanie problemu za pomocą języka UML, dokumentacja projektu.

  4. Projekt własny – 3 godziny

    Projekt i implementacja własnej aplikacji napisanej w języku Python; Wykorzystanie bibliotek Python, zarządzanie projektem oraz grupą projektową.

Nakład pracy studenta (bilans punktów ECTS)
Forma aktywności studenta Obciążenie studenta
Sumaryczne obciążenie pracą studenta 101 godz
Punkty ECTS za moduł 4 ECTS
Udział w wykładach 28 godz
Samodzielne studiowanie tematyki zajęć 10 godz
Udział w ćwiczeniach laboratoryjnych 14 godz
Przygotowanie do zajęć 10 godz
Dodatkowe godziny kontaktowe z nauczycielem 15 godz
Wykonanie projektu 24 godz
Pozostałe informacje
Sposób obliczania oceny końcowej:

1. Warunkiem uzyskania pozytywnej oceny końcowej jest uzyskanie pozytywnej oceny z laboratorium oraz kolokwium zaliczeniowego z wykładu.
2. Na wykładach możliwe jest otrzymanie oceny za przedstawienie prezentacji wybranego tematu.
3. Obliczamy średnią arytmetyczną z ocen uzyskanych we wszystkich terminach (terminy poprawkowe z wagą 2).
4. Wyznaczmy ocenę końcową OK na podstawie algorytmu:
if av>4.75 then OK:=5.0 else
if av>4.25 then OK:=4.5 else
if av>3.75 then OK:=4.0 else
if sr>3.25 then OK:=3.5 else
if sr>=3.0 then OK:=3.0

Wymagania wstępne i dodatkowe:

• Podstawy metodyki i technik programowania

Zalecana literatura i pomoce naukowe:

1. Stroustrup B. Programming. Principles and Practice Using C++. Addison Wesley 2009 (tł. polskie: Programowanie. Teoria i praktyka z wykorzystaniem C++, Helion).
2. Stroustrup B. The C++ Programming Language, 2000 (tł. polskie: Język C++, WNT).
3. Vandervoorde D., Josuttis N.M. C++ Templates. Addison Wesley, 2003 (tł. polskie: C++. Szablony. Vademecum profesjonalisty, Helion).
4. Josuttis N.M. The C++ Standard Library. Addison Wesley, 1999 (tł. polskie: C++. Biblioteka standardowa. Podręcznik programisty, Helion).
5. Lippman S. Essential C++. Addison Wesley, 2005 (tł. polskie: Istota języka C++. Zwięzły opis, WNT).
6. Summerfield M. Programming in Python 3. Addison Wesley, 2009 (tł. polskie: Python 3. Kompletne wprowadzenie do programowania, Helion).

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

Nie podano dodatkowych publikacji

Informacje dodatkowe:

Brak