Wstęp do informatyki (potok II) 1000-111bWI1b
- Co to jest informatyka - krótka historia. Pojęcie zadania, danych, wyniku i algorytmu. Budowa komputera, system operacyjny i jego zadania (w lab. zapoznanie się z Linuxem i podstawowymi programami).
- Od problemu do programu: Zadania i algorytmy. Opis słowny algorytmu. Przykłady zadań i algorytmów (np. proste sortowania). Kod źródłowy, kompilacja, program wykonywalny.
- Reprezentacja liczb w komputerze i arytmetyka zmiennopozycyjna. Standard IEEE-754. Proste algorytmy numeryczne (np. sumowanie, schemat Hornera, mnożenie macierzy). Błędy zaokrągleń.
- Wprowadzenie do programowania: Podstawowe konstrukcje języka programowania imperatywnego (język C). Proste typy danych, deklaracje zmiennych. Instrukcja przypisania, instrukcje warunkowe, instrukcja złożona. Iteracja - instrukcje for, while. Złożone typy danych: tablice, struktury. Procedury i funkcje, przekazywanie parametrów, deklaracje lokalne i globalne, zasięg widoczności. Pliki. Procedury wejścia/wyjścia. Poprawność programu (częściowa, całkowita, metoda niezmienników).
- Rekurencja: Proste algorytmy rekurencyjne. Zasada "dziel i rządź", programowanie dynamiczne i zachłanne.
Rodzaj przedmiotu
Koordynatorzy przedmiotu
Efekty kształcenia
Zna materiał wyłożony w trakcie wykładu i utrwalony na ćwiczeniach oraz laboratorium. Potrafi wykorzystać zdobytą wiedzę do rozwiązywania zadań.
W szczególności:
- Zna podstawowe pojęcia informatyczne: zadania, danych, wyniku i algorytmu.
- Rozpoznaje problemy, które można rozwiązać algorytmicznie i potrafi podać ich specyfikację.
- Potrafi opracować i podać zrozumiały opis słowny algorytmu lub w pseudokodzie, a także zaimplementować go w omawianym na wykładzie języku programowania imperatywnego.
- Rozróżnia kod źródłowy, kompilację i program wykonywalny.
- Umie napisać, uruchomić, testować i poprawić program komputerowy w omawianym na wykładzie języku programowania imperatywnego, wykorzystując w programie m.in. konstrukcje iteracyjne i warunkowe, instrukcje wejścia-wyjścia, operacje i funkcje logiczne i matematyczne, wskaźniki oraz dynamiczną alokację pamięci.
- Zna podstawowe techniki programowania.
- Zna podstawowe pojęcia i fakty dotyczące arytmetyki zmiennopozycyjnej, a także jej główne ograniczenia.
- Potrafi opracować i zaimplementować algorytmy dla prostych zadań, w tym obliczeniowych (np. sumowania, obliczania wartości wielomianu, mnożenia macierzy) oraz opartych na zależnościach funkcyjnych.
- Zna i potrafi wykorzystać w praktyce rekurencję oraz zasadę "dziel i rządź".
- Zna klasyczne algorytmy, m.in. Euklidesa, sortowania, wyszukiwania binarnego.
- Rozumie i docenia znaczenie poznanych technologii oraz niebezpieczeństwa związane z ich niewłaściwym wykorzystaniem.
Kryteria oceniania
Zaliczenie ćwiczeń odbywa się na podstawie punktów otrzymanych za prace domowe (40%), projekt programistyczny (30%) i kolokwium (30%).
W sumie trzeba zdobyć co najmniej połowę punktów możliwych do zdobycia.
Egzamin pisemny składa się z zadań, można za niego dostać do 100% punktów, przy czym trzeba zdobyć co najmniej 50%. Ocena po egzaminie jest wystawiana na podstawie średniej liczb punktów zdobytych na ćwiczeniach i na egzaminie. Ocena ta może zostać zmieniona po egzaminie ustnym, przeprowadzanym dla tych, którzy zostaną zaproszeni lub sami się zgłoszą.
Literatura
- Podręcznik do nauki wybranego języka programowania.
- Cormen T.H., Leiserson C.E., Rivest R.L., Stein C. "Wprowadzenie do algorytmów", WNT, Warszawa, 2005.
- L. Banachowski, K. Diks, W. Rytter, "Algorytmy i struktury danych", WNT, Warszawa 2002.
- N. Wirth, "Algorytmy + struktury danych = programy".
- N. Wirth, "Wstęp do programowania systematycznego".
- D. Harel, "Rzecz o istocie informatyki".
Więcej informacji
Dodatkowe informacje (np. o kalendarzu rejestracji, prowadzących zajęcia, lokalizacji i terminach zajęć) mogą być dostępne w serwisie USOSweb: