Nazwa przedmiotu:
Algorytmy i struktury danych
Koordynator przedmiotu:
dr inż. Jadwiga Chudzicka
Status przedmiotu:
Obowiązkowy
Poziom kształcenia:
Studia I stopnia
Program:
Zarządzanie i Inżynieria Produkcji
Grupa przedmiotów:
Technologie informatyczne
Kod przedmiotu:
ASDAN
Semestr nominalny:
2 / rok ak. 2010/2011
Liczba punktów ECTS:
3
Liczba godzin pracy studenta związanych z osiągnięciem efektów uczenia się:
Liczba punktów ECTS na zajęciach wymagających bezpośredniego udziału nauczycieli akademickich:
Język prowadzenia zajęć:
polski
Liczba punktów ECTS, którą student uzyskuje w ramach zajęć o charakterze praktycznym:
Formy zajęć i ich wymiar w semestrze:
  • Wykład30h
  • Ćwiczenia0h
  • Laboratorium0h
  • Projekt0h
  • Lekcje komputerowe0h
Wymagania wstępne:
algorytmika, programowanie komputerów, algorytm, typy danych, struktury danych, złożoność algorytmów, rekurencja, sortowanie danych, algorytmy numeryczne, kodowanie danych, kompresja danych, grafy.
Limit liczby studentów:
Cel przedmiotu:
Przedmiot składa się tylko z jednostki wykładowej. Wykłady oparte są na prezentacjach multimedialnych prezentowanych przez prowadzącego. Elementem pracy twórczej w ramach wykładu jest tworzenie projektów rozwiązań zagadnień zaproponowanych przez wykładowcę na bazie schematów przedstawianych na zajęciach. Rozwiązania mogą być prezentowane w postaci schematów graficznych lub w wybranym języku programowania.
Treści kształcenia:
2h - Wprowadzenie do metodologii programowania Geneza algorytmiki. Pojęcia podstawowe. Definicja i cechy charakterystyczne poprawnych i efektywnych algorytmów. Sposoby zapisu algorytmów. Poprawność algorytmów. Języki programowania. 2h – Typy i struktury danych Typy proste i złożone. Przetwarzanie liczb, wartości logicznych i tekstów. Struktury danych: listy i ich tablicowe implementacje, kolejki, pojęcie stosu i jego zastosowania, drzewa, zbiory. 2h – Analiza złożoności algorytmów Terminologia i definicje. Typy złożoności obliczeniowej. Techniki optymalizacji programów. Ilustracja metod na przykładach. 2h – Techniki rekurencyjne Pojęcie rekurencji. Ilustracja rekurencji na przykładach: wyznaczanie wartości funkcji silnia, ciąg Fibonacciego. Typy programów rekurencyjnych. Pułapki programów rekurencyjnych. Rekurencje i ich odpowiedniki iteracyjne. 2h – Techniki sortowania Prezentacja metod sortowania: sortowanie przez wstawianie, sortowanie bąbelkowe, szybkie sortowanie, sortowanie przez kopcowanie, sortowanie przez scalanie, sortowanie zewnętrzne. Klasy algorytmów sortowania. 2h – Techniki przeszukiwania Przeszukiwanie liniowe. Przeszukiwanie binarne. Metody transformacji kluczowej. Funkcje matematyczne używane do konstruowania funkcji stosowanych w transformacji kluczowej. Zastosowania transformacji kluczowej. 2h – Przeszukiwanie tekstów Algorytmy przeszukiwania tekstów: typu brute-force, K-M-P, Boyera i Moore’a, Rabina i Karpa. 2h – Pierwszy sprawdzian Sporządzenie schematu blokowego przedstawiającego rozwiązanie konkretnego problemu i 2 lub 3 pytania teoretyczne. 2h – Algorytmy numeryczne cz. I Metody iteracyjne rozwiązywania układów równań liniowych. Metoda eliminacji Gaussa rozwiązywania układów równań liniowych. Poszukiwanie miejsc zerowych funkcji. Iteracyjne obliczanie wartości funkcji. 2h – Algorytmy numeryczne cz. II Interpolacja funkcji metodą Lagrange’a. Ekstrapolacja funkcji. Różniczkowanie funkcji metodą Stirlinga. Całkowanie funkcji metodą Simpsona. 2h – Algorytmika grafów. Kodowanie i kompresja danych Pojęcia podstawowe. Sposoby reprezentacji grafów. Operacje na grafach. Algorytmy poszukiwania najkrótszych dróg w grafach. Podstawowe wiadomości na temat kodowania danych (szyfrowania wiadomości) i popularne metody łamania szyfrów. Omówienie wybranych metod kompresji danych. 2h – Optymalizacja algorytmów Optymalizacja poprzez transformację algorytmów rekurencyjnych na ich postać iteracyjną. Powody, dla których stosuje się derekursywację. Wykorzystanie stosu. Schematy derekursywacji. 2h – Inne techniki programowania Metody heurystyczne. Algorytmy genetyczne. Programowanie typu „dziel i zwyciężaj”. Przykłady algorytmów. Programowanie dynamiczne. 2h – Drugi sprawdzian Sprawdzian pisemny: konstrukcja algorytmu rozwiązującego konkretny problem i 2 lub 3 pytania teoretyczne. 2h – Końcowe zaliczenia. Wpisy do indeksów Poprawa ocen niedostatecznych w formie sprawdzianu pisemnego. Studenci, którzy uzyskali oceny pozytywne, ale niższe od 5 również mogą spróbować poprawić oceny. Natomiast studenci, którzy nie piszą kolokwium poprawkowego otrzymują w tym dniu wpis do indeksu.
Metody oceny:
Prace pisemne sprawdzające praktyczne umiejętności rozwiązywania typowych problemów spotykanych w praktyce inżynierskiej i pytania sprawdzające wiedzę teoretyczną.
Egzamin:
Literatura:
• Wróblewski P., Algorytmy: struktury danych i techniki programowania, Wyd. Helion, Gliwice 2010. • Czech Z., Deorowicz S., Fabian P., Algorytmy i struktury danych: wybrane zagadnienia, Wydawnictwo Politechniki Śląskiej, Gliwice 2007. • Banachowski L., Diks K., Rytter W., Algorytmy i struktury danych, Wydawnictwa Naukowo-Techniczne, Warszawa 2006. • Dańko A., Algorytmy i struktury danych: zadania, Wydawnictwo Polsko-Japońskiej Wyższej Szkoły Technik Komputerowych, Warszawa 2006.
Witryna www przedmiotu:
Uwagi:

Efekty uczenia się