Moduł oferowany także w ramach programów studiów:
Informacje ogólne:
Nazwa:
Podstawy informatyki
Tok studiów:
2014/2015
Kod:
ITE-1-109-s
Wydział:
Informatyki, Elektroniki i Telekomunikacji
Poziom studiów:
Studia I stopnia
Specjalność:
-
Kierunek:
Teleinformatyka
Semestr:
1
Profil kształcenia:
Ogólnoakademicki (A)
Język wykładowy:
Polski
Forma i tryb studiów:
Stacjonarne
Strona www:
 
Osoba odpowiedzialna:
prof. dr hab. inż. Zieliński Tomasz (tzielin@agh.edu.pl)
Osoby prowadzące:
dr inż. Bułat Jarosław (kwant@agh.edu.pl)
dr inż. Dańda Jacek (danda@agh.edu.pl)
dr inż. Orzechowski Tomasz Marcin (tomeko@agh.edu.pl)
Wszołek Jacek (jwszolek@kt.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 podstawowe pojęcia informatyki, zna architekturę i działanie prostego komputera, zna podstawowe zadania systemu operacyjnego TE1A_W10 Kolokwium
M_W002 Zna i rozumie proceduralny język programowania TE1A_W10 Kolokwium
M_W003 Zna i rozumie podstawowe mechanizmy budowy algorytmów TE1A_W10 Kolokwium
M_W004 Zna i rozumie podstawowe klasyczne algorytmy TE1A_W10 Kolokwium
Umiejętności
M_U001 Potrafi rozwiązywać proste zadania algorytmiczne TE1A_U21 Projekt
M_U002 Potrafi zapisywać algorytmy w proceduralnym języku programowania TE1A_U21 Projekt
M_U003 Potrafi stosować proste i strukturalne typy danych TE1A_U21 Projekt
M_U004 Potrafi stosować dekompozycję problemu TE1A_U21 Projekt
Kompetencje społeczne
M_K001 Rozumie potrzebę uczenia się TE1A_K01
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 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ę + - + - - - - - - - -
Treść modułu zajęć (program wykładów i pozostałych zajęć)
Wykład:

1. Praktyczne korzystanie z systemu UNIX: rola systemu operacyjnego, wielozadaniowość, wielodostęp, podstawowe polecenia, powłoki, skrypty.
2. Architektura prostego komputera: procesor, pamięć, pojęcie bitu, bajtu, słowa, urządzenia we/wy, przerwania, stos. Cykl rozkazowy procesora, instrukcje kodu maszynowego, język niskiego poziomu, język wysokiego poziomu. Reprezentacja liczb w komputerze, strony kodowe znaków.
3. Język programowania, składnia, semantyka, pragmatyka języka programowania. Sposoby opisu składni i semantyki. Programowanie proceduralne: preprocesor, kompilacja, konsolidacja, pakiety, moduły, biblioteki. Pierwszy program w języku C.
4-5. Podstawy programowania w języku C: typy zmiennych, zmienne pojedyncze i tablice zmiennych, pliki. Instrukcje sterujące. Procedura, funkcja, przekazywanie parametrów do procedur i funkcji, zmienne lokalne, stos systemowy i jego rola przy wywoływaniu procedur i funkcji. Podejście zstępujące i wstępujące w programowaniu.
6. Wskaźniki. Deklaracja, inicjalizacja oraz wykorzystanie do pośredniej manipulacji zmiennymi. Relacja pomiędzy wskaźnikiem a tablicą. Przekazywanie argumentów funkcji przez wskaźnik. Dynamiczna alokacja pamięci i problemy związane z zarządzaniem pamięcią w systemach bez mechanizmu ,,garbage collection’’.
7. Informacja, zadanie algorytmiczne, algorytm i sposoby jego zapisu w postaci schematu blokowego. Przykładowe proste algorytmy i ich implementacja programowa.
8. Funkcje rekurencyjne. Mechanizm rekurencji i jego realizacja na poziomie kodu maszynowego. Problemy rozwiązywane z użyciem rekurencji, celowość stosowania rozwiązań rekurencyjnych.
9. Podstawowe algorytmy sortowania i wyszukiwania (w tym rekurencyjne). Zasada “dziel-i-rządź” w algorytmach. Algorytm wyszukiwania połówkowego.
10. Statyczne struktury danych. Tablice struktur, dostęp do elementów struktur i tablic poprzez wskaźnik. Dynamiczne struktury danych. Lista jedno-, dwu-kierunkowa, drzewo, kolejka, stos.
11. Język C++: obiekt, klasa, dziedziczenie, hermetyzacja, polimorfizm, wirtualność. Przykładowe programy.
12. Język Matlab jako narzędzie do obliczeń inżynierskich. Przykłady obliczeń technicznych.
13. Paradygmaty w programowaniu. Kompilacja i wykonanie a interpretacja programu. Technologie programowania. Rodzaje języków programowania: proceduralne, obiektowe; interpretowane, kompilowane, mieszane; skryptowe; imperatywne, deklaratywne. Podstawowe pojęcia ze złożoności obliczeniowej algorytmów. Złożoność obliczeniowa, funkcja złożoności obliczeniowej, rząd złożoności obliczeniowej. Algorytmy wielomianowe i wykładnicze – przykłady problemów. Problemy nierozwiązywalne, problem stopu.
14. Analiza i testowanie kodu wynikowego za pomocą narzędzi gdb (GNU Debugger), gprof (Profiler), valgrind (wykrywanie wycieków pamięci).
15. Wybrane zagadnienia: środowiska programistyczne (IDE) – ułatwienie pracy. Wzorce projektowe (design patterns) a praca zespołowa. Standardy kodowania – nazewnictwo zmiennych/funkcji, formatowanie kodu źródłowego, podział programu na funkcje, moduły i biblioteki.

Ćwiczenia laboratoryjne:

W module prowadzone są zajęcia laboratoryjne (komputerowe), w trakcie których studenci piszą skrypty komend systemu operacyjnego LINUX w języku wybranej powłoki oraz programy w języku C/C++ (bez Matlaba). Treści tych zajęć ugruntowują i rozszerzają wiedzę przekazywaną podczas wykładów.

1. Wprowadzenie do rodziny systemów uniksopodobnych (Linux). Podstawowe komendy powłoki, wyrażenia regularne, zmienne środowiskowe, zmienne powłoki.
2. Zarządzanie prawami dostępu, struktura katalogów. Pisanie skryptów w powłokach z rodziny csh i sh. Operacje na plikach i strumieniach w powłoce systemów uniksopodobnych.
3. Wprowadzenie do języka C, deklaracja, definicja, podstawowa struktura programu.
4. Różne rodzaje pętli, operacje wejścia-wyjścia, obliczenia numeryczne w języku C.
5. Instrukcje sterujące, proste i złożone warunki logiczne, operatory binarne.
6. Wskaźniki. Deklaracja, inicjalizacja, zmiana wartości wskaźnika i wskazywanych przez nie zmiennych. Podstawowe operacje na danych za pomocą wskaźników.
7. Tablice jedno i wielowymiarowe. Operacje na tablicach. Łańcuchy znakowe, stałe znakowe. Operacje wejścia wyjścia oraz manipulacje łańcuchami znakowymi.
8. Złożone typy danych – struktury i unie. Manipulacja polami struktur uporządkowanych w tablicach.
9. Operacje na plikach. Różne metody dostępu do danych zapisanych w systemie plików systemu operacyjnego..
10. Funkcje. Definicje, deklaracje, przekazywanie danych przez wartość i wskaźnik.
11. Funkcje rekurencyjne. Ilustracja korzyści i zagrożeń wynikających z wykorzystania funkcji rekurencyjnych. Praktyczne wykorzystanie w implementacji algorytmów obliczeniowych.
12. Dynamiczne struktury danych, rezerwowanie i zwalnianie pamięci pod zmienne dowolnego typu. Problem zarządzania pamięcią w językach bez mechanizmu ,,garbage collection’’.
13. Algorytmy sortowania: bąbelkowy, QuickSort, qsort(). Algorytm wyszukiwania połówkowego
14. Algorytmy sortowania i wyszukiwania w strukturach drzewiastych.
15. Sprawdzenie wiadomości. Wystawienie ocen.

Nakład pracy studenta (bilans punktów ECTS)
Forma aktywności studenta Obciążenie studenta
Sumaryczne obciążenie pracą studenta 125 godz
Punkty ECTS za moduł 5 ECTS
Udział w wykładach 30 godz
Samodzielne studiowanie tematyki zajęć 35 godz
Udział w zajęciach praktycznych 30 godz
Przygotowanie do zajęć 30 godz
Pozostałe informacje
Sposób obliczania oceny końcowej:

1. Aby uzyskać pozytywną ocenę końcową niezbędne jest uzyskanie pozytywnej oceny z ćwiczeń laboratoryjnych oraz kolokwium z wykładu.
2. Obliczamy średnią arytmetyczną z ocen zaliczenia i kolokwium uzyskanych we wszystkich terminach.
3. Wyznaczmy ocenę końcową na podstawie zależności:
if sr>4.75 then OK:=5.0 else
if sr>4.25 then OK:=4.5 else
if sr>3.75 then OK:=4.0 else
if sr>3.25 then OK:=3.5 else OK:=3
4. Jeżeli pozytywną ocenę z ćwiczeń i kolokwium z wykładu uzyskano w pierwszym terminie oraz ocena końcowa jest mniejsza niż 5.0 to ocena końcowa jest podnoszona o 0.5

Wymagania wstępne i dodatkowe:

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

Zalecana literatura i pomoce naukowe:

1. G. Brookshear: Informatyka w ogólnym zarysie, WNT, 2003
2. W. Stallings: Organizacja i architektura systemu komputerowego. WNT, Warszawa 2004.
3. P. P. Silvester: System operacyjny UNIX. WNT, Warszawa 1990.
4. B.W. Kernighan, D.M. Ritchie: Język C. WNT, Warszawa 1988.
5. J. Grębosz: Symfonia C++ standard. Wydawnictwo Edition 2000, Kraków 2005.
6. S. Prata: Język C. Szkoła programowania. wyd. 5, Helion, Gliwice 2006.
7. D. Harel, F.Yishai: Rzecz o istocie informatyki – algorytmika, WNT, 2008
8. N. Wirth: Algorytmy + Struktury danych = Programy. WNT, Warszawa 1989.
9. P. Wróblewski: Algorytmy, struktury danych i techniki programowania. Helion, Gliwice 2003.
10. P. Rudra: Matlab 7 dla naukowców i inżynierów. PWN, 2007.
11. J. Brzózka, L. Dorobczyński: Matlab środowisko obliczeń naukowo-technicznych. PWN, 2008.

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

Nie podano dodatkowych publikacji

Informacje dodatkowe:

Brak