Moduł oferowany także w ramach programów studiów:
Informacje ogólne:
Nazwa:
Podstawy informatyki
Tok studiów:
2014/2015
Kod:
IEL-1-107-s
Wydział:
Informatyki, Elektroniki i Telekomunikacji
Poziom studiów:
Studia I stopnia
Specjalność:
-
Kierunek:
Elektronika
Semestr:
1
Profil kształcenia:
Ogólnoakademicki (A)
Język wykładowy:
Polski
Forma i tryb studiów:
Stacjonarne
Strona www:
 
Osoba odpowiedzialna:
prof. zw. dr hab. inż. Cyganek Bogusław (cyganek@agh.edu.pl)
Osoby prowadzące:
prof. zw. dr hab. inż. Cyganek Bogusław (cyganek@agh.edu.pl)
Gwiżdż Patryk (patryk.gwizdz@gmail.com)
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 Student posiada wiedzę w zakresie architektury komputerów, systemów operacyjnych, systemów liczbowych oraz implementacji algorytmów. EL1A_W15 Kolokwium
M_W002 Student posiada wiedzę w zakresie podstaw programowania w językach C/C++. Posiada wiedzę dotyczącą sposobów reprezentacji danych w programie, stosowania podstawowych instrukcji, operatorów, funkcji, klas i obiektów. EL1A_W15 Kolokwium
Umiejętności
M_U001 Student potrafi stworzyć oprogramowanie zgodnie z określonymi standardami programistycznymi, potrafi pozyskiwać informacje z literatury i innych źródeł, potrafi integrować uzyskane informacje. EL1A_U14, EL1A_U01 Kolokwium
M_U002 Student potrafi opracować i zaimplementować określony algorytm posługując się podstawowymi mechanizmami programowania oraz stworzyć odpowiednią dokumentację. EL1A_U14, EL1A_U18, EL1A_U15 Kolokwium
Kompetencje społeczne
M_K001 Student ma świadomość ciągłego podnoszenia swoich kwalifikacji. EL1A_K01
M_K002 Student potrafi myśleć i działać w sposób kreatywny i przedsiębiorczy. EL1A_K05
M_K003 Student rozumie potrzebę formułowania i przekazywania społeczeństwu informacji i opinii dotyczących osiągnięć elektroniki, telekomunikacji i innych aspektów działalności inżynierskiej. EL1A_K06
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 Student posiada wiedzę w zakresie architektury komputerów, systemów operacyjnych, systemów liczbowych oraz implementacji algorytmów. + - + + - - - - - - -
M_W002 Student posiada wiedzę w zakresie podstaw programowania w językach C/C++. Posiada wiedzę dotyczącą sposobów reprezentacji danych w programie, stosowania podstawowych instrukcji, operatorów, funkcji, klas i obiektów. + - + + - - - - - - -
Umiejętności
M_U001 Student potrafi stworzyć oprogramowanie zgodnie z określonymi standardami programistycznymi, potrafi pozyskiwać informacje z literatury i innych źródeł, potrafi integrować uzyskane informacje. + - + + - - - - - - -
M_U002 Student potrafi opracować i zaimplementować określony algorytm posługując się podstawowymi mechanizmami programowania oraz stworzyć odpowiednią dokumentację. + - + + - - - - - - -
Kompetencje społeczne
M_K001 Student ma świadomość ciągłego podnoszenia swoich kwalifikacji. + - + + - - - - - - -
M_K002 Student potrafi myśleć i działać w sposób kreatywny i przedsiębiorczy. + - + + - - - - - - -
M_K003 Student rozumie potrzebę formułowania i przekazywania społeczeństwu informacji i opinii dotyczących osiągnięć elektroniki, telekomunikacji i innych aspektów działalności inżynierskiej. + - + + - - - - - - -
Treść modułu zajęć (program wykładów i pozostałych zajęć)
Wykład:
  1. Podstawy – Wprowadzenie do obliczeń i komputerów – 2 godziny

    Wstęp do komputerów i obliczeń – rys historyczny. Przedstawienie budowy komputera w kontekście programowanie. Podstawy API (Application Programming Interface) komputera: rola oraz cykle pracy mikroprocesora, przyjmowanie i obsługa przerwań, przenoszenie sterowania, rola rejestrów, rola stosu mikroprocesora; Budowa oraz organizacja pamięci operacyjnej komputera, tryby adresowania, inicjalizowanie danych, rodzaje danych, abstrakcja danych. Metody programowania komputerów – przegląd.

  2. Wprowadzenie do systemów Windows oraz Linux – 2 godziny

    Rola systemu operacyjnego. Podstawowe definicje, opis modułów, podobieństwa oraz różnice między systemami operacyjnymi. Zarządzanie zadaniami: pojęcia wątków, procesów, rejestru komputera, sterowników urządzeń. Podstawowe komendy systemu Linux: omówienie roli oraz przykłady wywołań.

  3. Pierwszy program – Elementarz programowania w języku C/C++ – 4 godziny

    Pierwszy program: podstawowe pliki nagłówkowe, dyrektywa preprocesora (#include), funkcja main. Podstawowe operacje input/output: użycie obiektów cin oraz cout, wypisywanie komunikatów na ekran, wprowadzanie danych z klawiatury, otwarcie namespace std. Organizacja programu. Etapy budowy oprogramowania: preprocessing, kompilacja, łączenie (linker). Co to jest algorytm i jak go przedstawiamy (diagram aktywności UML). Podstawowe typy danych (char, int, double), podstawy pisania wyrażeń, podstawowe instrukcje C/C++: warunkowa if, podstawy pętli for.

  4. Podstawowe typy danych, wyrażenia oraz operatory – 4 godzin

    Podstawowe typy danych, pojęcie bitu i bajtu, dane całkowitoliczbowe, dane zmiennoprzecinkowe, kodowanie znaków alfanumerycznych, pojęcie zmiennej i stałej, pojęcie identyfikatora, definiowanie zmiennych i stałych.
    Pojęcie tablicy: definicja tablicy, indeksowanie elementów tablicy, tablice tablic. Pojęcie struktury: definicja struktur, reprezentacja struktur w pamięci komputera, tablice struktur.
    Podstawy używania obiektów vector oraz string biblioteki STL.
    Podstawy zapisu wyrażeń w języku C/C++. Omówienie podstawowych grup operatorów: arytmetyczne, logiczne, bitowe; Przykłady podstawowych konstrukcji ze szczególnym uwzględnieniem programowania systemów wbudowanych.

  5. Wskaźniki, referencje, funkcje – 4 godziny

    Pojęcie wskaźnika, definicje, operacje na wskaźnikach, adresowanie pośrednie i bezpośrednie pamięci. Zasady “arytmetyki” wskaźników. Manipulacja na tablicach za pomocą wskaźników. Rola “sentinel’a” w przetwarzaniu danych. Dostęp do elementów struktury za pomocą wskaźników. Pojęcie referencji oraz podstawowe operacje na referencjach. Omówienie różnic pomiędzy wskaźnikami oraz referencjami.
    Omówienie idei stosowania funkcji, jej rola w systemie oprogramowania. Rodzaje funkcji. Idea grupowania instrukcji w bloku. Omówienie sposobów przekazywania parametrów do i z funkcji. Przekazywanie złożonych struktur, tablic, obiektów do i z funkcji.
    Pojecie funkcji rekursywnych wraz z przykładami; Omówienie roli stosu przy wywoływaniu funkcji.
    Omówienie funkcji kopiowania obszarów pamięci. Podstawowe instrukcje dostępne w systemie – przegląd: funkcje kopiowania oraz inicjalizacji pamięci, funkcje manipulacji na ciągach tekstowych, podstawowe funkcje matematyczne.

  6. Systemy liczbowe – 2 godzin

    Wprowadzenie do zagadnień reprezentacji liczb w pamięci komputera. Podstawowe systemy liczbowe: dziesiętny, binarny, oktalny, heksadecymalny. Podstawowe algorytmy przeliczania wartości pomiędzy systemami liczbowymi. Przedstawienie sposobów reprezentacji wartości ujemnych, kody U1 oraz U2. Omówienie metod reprezentacji wartości ułamkowych w reprezentacji stałoprzecinkowej. Omówienie pojęć carry oraz overflow. Omówienie zasad arytmetyki w różnych systemach liczbowych: operacje dodawania, odejmowania, mnożenia oraz dzielenia. Przedstawienie podstaw reprezentacji wartości w systemie zmiennoprzecinkowym.

  7. Wstęp do metod obiektowych oraz reprezentacji danych – 4 godziny

    Przedstawienie zasad reprezentacji obiektowej oraz programowania obiektowego: pojęcie łączenia danych oraz funkcji w klasach, pojęcie enkapsulacji, dane oraz funkcje prywatne, interfejs klasy. Omówienie charakterystycznych funkcji klasy: konstruktory, destruktory, funkcje dostępu do danych prywatnych (getters/setters). Sposoby tworzenia własnych klas oraz dodawania własnych funkcji oraz danych do klasy. Role oraz przykłady klas do obliczeń matematycznych oraz do przechowywania danych. Podstawy operacji wejścia/wyjścia dla klas.

  8. Podstawowe algorytmy obliczeniowe i struktury danych – 4 godziny

    Przedstawienie specyfiki reprezentacji liczb w pamięci komputera oraz problemów obliczeniowych: błędy kwantyzacji oraz zaokrągleń; Sposoby porównywania liczb, zabezpieczenie przed dzieleniem przez wartości bardzo małe. Omówienie specyfiki obliczeń iteracyjnych; Wyjaśnienie mechanizmów iteracji, pętle for (rozszerzenie informacji) oraz while i do-while. Omówienie problemu zagwarantowania stopu algorytmów.
    Przykład projektu oraz implementacji zagadnienia znajdowania miejsc zerowych funkcji metodą Newtona; Zastosowanie metody Newtona do znajdowania wartości pierwiastka kwadratowego; Porównanie z metodą kolejnych przybliżeń. Przedstawienie oraz wykorzystanie technik pamięci asocjacyjnej look-up table.
    Reprezentacja wektorów oraz macierzy w komputerze. Implementacja podstawowych operacji na wektorach oraz macierzach: dodawanie, odejmowanie, mnożenie, odwracanie macierzy. Wprowadzenie do zagadnienia komputerowego rozwiązywania układów równań liniowych.
    Wprowadzenie do zagadnień zarządzania pamięcią: rodzaje zmiennych w kontekście pamięci, operatory new oraz delete, odpowiedzialność za tworzenie oraz usuwanie obiektów.

  9. Podstawowe algorytmy i struktury przetwarzania danych – 4 godziny

    Omówienie struktur listowych oraz podstawowych operacji na listach: tworzenie listy, nośnik listy, dodawanie oraz odłączanie obiektów listy, usuwanie listy; Przykład listy obiektów funkcyjnych w zastosowaniu do przetwarzania usług w systemie wbudowanym. Zarys struktur drzewiastych, omówienie podstawowych operacji na drzewach binarnych.
    Omówienie oraz przedstawienie implementacji podstawowych algorytmów sortowania: bąbelkowe, przez wyszukiwanie oraz przez proste wstawianie. Przedstawienie zagadnienia przeszukiwania binarnego. Przedstawienie zagadnienia przeszukiwania tekstów: algorytm typu brute-force (omówienie tej klasy algorytmów), algorytm Boyer-Moore-Horspool.
    Przechowywanie danych, prosta baza danych – reprezentacja oraz podstawowe operacje.

Ćwiczenia laboratoryjne:
  1. Podstawy używania i programowania w środowisku Linux – 2 godziny

    Ćwiczenie podstawowych komend systemu, tworzenie oraz edycja plików, modyfikacja praw dostępu oraz kasowanie plików, poszukiwanie plików w systemie, sprawdzanie ilości procesów, praca w tle, pisanie własnego programu, kompilacja, uruchomienie oraz elementy debuggowania.

  2. Opracowanie oraz implementacja problemu reprezentacji oraz obliczania pierwiastków trójmianu kwadratowego – 2 godziny

    Praca w środowisku Linux, dokumentacja wykonywanego zadania, realizacja programowa, metody kompilacji, konsolidacji oraz debuggowania, metody radzenia sobie z błędami.

  3. Przekształcenie programu pierwiastków trójmianu z poprzednich zajęć do wersji z wydzielonymi funkcjami – 2 godziny

    Praktyka projektowania oraz implementacji funkcji, dobór właściwych nazw dla identyfikatorów, przekazywania argumentów do i z funkcji. Ćwiczenie umiejętności korzystania z dostępnych bibliotek i funkcji (funkcje matematyczne, operacje wejścia/wyjścia).

  4. Ćwiczenie w zakresie zarządzania zmiennymi, pamięcią oraz manipulacji bitowej – 2 godziny

    Włączanie i wyłączanie poszczególnych bitów, inicjalizacja pamięci, implementacja funkcji kopiowania pamięci.

  5. Projekt oraz implementacja wersji obliczania pierwiastka kwadratowego – 2 godziny

    Proste przeszukiwanie w wersji assemblerowej, wersja w C, wersja z wykorzystaniem metody Newtona znajdowania miejsc zerowych funkcji. Zastosowanie metody miejsc zerowych funkcji do rozwiązania problemu trójmianu kwadratowego z poprzednich ćwiczeń. Wprowadzenie do obliczeń w środowisku Windows i Visual .NET.

  6. Przechowywanie oraz operacje na macierzach – 4 godziny

    Projekt oprogramowania do przechowywania oraz manipulacji na macierzach. Implementacja algorytmu rozwiązywania układów równań liniowych.

  7. Projekt prostej bazy danych – 4 godziny

    Wprowadzenie do zagadnień reprezentacji oraz przechowywania danych, reprezentacja krotek, podstawowe operacje na danych, operacje wejścia/wyjścia.

  8. Projekt oraz implementacja prostego interfejsu użytkownika do bazy danych – 2 godziny

    Przedstawienie środowiska do programowania interfejsów użytkownika. Sposoby użycia wizarda do tworzenia interfejsu użytkownika. Metody obsługi podstawowych sygnałów i komunikatów systemu (message processing).

Ćwiczenia projektowe:
Projekt własny – 10 godz

Tematy projektów zostaną dostarczone przez prowadzących. Studenci będą mieli również możliwość realizacji własnych tematów po uprzednim zatwierdzaniu tematu przez prowadzącego.

Nakład pracy studenta (bilans punktów ECTS)
Forma aktywności studenta Obciążenie studenta
Sumaryczne obciążenie pracą studenta 160 godz
Punkty ECTS za moduł 5 ECTS
Udział w wykładach 30 godz
Samodzielne studiowanie tematyki zajęć 30 godz
Udział w ćwiczeniach laboratoryjnych 20 godz
Przygotowanie do zajęć 30 godz
Dodatkowe godziny kontaktowe z nauczycielem 10 godz
Wykonanie projektu 40 godz
Pozostałe informacje
Sposób obliczania oceny końcowej:

1. Warunkiem uzyskania pozytywnej oceny końcowej jest uzyskanie pozytywnej oceny z laboratorium oraz kolokwium zaliczeniowego z wykładu.
2. Na wykładach możliwe jest otrzymanie oceny za przedstawienie prezentacji wybranego tematu.
3. Obliczamy średnią arytmetyczną z ocen uzyskanych we wszystkich terminach (terminy poprawkowe z wagą 2).
4. Wyznaczmy ocenę końcową OK na podstawie algorytmu:
if av>4.75 then OK:=5.0 else
if av>4.25 then OK:=4.5 else
if av>3.75 then OK:=4.0 else
if sr>3.25 then OK:=3.5 else
if sr>=3.0 then OK:=3.0

Wymagania wstępne i dodatkowe:

• Podstawy metodyki i technik programowania

Zalecana literatura i pomoce naukowe:

1. Stroustrup B. Programming. Principles and Practice Using C++. Addison Wesley 2009 (tł. polskie: Programowanie. Teoria i praktyka z wykorzystaniem C++, Helion).
2. Stroustrup B. The C++ Programming Language, 2000 (tł. polskie: Język C++, WNT).
3. Lippman S. Essential C++. Addison Wesley, 2005 (tł. polskie: Istota języka C++. Zwięzły opis, WNT).
4. Cormen T. H., Leiserson C. E., Rivest R. L., Stein C. Introduction to Algorithms.The MIT Press, 2009 (tł. polskie Algorytmy bez tajemnic. Helion).
5. Grębosz J. Symfonia C++ Standard Tom 1-2. Wydawnictwo Edition 2000, 2009.

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

Nie podano dodatkowych publikacji

Informacje dodatkowe:

Brak