Module also offered within study programmes:
General information:
Name:
Programming methods and techniques
Course of study:
2017/2018
Code:
RIA-1-103-s
Faculty of:
Mechanical Engineering and Robotics
Study level:
First-cycle studies
Specialty:
-
Field of study:
Acoustic Engineering
Semester:
1
Profile of education:
Academic (A)
Lecture language:
Polish
Form and type of study:
Full-time studies
Responsible teacher:
dr inż. Frankowski Marek (mfrankow@agh.edu.pl)
Academic teachers:
Module summary

Podstawy informatyki, obsługi systemu operacyjnego Linux oraz programowania. Wprowadzenie do algorytmów i struktur danych. Języki c++ oraz Phyton.

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 prezentować zagadnienia programistyczne. IA1A_K01 Execution of laboratory classes,
Project
Skills
M_U001 Student umie programować w C++ z zachowaniem odpowiedniej składni i struktur danych. IA1A_U09 Test,
Project,
Execution of laboratory classes
M_U002 Student umie reprezentować problem w postaci programu komputerowego poprzez budowę poprawnych modułów. IA1A_U09 Test,
Execution of laboratory classes
Knowledge
M_W001 Student posiada wiedzę na temat podstawowych algorytmów i struktur danych. IA1A_W13 Test,
Scientific paper
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 prezentować zagadnienia programistyczne. + - + - - - - - - - -
Skills
M_U001 Student umie programować w C++ z zachowaniem odpowiedniej składni i struktur danych. + - + - - - - - - - -
M_U002 Student umie reprezentować problem w postaci programu komputerowego poprzez budowę poprawnych modułów. + - + - - - - - - - -
Knowledge
M_W001 Student posiada wiedzę na temat podstawowych algorytmów i struktur danych. + - - - - - - - - - -
Module content
Lectures:

1. Zasady zaliczenia przedmiotu, systemy liczbowe, arytmetyka komputerowa / paradygmaty programowania, podstawy programowania, zmienne, przesłanianie, instrukcje sterujące, wejście-wyjście
2. System operacyjny linux, konsola, tryb graficzny vs. tekstowy / funkcje
3. Programowanie obiektowe, podział na klasy i metody, podział na pliki, definicja vs. deklaracja, dobre praktyki programowania, formatowanie kodu / wyrażenie regularne, grep, pipe
4. Modyfikatory dostępu, przesłanianie, get i set, konstruktory destruktory, skrypty bash, kompilacja vs. interpretacja
5. Przeciążenie operatorów wskaźniki tablice alokacja pamięci null
6. Stringi i obsługa plików, strumienie / GUI
7. Listy i szablony
8. Python / STL
9. Sortowanie, złożoność obliczeniowa, klasyfikacja problemów informatyki, stabilność numeryczna
10. Drzewa i grafy
11. Paradygmaty programowania, licencje oprogramowania, kompilacja linux, łączenie jęzków programowania
12. Programowanie równoległe, fork, problem 5 filozofów, prawo Amdahla
13. Elementy budowy procesora, język asemblera, kod maszynowy
14. Podstawy szyfrowania

Laboratory classes:

Laboratoria podzielone na dwa tory kształcenia po 28 godzin:

1. Systemy liczbowe i arytmetyka komputerowa (na tablicy i papierze)
2. Linux podstawy I (ls, pwd, cd, mkdir, rm, echo, touch, cat, cp, chmod)
3. Linux podstawy II (wc, vi, grep, pipe, zmienne środowiskowe, awk, sed, mail, apt-get)
4. Linux programowanie (skrypty bash)
5. Przeciążanie operatorów (jako friend i jako funkcja globalna – jedyny sensowny przykład używania funkcji globalnych)
6. GUI I (proste GUI, button, textbox, menu bar, list box, radio button, check box, obrazki i dźwięki)
7. GUI II (złożone GUI, kilka okien, blokowanie okien, resize, zabijanie wybranych okien, komunikacja między oknami, jakiś algorytm w oknie)
8. Python I (podstawy i jakiś algorytm jeden)
9. Python II (algorytmy)
10. Python III (algorytmy)
11. Łączenie języków programowania (c, c++, python, bash, plik binarny, make, na przykładzie jakiegoś algorytmu)
12. Programowanie równoległe (c/c++ linux, python) I (fork, forkbomba, rozróżnianie w którym się jest procesie)
13. Programowanie równoległe (c/c++ linux) II (komunikacja między wątkami, dostęp wielu wątków do zasobów, jakiś algorytm)
14. Zajęcia podsumowujące

oraz:

1. Podstawy c/c++ I (zmienne, wyrażenia, operacje wejścia-wyjścia, kompilacja, typy, rzutowanie, instrukcje sterujące)
2. Funkcje (argumenty i typy zwracane, rekurencja ale krótko bo rekurencja algorytmicznie jest bez sensu tylko żeby wiedzieli że się da)
3. Podstawy c/c++ II (podział na klasy i metody, funkcje, pliki, dyrektywy preprocesora, definicja vs. deklaracja)
4. Podstawy c/c++ III (klasy, modyfikatory dostępu, konstruktor, seter, getter)
5. Wskaźniki (tablice, wskaźniki, null, tablice wielowymiarowe, alokacja i zwalnianie pamięci – ale mało szczegółów z niskopoziomowego c czyli tylko new i delete)
6. Stringi i obsługa plików, strumienie
7. Listy i szablony (pisane ręcznie)
8. Sortowanie I (różne algorytmy, porównanie czasu działania w różnych przypadkach danych, implementacja na tablicach i listach)
9. STL (nie koniecznie wszystkie elementy biblioteki ale oprócz list i vector jeszcze przynajmniej ze 3 inne w tym map)
10. Sortowanie II (jak wyżej)
11. Drzewa (przeszukiwanie, wyważanie, jakiś typ specjalnych drzew np. binarne, AVL, BST, czerwono-czarne … cośtam wybrać wedle uznania)
12. Grafy i algorytmy grafowe (grafy skierowane i nieskierowane, przeszukiwanie grafów, drzewa rozpinające, najkrótsze ścieżki, wybór algorytmów grafowych)
13. Podstawy szyfrowania (szyfrowanie symetryczne i niesymetryczne, szyfr Vernama, szyfr RSA)
14. Zajęcia podsumowujące

Student workload (ECTS credits balance)
Student activity form Student workload
Summary student workload 240 h
Module ECTS credits 8 ECTS
Participation in laboratory classes 56 h
Realization of independently performed tasks 28 h
Participation in lectures 28 h
Completion of a project 100 h
Preparation for classes 28 h
Additional information
Method of calculating the final grade:

Na każdych zajęciach odbywa się krótka kartkówka i sprawdzane jest zadanie domowe.

Aby uzyskać zaliczenie należy (dla obu torów cwiczeń laboratoryjnych z osobna):
zdobyć równo lub więcej niż 50% punktów z kartkówek
oraz
zdobyć równo lub więcej niż 50% punktów z zadań domowych.

Ocena wyznaczana na podstawie regulaminu studiów z wagami – kartkówki 30% zadania domowe 70%.

Nieobecności:
Nieusprawiedliwione → 0 z kartkówki
Usprawiedliwione → możliwość nadrobienia kartkówki w terminie określonym przez prowadzącego zajęcia
Zadanie domowe należy oddać na platformie terminowo bez względu na nieobecność, w tym usprawiedliwioną – przypadki skrajne rozstrzyga prowadzący laboratorium
Poprawy ocen:
Każde zadanie można oddać (lub oddać poprawione) w tygodniu następującym po terminie oddania (ocena – średnia obu podejść)
Na ostatnich zajęciach można poprawić jedną najgorzej napisaną kartkówkę oraz oddać jedno najniżej ocenione zadanie (ocena zostaje podmieniona na nową) UWAGA: brak innych form zaliczeń poprawkowych

Prerequisites and additional requirements:

Umiejętność posługiwania się komputerem i wiedza matematyczna na poziomie szkoły średniej.

Recommended literature and teaching resources:

Wirth: “Algorytmy + Struktury danych = Programy”, WNT, Warszawa 1989.
P. Wróblewski: “Algorytmy, struktury danych i techniki programowania”, Helion, Gliwice 2003.
P. Metzger: “Anatomia PC”, Helion, Gliwice 2006.
J. Grębosz “Symfonia C++ Standard” , Edition 2000 przy wspolpracy Oficyny Kallimach

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

Additional scientific publications not specified

Additional information:

None