Konspekt - Marek Gągolewski
Transkrypt
Konspekt - Marek Gągolewski
Wydział Matematyki i Nauk Informacyjnych PW r. ak. 2015/2016 Konspekt Nazwa przedmiotu: Algorytmy i podstawy programowania Kierunek: Matematyka – studia stacjonarne licencjackie Semestr: 1 Prowadzący: dr Marek Gągolewski [email protected] Tygodniowy wymiar godzin i sposób zaliczenia: 1W/1Ć/2L/0P, ZAL. ECTS: 4 Podstawowe cele kształcenia W trakcie kursu student poznaje podstawowe zagadnienia informatyczne, tj.: pojęcie algorytmu, elementy organizacji i działania komputera, arytmetyki całkowitoliczbowej i zmiennopozycyjnej, funkcje, ideę rekurencji, tablice, algorytmy sortowania i działania na macierzach, elementarne abstrakcyjne struktury danych (listy, kolejki, stosy, drzewa binarne). Do implementacji przedmiotowych algorytmów i struktur danych wykorzystywany jest język C++, z którego podstawami student zapoznaje się w trakcie wykładu. Na zajęciach ćwiczeniowych student rozwija umiejętności analizy zagadnień problemowych i tworzenia algorytmów służących do ich rozwiązania z wykorzystaniem poznanych na wykładzie wiadomości teoretycznych na temat języka C++. Na zajęciach laboratoryjnych student uczy się praktycznych umiejętności tworzenia pełnych, acz prostych programów, które wykorzystują poznane algorytmy. Szczególną uwaga zwraca się więc na: implementację programu z użyciem gotowych, udokumentowanych bibliotek, umiejętność przetestowania programu, jego użycia na konkretnych danych wejściowych, interpretację otrzymanego wyniku. Ponadto student poznaje także szczegóły techniczne programowania w języku C++ (środowisko programistyczne, biblioteki). Na siedmiu zajęciach laboratoryjnych rozwiązuje samodzielnie zadania sprawdzające. Dodatkowym celem kształcenia jest przygotowanie studenta do podjęcia nauki kolejnych przedmiotów informatycznych na kierunku Matematyka oraz przedmiotów, w których używane są podczas ćwiczeń pakiety obliczeniowe (np. R, Matlab, SAS). Szczególny nacisk jest więc położony na wykład i ćwiczenie tych aspektów programowania w języku C++, które są wspólne innym językom. Założone efekty kształcenia Student powinien umieć: dokonać analizy prostego problemu obliczeniowego danego w formie opisowej bądź za pomocą notacji matematycznej, zaproponować algorytm rozwiązujący przedmiotowe zagadnienie i wyrazić go w języku C++, utworzyć program komputerowy zawierający implementację algorytmu, przetestować wykonany program. Program przedmiotu 1. Etapy tworzenia oprogramowania. Algorytm. 2. Podstawy organizacji i działania komputerów. Reprezentacja liczb całkowitych i zmiennopozycyjnych. 3. Deklaracja zmiennych w języku C++. Operatory arytmetyczne, logiczne i relacyjne. 4. Instrukcja warunkowa i pętle. 5. Funkcje. Przekazywanie parametrów przez wartość i przez referencję. 6. Rekurencja. 7. Wskaźniki. Dynamiczna alokacja pamięci. Tablice jednowymiarowe i operacje na nich. Proste algorytmy sortowania. 8. Kod ASCII. Łańcuchy znaków. 9. Macierze. 10. Struktury w języku C++. Podstawowe dynamiczne abstrakcyjne struktury danych: Listy jedno- i dwukierunkowe, kolejki, stosy, drzewa binarne. Sposób zaliczenia przedmiotu Z ćwiczeń można otrzymać 50 punktów (2 kolokwia – pierwsze za 20, drugie za 30 p.), a z zajęć laboratoryjnych 50 punktów (7 zadań praktycznych – 40 p. oraz 5 tzw. wejściówek – 10 p.), czyli łącznie 100 punktów. Warunkiem koniecznym uzyskania zaliczenia jest uzyskanie ponad 25 p. z kolokwiów, ponad 20 p. z punktowanych zadań laboratoryjnych oraz ponad 5 p. z wejściówek. Wówczas ostateczna ocena z przedmiotu wynika z sumy punktów uzyskanych z ćwiczeń i zajęć laboratoryjnych: (50; 60] – trzy, (60-70] – trzy i pół, (70-80] – cztery, (80-90] – cztery i pół, >90 – pięć. Literatura podstawowa 1. 2. 3. 4. 5. 6. 7. Harel. D (2008). Rzecz o istocie informatyki. Algorytmika, WNT, Warszawa. Wirth N. (2004). Algorytmy + struktury danych = programy, WNT, Warszawa. Deitel H. M., Deitel P. J. (1998). ARKANA. C++ programowanie, RM, Warszawa. Prata S. (2006). Język C++. Szkoła programowania, Helion, Gliwice. Snaith P. (2000). C++ nie tylko dla orłów, Intersoftland, Warszawa. Schildt H. (2002). Programowanie: C++, RM, Warszawa. Liberty J. (2002). C++ dla każdego, Helion, Warszawa. Literatura uzupełniająca 1. Knuth D. E. (2002). Sztuka programowania. Tom I. Algorytmy podstawowe, WNT, Warszawa. 2. Graham R. L., Knuth D. E., Patashnik O. (2006). Matematyka konkretna, WN PWN, Warszawa. 3. Bronson G. J. (2010). C++ for Engineers and Scientists. Course Tech., Boston. Marek Gągolewski