Karta modułu - Metodyki i techniki programowania 1 / 5 Nazwa modułu: Metodyki i techniki programowania Rocznik: 2012/2013 Kod: RIA-1-103-s Punkty ECTS: 7 Wydział: Inżynierii Mechanicznej i Robotyki Poziom studiów: Studia I stopnia Specjalność: - Kierunek: Inżynieria Akustyczna Semestr: 1 Profil Ogólnoakademicki (A) Język Polski kształcenia: wykładowy: Forma i tryb studiów: Stacjonarne Strona www: http://home.agh.edu.pl/~bziolko/ Osoba odpowiedzialna: Osoby prowadzące: Ziółko Bartosz (bziolko@agh.edu.pl) Ziółko Bartosz (bziolko@agh.edu.pl) Skurzok Dawid (skurzok@agh.edu.pl) Opisy efektów kształcenia dla modułu Kod EKM Student, który zaliczył moduł wie/umie/potrafi Powiązania z EKK M_W001 M_U001 M_U002 M_K001 Wiedza Student posiada wiedzę na temat podstawowych algorytmów i struktur danych. Umiejętności Student umie programować w C++ z zachowaniem odpowiedniej składni i struktur danych. Student umie reprezentować problem w postaci programu komputerowego poprzez budowę poprawnych modułów. Kompetencje społeczne Student potrafi prezentować zagadnienia programistyczne. IA1A_W13 IA1A_U09 IA1A_U09 IA1A_K01 Sposób weryfikacji efektów kształcenia (forma zaliczeń) Kolokwium, Referat laboratoryjnych, Kolokwium, Projekt laboratoryjnych, Kolokwium laboratoryjnych, Projekt
Karta modułu - Metodyki i techniki programowania 2 / 5 Matryca efektów kształcenia w odniesieniu do form zajęć Kod EKM Student, który zaliczył moduł wie/umie/potrafi Forma zajęć Wykład audyt. lab. proj. Konw. Zaj. sem. Zaj. prakt. Inne E- learning M_W001 M_U001 M_U002 M_K001 Wiedza Student posiada wiedzę na temat podstawowych algorytmów i struktur danych. Umiejętności Student umie programować w C++ z zachowaniem odpowiedniej składni i struktur danych. Student umie reprezentować problem w postaci programu komputerowego poprzez budowę poprawnych modułów. Kompetencje społeczne Student potrafi prezentować zagadnienia programistyczne. + - - - - - - - -
Karta modułu - Metodyki i techniki programowania 3 / 5 Treść modułu kształcenia (program wykładów i pozostałych zajęć) Wykład 1. Wprowadzenie do zasad prowadzenia kursu. Proces nauki programowania. Podstawy budowy oraz działania komputerów architektura von Neumana oraz harvardzka. Jednostki funkcjonalne we współczesnych komputerach, organizacja oraz różne rodzaje pamięci. Sposób działania procesora, metody programowania procesorów. Pojęcie systemu operacyjnego. 2. Wprowadzenie do języków programowania. C++ jako przykład hybrydowego języka programowania. Podstawowe narzędzia programistyczne i organizacja środowiska pracy. Pojęcie kompilacji, jednostki wykonywalnej. Metody pracy z kodem. Wprowadzenie do algorytmów, metody zapisu algorytmów. 3. Prezentacja składni i sposobu zapisu algorytmów przy jego użyciu. Wbudowane typy danych, podstawowe instrukcje podstawowe instrukcje, logiczna reprezentacja kodu, podział na funkcje, moduły. 4. Zakres nazw. Czas życia zmiennej. Reprezentacja wartości numerycznych w komputerze i arytmetyka komputerów. 5. Abstrakcja danych. Proste programy użytkowe. Programowanie interakcji z użytkownikiem i systemem. Operacja wejścia/wyjścia. 6. Podstawowe struktury danych: tablica, stos, lista jedno oraz dwukierunkowa, drzewa binarne. Podstawy algorytmów numerycznych (algorytm Newtona). Metody przeszukiwania danych. 7. Podstawowe metody sortowania, algorytmy rekursywne (algorytm QuickSort). 8. Dobre praktyki programistyczne. Etapy projektowania oraz kodowania poprawnych programów. Umiejętność analizy i usuwania błędów w kodzie. Sztuka uruchamiania programów oraz usuwania błędów. 9. Podstawowe informacje na temat budowy klas oraz programowania obiektowego (konstruktory, destruktory). 10. Hermetyzacja i enkapsulacja kodu, dziedziczenie. 11. Referencje. Wprowadzenie do wzorców programowania, przeciążanie operatorów. 12. Prezentacja biblioteki STL i odpowiedniki generyczne podstawowych typów danych (vector, list, map). 13. Biblioteka STL iteratory, funktory, definicja własnych typów generycznych. 14. Kontrola przydziału pamięci. Wskaźniki. RAII. 15. Operacje na tekstach (efektywne metody szukania wzorców w tekście (algorytm Boyer- Moore-Horspool). Ćwiczenia laboratoryjne 1. Umiejętność obsługi systemu operacyjnego Windows z punktu widzenia programisty. 2. Wprowadzenie do pracy z wybranym środowiskiem programistycznym. 3. Praca z funkcją main w języku C++. 4. Wykonanie programów z operacjami arytmetycznymi. 5. Wykonanie programów z operacjami logicznymi. 6. Wykonanie programów instrukcjami decyzyjnymi. 7. Wykonanie programów z tablicami danych. 8. Wykonanie programów z pętlami. 9. Programowanie funkcji i ich użycie w trakcie życia programu. 10. Wykonanie programu z operacjami wejścia/wyjścia. 11. Zaprogramowanie stosu przy wykorzystaniu tablic. 12. Zaprogramowanie drzewa przy wykorzystaniu tablic. 13. Wykonanie programu poszukującego miejsc zerowych funkcji. 14. Wykonanie programu interpolującego funkcje metodą Langrange a. 15. Implementacja sortowania przez wstawianie. 16. Wykonanie programu realizująceo sortowanie bąbelkowe. 17. Wykonanie programu wyszukującego metodą połowienia. 18. Implementacja algorytmu Quicksort.
Karta modułu - Metodyki i techniki programowania 4 / 5 19. Usprawnienia i porównywanie złożoności obliczeniowej programów. 20. Praktyczne debuggowanie. 21. Programowanie abstrakcji danych przy użyciu klas. Programowanie konstruktorów, destruktorów. 22. Programowanie struktury dziedziczących klas. 23. Praktyczne wykorzystanie hermetyzacji kodu (private, protected, public). 24. Implementacja metod wykorzystujących referencje. 25. Programowanie programów przy użyciu gotowych klas kontenerów (vector, list). 26. Użycie gotowej implementacji tablic asocjacyjnych z biblioteki STL (map) do szybkiego wyszukiwania danych. 27. Programowanie kontenerów biblioteki STL z użyciem iteratorów. 28. Programowanie własnych klas generycznych na przykładzie klasy implementującej liczby zespolone. 29. Programowanie z użyciem wskaźników. 30. Praktyczna implementacja wzorca RAII przy użyciu destruktora.
Karta modułu - Metodyki i techniki programowania 5 / 5 Sposób obliczania oceny końcowej Do zaliczenia przedmiotu konieczne jest: zdobycie w trakcie semestru co najmniej 51 punktów, zaliczenie obu kolokwiów na co najmniej połowę punktów i frekwencja (za 2 nieusprawiedliwione nieobecności automatycznie ocena obniżana jest o 1 stopień, 3 nieusprawiedliwione nieobecności skutkują niezaliczeniem przedmiotu). Punkty otrzymuje się za: zbiór programów do przygotowania w terminie do następnych zajęć, omówienie napisanych programów, 2 kolokwia, referat + 10 pytań testowych wielokrotnego wyboru, projekt, aktywność na zajęciach, Wymagania wstępne i dodatkowe Umiejętność posługiwania się komputerem i wiedza matematyczna na poziomie szkoły średniej. Zalecana literatura i pomoce naukowe 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 Uwagi Brak Nakład pracy studenta (bilans punktów ECTS) Forma aktywności studenta Udział w laboratoriach Przygotowanie do kolokwium zaliczeniowego Udział w wykładach Samodzielna realizacja projektu Samodzielne studiowanie tematyki wykładów Przygotowanie się do zajęć Sumaryczne obciążenie pracą studenta Punkty ECTS za moduł Obciążenie studenta 60 godz 50 godz 30 godz 20 godz 20 godz 30 godz 210 godz 7 ECTS