Programowanie równościowe i funkcyjne
Informacje ogólne
Kod przedmiotu: | 1000-I2PRF |
Kod Erasmus / ISCED: |
(brak danych)
/
(0613) Tworzenie i analiza oprogramowania i aplikacji
|
Nazwa przedmiotu: | Programowanie równościowe i funkcyjne |
Jednostka: | Wydział Matematyki i Informatyki |
Grupy: |
Inf., II st, stacjonarne, przedmioty do wyboru |
Strona przedmiotu: | https://plas.mat.umk.pl/moodle/course |
Punkty ECTS i inne: |
(brak)
|
Język prowadzenia: | polski |
Wymagania wstępne: | elementarna wiedza w zakresie teorii teorii oblicizalności |
Rodzaj przedmiotu: | przedmiot fakultatywny |
Całkowity nakład pracy studenta: | 30 godz. – wykład 5 godz. - egzamin 30 godz. - ćwiczenia: 50 godz. - praca własna - bieżące przygotowanie do zajęć, studiowanie literatury, 35 godz. praca własna - przygotowanie do egzaminu. RAZEM: 150 godz. 6 pkt. ECTS |
Efekty uczenia się - wiedza: | student posiada podstawową wiedzę o lambda-rachunku w zakresie niezbędnym do rozumienia podstaw teoretycznych programowania funkcyjnego posiada wiedzę o systemach przepisywania termów pozwalającą na rozumienie semantyki operacyjnej dla języków programowania funkcyjnego ma uporządkowaną wiedzę ogólną w zakresie konstrukcji programów funkcyjnych i równościowych (K_W02) zna składnie i semantykę języka programowania Haskell (K_W03) ma ogólną wiedzę na temat paradygmatu programowania funkcyjnego (K_W10) |
Efekty uczenia się - umiejętności: | posiada podstawowe umiejętności w zakresie programowania równościowego i funkcyjnego (język Haskell)(K_U19) potrafi pozyskiwać informacje z literatury, baz wiedzy, Internetu i integrować je i śledzić rozwój teorii i praktyki programowania funkcyjnego (K_U02) |
Efekty uczenia się - kompetencje społeczne: | Kreatywność: Myśli twórczo w celu udoskonalenia istniejących bądź stworzenia nowych rozwiązań (K_K02) Analityczne myślenie: potrafi ocenić mozliwości zastosowania programowania funkcyjnego do rozwiązania danego problemu informatycznego(K_K03) Komunikatywność: Potrafi jasno i precyzyjnie przedstawic realizowany projekt informatyczny (K_K05) |
Metody dydaktyczne podające: | - wykład problemowy |
Metody dydaktyczne poszukujące: | - laboratoryjna |
Skrócony opis: |
Celem przedmiotu jest zapoznanie studentów z zyskujacym coraz większą popularność i znajdującym coraz więcej zastosowań PROGRAMOWANIEM RÓWNOŚCIOWYM I FUNKCYJNYM Wykład koncentruje sie na przedstawieniu podstaw teoretycznych - podstawowych paradygmatów programowania równosciowego i funkcyjnego. Problemy te przestawiane równolegle z prezentacją języka Haskell. Na ćwiczeniach organizowanych w formie Otwartych Warsztatów Programowania Funkcyjnego studenci realizuja projekty pozwalajace poznać praktykę programowania funkcyjnego i wykorzystywanie tego sylu programowania w róznych językach (np. Scala, Python). |
Pełny opis: |
Programowanie funkcyjne tworzone jest od dziesiątków lat przez najlepszych informatyków na świecie -- bardziej w zaciszu uniwersytetów, niż pod dyktando zarządów korporacji. Bardziej po to, aby poznawać nowe struktury typów, algorytmy i maszyny, a nie po to aby jak najszybciej zadowolić kolejnego klienta. Pomimo to, programowanie funkcyjne - jego elementy i całkowicie odmienna idea - znajduje powoli swoje miejsce w biznesie. Bardzo prawdopodobne jest to, że dzięki działaniom twórców popularnych języków programowania i dzięki cechom samego programowania funkcyjnego, jego rola na rynku będzie wzrastać. Świat programowania funkcyjnego to świat wyjątkowy dla każdego informatyka stykającego się z nim po raz pierwszy. To świat koncepcyjnie bardzo oddalony od sprzętu komputerowego, który znamy, jednak tak głęboko przebadany i poddany optymalizacji, że czołowe kompilatory języków funkcyjnych produkują dla naszych komputerów kod szybszy od wielu innych popularnych języków programowania. Całkowicie odmienna idea programowania, zbudowana na innych podstawach niż język maszynowy znanych procesorów, wymaga od początkujących programistów porzucenia sporej części "oczywistości", które nagromadziły się w głowie podczas lat programowania w językach imperatywnych - proceduralnych czy obiektowych. Dlatego programowanie funkcyjne to ćwiczenie umysłu, wiedza obowiązkowa dla geeków i przygoda wysoce wskazana dla wszystkich osób, które naprawdę chcą znać się na informatyce. Zapraszamy na Otwarte Warsztaty Programowania Funkcyjnego Ich celem jest odważne wejście bez kompleksów w ten, na pierwszy rzut oka, dziwny i nieprzyjazny świat - bez warunków wstępnych - po to, aby odnaleźć i zrozumieć zasady, na których jest on oparty. Wspólnie ocenimy, czy programowanie funkcyjne ma szanse być ważnym narzędziem dla programistów i firm, które ich (Was!) zatrudniają. Zajęcia podzielone będą na bloki związane z praktyką programowania funkcyjnego i na te, które związane będą z teorią, którą naprawdę warto poznać. W części praktycznej skupimy się na języku Haskell, który stanowi trzon dla programowania funkcyjnego. Haskell jest polem eksperymentów informatyków z całego świata - miejscem wyjątkowym, w którym na bieżąco widać rozwój zaawansowanych teorii informatycznych ...które przynajmniej postaramy się nazwać. :) GHC to z kolei najważniejszy kompilator dla Haskella -- spróbujemy mu się jedynie przyjrzeć, ponieważ dokładne poznanie sposobu jego działania również mogłoby być tematem osobnych zajęć. Poznanie podstaw Haskella i GHC powinno umożliwić nam (przynajmniej krótką) rozmowę na temat: - wygodnych sposobów programowania w Haskellu (Eclipse czy może coś specjalnego?); - podstaw algorytmiki programów funkcyjnych (tu zazwyczaj nie ma pętli - jest prościej?); - sposobów interakcji Haskella z innymi językami (żadne obowiązujące prawo nie nakazuje pisać w Haskellu całych aplikacji); - dodatkowych bibliotek do Haskella (bo bez nich nie dałoby się napisać Frag - Haskell Quake); - rozszerzeń systemu typów i równoległości (bo tu przeprowadza się najwięcej eksperymentów naukowych). Celem bloków teoretycznych jest ukazanie idei, na których oparte są pojęcia spotykane w praktyce programowania funkcyjnego. Zaliczamy do nich przede wszystkim: - języki i systemy formalne (pamiętasz lambda wyrażenia?) - systemy redukcji napisów i grafów (bo nie jest wszystko jedno w jaki sposób wykonuje się program, a kompilator musi o tym zdecydować) - poznanie roli typów (czy typy są w ogóle potrzebne?) Dla zainteresowanych smakoszy: szczypta logiki i matematyki konstruktywnej - gratis. --- Wykład (podstawowe zagadnienia):
|
Literatura: |
Literatura:
|
Metody i kryteria oceniania: |
Laboratorium (ćwiczenia): Samodzielnie napisana w języku programowania funkcyjnego,rozbudowana aplikacja, Wykład: Egzamin ustny ,którego tematem jest praca zaliczeniowa studenta.:student samodzielnie wybiera temat związany z programowaniem funkcyjnym po zaakceptowaniu przez wyklładowcę opracowuje go. Ostatnim etapem jest rozmowa na temat przygotowanej pracy pisemny . |
Właścicielem praw autorskich jest Uniwersytet Mikołaja Kopernika w Toruniu.