Moduł oferowany także w ramach programów studiów:
Informacje ogólne:
Nazwa:
Metodyka i techniki programowania 1
Tok studiów:
2019/2020
Kod:
IETP-1-101-s
Wydział:
Informatyki, Elektroniki i Telekomunikacji
Poziom studiów:
Studia I stopnia
Specjalność:
-
Kierunek:
Elektronika i Telekomunikacja
Semestr:
1
Profil:
Ogólnoakademicki (A)
Język wykładowy:
Polski
Forma studiów:
Stacjonarne
Strona www:
 
Prowadzący moduł:
dr inż. Bułat Jarosław (kwant@agh.edu.pl)
Treści programowe zapewniające uzyskanie efektów uczenia się dla modułu zajęć

Podstawowe zagadnienia związane z programowaniem komputerów.

Opis efektów uczenia się dla modułu zajęć
Kod MEU Student, który zaliczył moduł zajęć zna i rozumie/potrafi/jest gotów do Powiązania z KEU Sposób weryfikacji i oceny efektów uczenia się osiągniętych przez studenta w ramach poszczególnych form zajęć i dla całego modułu zajęć
Wiedza: zna i rozumie
M_W001 Zna i rozumie podstawowe pojęcia informatyki, zna architekturę i działanie prostego komputera, zna podstawowe zadania systemu operacyjnego ETP1A_W14 Egzamin
M_W002 Zna i rozumie proceduralny język programowania ETP1A_W14 Egzamin
M_W003 Zna i rozumie podstawowe mechanizmy budowy algorytmów ETP1A_W14 Egzamin
M_W004 Zna i rozumie podstawowe klasyczne algorytmy ETP1A_W14 Egzamin
Umiejętności: potrafi
M_U001 Potrafi rozwiązywać proste zadania algorytmiczne ETP1A_U15 Projekt
M_U002 Potrafi zapisywać algorytmy w proceduralnym języku programowania ETP1A_U15 Projekt
M_U003 Potrafi stosować proste i strukturalne typy danych ETP1A_U15 Projekt
M_U004 Potrafi stosować dekompozycję problemu ETP1A_U15 Projekt
Kompetencje społeczne: jest gotów do
M_K001 Rozumie potrzebę uczenia się ETP1A_K01 Aktywność na zajęciach
Liczba godzin zajęć w ramach poszczególnych form zajęć:
SUMA (godz.)
Wykład
Ćwicz. aud
Ćwicz. lab
Ćw. proj.
Konw.
Zaj. sem.
Zaj. prakt
Zaj. terenowe
Zaj. warsztatowe
Prace kontr. przejść.
Lektorat
56 28 0 28 0 0 0 0 0 0 0 0
Matryca kierunkowych efektów uczenia się w odniesieniu do form zajęć i sposobu zaliczenia, które pozwalają na ich uzyskanie
Kod MEU Student, który zaliczył moduł zajęć zna i rozumie/potrafi/jest gotów do Forma zajęć dydaktycznych
Wykład
Ćwicz. aud
Ćwicz. lab
Ćw. proj.
Konw.
Zaj. sem.
Zaj. prakt
Zaj. terenowe
Zaj. warsztatowe
Prace kontr. przejść.
Lektorat
Wiedza
M_W001 Zna i rozumie podstawowe pojęcia informatyki, zna architekturę i działanie prostego komputera, zna podstawowe zadania systemu operacyjnego + - + - - - - - - - -
M_W002 Zna i rozumie proceduralny język programowania + - + - - - - - - - -
M_W003 Zna i rozumie podstawowe mechanizmy budowy algorytmów + - + - - - - - - - -
M_W004 Zna i rozumie podstawowe klasyczne algorytmy + - + - - - - - - - -
Umiejętności
M_U001 Potrafi rozwiązywać proste zadania algorytmiczne + - + - - - - - - - -
M_U002 Potrafi zapisywać algorytmy w proceduralnym języku programowania + - + - - - - - - - -
M_U003 Potrafi stosować proste i strukturalne typy danych + - + - - - - - - - -
M_U004 Potrafi stosować dekompozycję problemu + - + - - - - - - - -
Kompetencje społeczne
M_K001 Rozumie potrzebę uczenia się + - + - - - - - - - -
Nakład pracy studenta (bilans punktów ECTS)
Forma aktywności studenta Obciążenie studenta
Sumaryczne obciążenie pracą studenta 117 godz
Punkty ECTS za moduł 4 ECTS
Udział w zajęciach dydaktycznych/praktyka 56 godz
przygotowanie projektu, prezentacji, pracy pisemnej, sprawozdania 28 godz
Samodzielne studiowanie tematyki zajęć 28 godz
Dodatkowe godziny kontaktowe 5 godz
Szczegółowe treści kształcenia w ramach poszczególnych form zajęć (szczegółowy program wykładów i pozostałych zajęć)
Wykład (28h):

Zajęcia w ramach modułu prowadzone są w postaci wykładu (28 godzin) oraz ćwiczeń laboratoryjnych (28 godzin)

WYKŁADY

1. Wstęp, zasady, zaliczenie. Podstawowe pojęcia: informacja, sposób reprezentowania informacji, systemy liczbowe. Architektura komputera: model Von Neumana, procesor, pamięć, urządzenia we/wy, CPU – cykl rozkazowy procesora, instrukcje kodu maszynowego.
2. Rola systemu operacyjnego na przykładzie systemu Linux. Wyjaśnienie podstawowych pojęć: wielozadaniowość, wielodostęp, obsługa we/wy, powłoki, skrypty. Opis ekosystemu Linuxa: dystrybucja, komponenty systemu, biblioteki, programowanie w systemie Linux. Klasyfikacja języków programowania ze względu na: poziom wykonania, sposób wykonania, zastosowanie, model programowania. Pojęcie składni, semantyki.
3. Przykłady środowisk programistycznych (IDE). Kompilacja kodu źródłowego na przykładzie C/C++. Podstawowe typy danych, rzutowanie (konwersja) typów, operacje we/wy. Standardy (konwencje) kodowania. Algorytm, pseudokod i jego implementacja. Algorytm blokowy.
4. Analiza kodu: debugowanie (wykorzystanie IDE). Instrukcje sterujące, pętle, zasięg zmiennych.
5. Złożone struktury danych. Typ wyliczeniowy. Instrukcje preprocesora.
6. Tryb wskaźnikowy, dynamiczne zarządzanie pamięcią (alokacja pamięci).
7. Podejście wstępujące i zstępujące. Funkcje, przekazywania argumentów i wyniku, deklaracja i definicja funkcji, zasięg zmiennych w kontekście funkcji. Pojęcie biblioteki w języku C/C++.
8. Programowanie obiektowe: klasy, obiekty, metody, operator dostępu,
9. Obsługa pamięci masowej. Przeciążenie funkcji/metod.
10. Programowanie obiektowe: dziedziczenie, przeciążenie operatorów.
11. Programowanie obiektowe: polimorfizm, hermetyzacja, wirtualność,
12. Programowanie obiektowe: szablony. Przykłady funkcjonalności z biblioteki STL.
13. Funkcje rekurencyjne. Wielowątkowość na przykładzie biblioteki pthread. Analiza kodu: profilowanie pod kątem szybkości wykonywania.
14. Algorytm przeszukiwania drzewa binarnego. Analiza kodu pod względem wycieków pamięci (Valgrind). Refactoring kodu źródłowego. Rozwój języka C++. Omówienie pominiętych zagadnień.

Ćwiczenia laboratoryjne (28h):

ĆWICZENIA LABORATORYJNE

W module prowadzone są zajęcia laboratoryjne (komputerowe), w trakcie których studenci w sposób praktyczny realizują zagadnienia podane na wykładzie.

Pozostałe informacje
Metody i techniki kształcenia:
  • Wykład: Treści prezentowane na wykładzie są przekazywane w formie prezentacji multimedialnej.
  • Ćwiczenia laboratoryjne: W trakcie zajęć laboratoryjnych studenci samodzielnie rozwiązują zadany problem praktyczny, dobierając odpowiednie narzędzia. Prowadzący stymuluje grupę do refleksji nad problemem, tak by otrzymane wyniki miały wysoką wartość merytoryczną.
Warunki i sposób zaliczenia poszczególnych form zajęć, w tym zasady zaliczeń poprawkowych, a także warunki dopuszczenia do egzaminu:

Zaliczenie laboratorium jest obliczane na podstawie testów (tzw. wyjściówek) i kolokwiów odbywających się w trakcie semestru.

Zaliczenie poprawkowe przedmiotu możliwe jest na podstawie egzaminu ustnego. Warunkiem dopuszczenia do zaliczenia poprawkowego jest posiadanie nie więcej niż 3 nieusprawiedliwionych nieobecności na ćwiczeniach laboratoryjnych.

Zasady udziału w zajęciach:
  • Wykład:
    – Obecność obowiązkowa: Nie
    – Zasady udziału w zajęciach: Studenci uczestniczą w zajęciach poznając kolejne treści nauczania zgodnie z syllabusem przedmiotu. Studenci winni na bieżąco zadawać pytania i wyjaśniać wątpliwości. Rejestracja audiowizualna wykładu wymaga zgody prowadzącego.
  • Ćwiczenia laboratoryjne:
    – Obecność obowiązkowa: Tak
    – Zasady udziału w zajęciach: Studenci wykonują ćwiczenia laboratoryjne zgodnie z materiałami udostępnionymi przez prowadzącego. Student jest zobowiązany do przygotowania się w przedmiocie wykonywanego ćwiczenia, co może zostać zweryfikowane kolokwium w formie ustnej lub pisemnej. Zaliczenie zajęć odbywa się na podstawie zaprezentowania rozwiązania postawionego problemu.
Sposób obliczania oceny końcowej:

1. Aby uzyskać pozytywną ocenę końcową niezbędne jest uzyskanie pozytywnej oceny z laboratorium oraz z egzaminu.
2. Egzamin polega na analizie oraz napisaniu fragmentu programu według specyfikacji.
3. Ocena końcowa = floor( (ocena z egzaminu+ocena z laboratorium) / 2).
4. Zaliczenie poprawkowe przedmiotu możliwe jest na podstawie egzaminu ustnego. Warunkiem dopuszczenia do zaliczenia poprawkowego jest posiadanie nie więcej niż 3 nieusprawiedliwionych nieobecności podczas ćwiczeń laboratoryjnych.

Sposób i tryb wyrównywania zaległości powstałych wskutek nieobecności studenta na zajęciach:

Student wykonuje laboratoria samodzielnie w ramach godzin niekontaktowych. Używa do tego celu konspektów dostarczonych do zajęć. Student może konsultować wyniki swojej pracy w ramach konsultacji z prowadzącym laboratorium lub wykład.

Wymagania wstępne i dodatkowe, z uwzględnieniem sekwencyjności modułów :

Znajomość matematyki (systemy pozycyjne, kombinatoryka, logarytmy)

Zalecana literatura i pomoce naukowe:

1. Stephen Prata, Język C++
2. Jerzy Grębosz, Symfonia C++
3. Bjarne Stroustrup, Język C++
4. P. Wróblewski: Algorytmy, struktury danych i techniki programowania

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

- Bulat, Jaroslaw, et al. “Data processing tasks in wireless GI endoscopy: Image-based capsule localization & navigation and video compression.” Engineering in Medicine and Biology Society, 2007. EMBS 2007. 29th Annual International Conference of the IEEE. IEEE, 2007.
- Bułat, Jarosław, and Andrzej Głowacz. “Vision-based navigation assistance for visually impaired individuals using general purpose mobile devices.” Signals and Electronic Systems (ICSES), 2016 International Conference on. IEEE, 2016.

Informacje dodatkowe: