Moduł oferowany także w ramach programów studiów:
Informacje ogólne:
Nazwa:
Metody i techniki programowania
Tok studiów:
2016/2017
Kod:
ZIE-2-106-s
Wydział:
Zarządzania
Poziom studiów:
Studia II stopnia
Specjalność:
-
Kierunek:
Informatyka i Ekonometria
Semestr:
1
Profil kształcenia:
Ogólnoakademicki (A)
Język wykładowy:
Polski
Forma i tryb studiów:
Stacjonarne
Osoba odpowiedzialna:
dr inż. Pełech-Pilichowski Tomasz (tomek@agh.edu.pl)
Osoby prowadzące:
dr Skalna Iwona (skalna@agh.edu.pl)
dr inż. Pełech-Pilichowski Tomasz (tomek@agh.edu.pl)
Duda Jan Tadeusz (jtduda@zarz.agh.edu.pl)
Potiopa Piotr (ppotiopa@zarz.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 Zna i rozumie dogłębnie zasady algorytmizacji zadań i cyfrowego kodowania algorytmów oraz danych. Zna zasady programowania strukturalnego, proceduralnego i obiektowego oraz budowania oprogramowania z wykorzystaniem różnych języków programowania. Zna zasady doboru języka programowania do specyfiki zadania programistycznego. Zna i rozumie dogłębnie zasady niezawodnego programowania komputerów. IE2A_W06, IE2A_W07, IE2A_W03, IE2A_W05 Aktywność na zajęciach,
Odpowiedź ustna,
Wykonanie ćwiczeń laboratoryjnych
Umiejętności
M_U001 Potrafi zaprojektować strukturę wieloplikowego oprogramowania, potrafi zbudować w językach C, Visual Basic i MATLAB niezawodny program obliczeniowy i ergonomiczne interfejsy operatorskie, z wprowadzaniem danych z klawiatury i z plików oraz przekazywaniem wyników na urządzenia zewnętrzne (monitor, pliki dyskowe). Umie posługiwać się biegle platformami programistycznymi dla sprawnego uruchamiania programów, umie diagnozować błędy wykonania programu oraz kontrolować poprawność obliczeń. Umie przygotować dokumentację użytkową oraz techniczną opracowanej aplikacji w wybranym języku. IE2A_U08, IE2A_U04, IE2A_U01, IE2A_U07 Aktywność na zajęciach,
Odpowiedź ustna,
Udział w dyskusji,
Wykonanie ćwiczeń laboratoryjnych
Kompetencje społeczne
M_K001 Ma świadomość odpowiedzialności autora programu za poprawność obliczeń i zagrożeń wynikających z błędów programu, a zatem konieczności starannego sprawdzania tej poprawności. IE2A_K03, IE2A_U07, IE2A_K04 Odpowiedź ustna,
Wykonanie ćwiczeń laboratoryjnych,
Zaangażowanie w pracę zespołu
M_K002 Potrafi zorganizować pracę w zespole programistów i przyjmować różne role w takich zespołach. IE2A_K07, IE2A_K02 Wykonanie ćwiczeń laboratoryjnych,
Zaangażowanie w pracę zespołu
M_K003 Rozumie potrzebę stałego poszerzania wiedzy i umiejętności programistycznych, potrafi samodzielnie opanować umiejętność programowania z wykorzystaniem różnych języków programowania. Umie jasno komunikować swoją wiedzę programistyczną, m.in. w celu inspirowania i wspomagania procesu uczenia się innych osób. IE2A_K07, IE2A_K01 Aktywność na zajęciach,
Odpowiedź ustna,
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 Zna i rozumie dogłębnie zasady algorytmizacji zadań i cyfrowego kodowania algorytmów oraz danych. Zna zasady programowania strukturalnego, proceduralnego i obiektowego oraz budowania oprogramowania z wykorzystaniem różnych języków programowania. Zna zasady doboru języka programowania do specyfiki zadania programistycznego. Zna i rozumie dogłębnie zasady niezawodnego programowania komputerów. + + - - - - - - - - -
Umiejętności
M_U001 Potrafi zaprojektować strukturę wieloplikowego oprogramowania, potrafi zbudować w językach C, Visual Basic i MATLAB niezawodny program obliczeniowy i ergonomiczne interfejsy operatorskie, z wprowadzaniem danych z klawiatury i z plików oraz przekazywaniem wyników na urządzenia zewnętrzne (monitor, pliki dyskowe). Umie posługiwać się biegle platformami programistycznymi dla sprawnego uruchamiania programów, umie diagnozować błędy wykonania programu oraz kontrolować poprawność obliczeń. Umie przygotować dokumentację użytkową oraz techniczną opracowanej aplikacji w wybranym języku. - + - + - - - - - - -
Kompetencje społeczne
M_K001 Ma świadomość odpowiedzialności autora programu za poprawność obliczeń i zagrożeń wynikających z błędów programu, a zatem konieczności starannego sprawdzania tej poprawności. + + - + - - - - - - -
M_K002 Potrafi zorganizować pracę w zespole programistów i przyjmować różne role w takich zespołach. - - - + - - - - - - -
M_K003 Rozumie potrzebę stałego poszerzania wiedzy i umiejętności programistycznych, potrafi samodzielnie opanować umiejętność programowania z wykorzystaniem różnych języków programowania. Umie jasno komunikować swoją wiedzę programistyczną, m.in. w celu inspirowania i wspomagania procesu uczenia się innych osób. - + - + - - - - - - -
Treść modułu zajęć (program wykładów i pozostałych zajęć)
Wykład:

Ogólne zasady programowania: Zasady komputerowej realizacji algorytmów (dane i adresy, rejestry, rozkazy i tryb ich wykonywania, urządzenia zewnętrzne, rola systemu operacyjnego). Dane i ich komputerowe reprezentacje: pojęcie typu danych i statusu pamięci. Zasady implementacji algorytmów w językach programowania: podstawowe elementy i konstrukcje języków algorytmicznych (słowa kluczowe, operatory, nazwy, instrukcje, pętle, funkcje). Organizacja plików źródłowych i plików danych. Charakterystyka i klasyfikacja języków programowania: języki strukturalne, proceduralne, obiektowe. Edycja wersji źródłowej – rola stylu programowania, diagnostyka poprawności syntaktycznej, podstawowe zasady niezawodnego programowania. Zasady testowania oprogramowania.
Język C jako przykład języka strukturalnego, proceduralnego: Zasady programowania w języku C: struktura programu; struktura modułu (deklaracje, bloki, instrukcje, zasięg globalności nazw, komentarze). Typy standardowe i struktury danych. Podstawowe operacje preprocesora (rola plików nagłówkowych, stałe symboliczne). Obiekty języka C: stałe, zmienne proste, tablice, łańcuchy znaków, struktury danych, funkcje. Zmienne wskaźnikowe, operacje na wskaźnikach, wskaźniki a tablice. Dynamiczna alokacja pamięci. Konstrukcje algorytmów w języku C i ich porównanie z konstrukcjami w innych językach: wyrażenia arytmetyczne, logiczne, kodowanie bitowe i operatory bitowe, instrukcje sterujące, pętle – zalecenia programistyczne dotyczące niezawodności programów komputerowych. Funkcje: celowość i zasady wydzielania funkcji, przekazywanie danych do funkcji i wyników funkcji,. Makra, funkcje a makra – zalety i wady wykorzystywania makr, przykłady. Operacje wejścia i wyjścia: funkcje czytania znaków i łańcuchów znakowych, specyfikacje formatu, zapis i odczyt danych z plików binarnych i znakowych.
Strukturyzacja danych: tablice, struktury, listy – zasady wykorzystania. Zaawansowane operacje preprocesora, strukturyzacja kodu źródłowego, kompilacja warunkowa.

Ćwiczenia audytoryjne:

1. Sprawdzanie wiedzy nt. zasad implementacji algorytmów, konstrukcji algorytmicznych i zasad testowania oprogramowania.
2. Sprawdzenie wiedzy nt. składni języka C i jej porównanie z językami MATLAB i Visual Basic.
3. Ćwiczenie umiejętności budowania programów w języku C, z wykorzystaniem typów standardowych, operacji wskaźnikowych, tablic i struktur danych, kodowania bitowego oraz dynamicznej alokacji pamięci, z akcentowaniem praktyk i zasad niezawodnego programowania.

Ćwiczenia projektowe:

1. Sprawdzenie umiejętności posługiwania się narzędziami programowania (edycja kodu, kompilacja, debugging) zapoznanie z zasadami zarządzania kodem źródłowym.
2. Ćwiczenie umiejętności strukturyzacji kodu i danych, kodowanie procedur obliczeniowych z oraz zapisu i odczytu danych z plików
3. Kodowanie procedur wprowadzania danych z klawiatury i prezentacji wyników obliczeń
4. Porównanie analogicznych programów w języku C i MATLAB – wskazanie różnic i podobieństw, wskazanie możliwości wykorzystania języka MATLAB do kontroli poprawności programu w języku C
5. Sprawdzenie umiejętności samodzielnej pracy w zespołach programistów (3 zadania dla zespołu 3 osobowego z indywidualną rolą programisty głównego, pomocniczego i archiwisty/bibliotekarza dla każdego studenta).

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 14 godz
Udział w ćwiczeniach audytoryjnych 14 godz
Udział w ćwiczeniach projektowych 14 godz
Dodatkowe godziny kontaktowe z nauczycielem 3 godz
Wykonanie projektu 42 godz
Przygotowanie do zajęć 14 godz
Pozostałe informacje
Sposób obliczania oceny końcowej:

Ocena końcowa wystawiana jest przez prowadzącego wykład jako średnia z ćwiczeń z wagą 0.4 (uśredniona ocena z odpowiedzi ustnych), z laboratorium z wagą 0.4 (na podstawie sprawdzianów umiejętności praktycznego programowania i znajomości kodu opracowanego zespołowo w ramach prac własnych studentów) oraz aktywności na wykładach z wagą 0.2, z możliwością podniesienia (maks. o 1.0) na podstawie dodatkowego kolokwium ustnego.

Wymagania wstępne i dodatkowe:

Znajomość podstaw informatyki i podstaw algorytmizacji zadań. Znajomość matematyki w zakresie studiów I. stopnia, umiejętność logicznego i kreatywnego myślenia.

Zalecana literatura i pomoce naukowe:

Literatura
- podstawowa: N. Wirth: Algorytmy+struktury danych = programy. WNT, Warszawa 2002B. W.Kernighan, D.M.Ritchie, Język C, WNT Warszawa 1992; K.A.Barklay, ANSI C – Problem Solving an Programming, Printice Hall, 1990
- pomocnicza: D. van Tessel: Praktyka programowania. WNT Warszawa, 1989; W.Duch: Fascynujący świat komputerów, Wydawn. Nakom, Poznań 1997,
Przydatne liniki internetowe
http://pl.wikipedia.org/wiki/C_(j%C4%99zyk_programowania)
http://pl.wikipedia.org/wiki/C%2B%2B

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

Duda J.T., Pełech-Pilichowski T.: Enhancements of moving trend based filters aimed at time series prediction. Advances in systems science: proceedings of the International Conference on Systems Science 2013 (ICSS 2013) / eds. Jerzy Świątek, [et al.], Advances in Intelligent Systems and Computing. Springer International Publishing, 2014, s. 747–756

Duda J.T., Pełech-Pilichowski T.: Wykorzystanie trendu pełzającego do analizy i prognozowania szeregów finansowych. W: Uwarunkowania, metody i strategie rozwoju przedsiębiorstw, red. nauk. Howaniec H., Madyda A., Waszkielewicz W., Wydawnictwo Naukowe ATH, 2013, s. 79–101

Pełech-Pilichowski T., Duda J.T.: A two-level detector of short-term unique changes in time series based on a similarity method. Expert Systems 2015 vol. 32 no. 4, s. 555–561

Pełech-Pilichowski T., Duda J.T.: Low-frequency signal reconstruction and abrupt change detection in non-stationary time series by enhanced moving trend based filters. Advances in ICT for business, industry and public sector, eds. Mach-Król M., Olszak C.M., Pełech-Pilichowski T. (Studies in Computational Intelligence, vol. 579), Springer, 2015, s. 111–125

Informacje dodatkowe:

Brak