Sylabus - Lublin
Transkrypt
Sylabus - Lublin
==================================================================== "Chodzi mi o to, aby język giętki Powiedział wszystko, co pomyśli głowa: A czasem był jak piorun jasny, prędki, A czasem smutny jako pieśń stepowa, A czasem jako skarga nimfy miętki, A czasem piękny jak aniołów mowa... Aby przeleciał wszystka ducha skrzydłem. Strofa być winna taktem, nie wędzidłem." -Juliusz Słowacki (z książki Beniowski. Poema) ==================================================================== Andrzej Baran Paradygmaty i języki programowania 2012/2013 Informatyka II ==================================================================== Wykład: 30 godzin Laboratorium: 30 godzin Wymagania wstępne Podstawy Podstawy Podstawy Podstawy logiki teorii mnogości algorytmiki języka C, Pascal, C++, Java lub innego Treść zajęć ==================================================================== Krótka historia języków programowania A. Pojęcia wstępne: składnia i semantyka języków programowania analiza leksykalna i składniowa nazwy typy i konwersja typów struktury kontrolne przekazywanie parametrów do podprogramów abstrakcyjne typy danych przeciążanie operatorów i metod polimorfizm B. Programowanie imperatywne: zmienne wyrażenia struktura blokowa wiązanie statyczne i dynamiczne podprogramy organizacja wywołań podprogramów przydział pamięci na stosie i na stercie przykłady z języka C C. Programowanie obiektowe: abstrakcyjne typy danych klasy dziedziczenie polimorfizm dynamiczne wiązanie przykłady z języków C++, Java D. Programowanie w logice: rachunek predykatów w Prologu listy E. Programowanie funkcyjne: funkcje jako model programowania Churcha rachunek lambda dopasowywanie wzorca nadawanie typów rekursja leniwa ewaluacja funkcje wyższego rzędu przykłady z języków Lisp, Clojure, Haskell F. Obliczenia współbieżne i rozproszone G. Obliczenia kwantowe - elementy Literatura ==================================================================== R. Sebesta: Concepts of Programming Languages: Addison-Wesley, 2011. B. Tate: Siedem języków programowania, Helion, 2012. (B. Tate: Seven Languages in seven weeks. Pragmatic Programmers, 2010) M. L. Scott: Programming Language Pragmatics. Morgan Kaufmann Puplishers, Amsterdam, 2006 (Edycja 2) Stanford Engineering Everywhere, Introduction to Computer Science | Programming Paradigms: http://see.stanford.edu/see/courses.aspx --> Programming paradigms --> Lectures (by J. Cain) --> ... (Kurs multimedialny; dostępny również na YouTube; język angielski; około 27 godzin wykadów) J. Bylina, B. Bylina: Przegląd języków i paradygmatów programowania. Skrypt. Lublin 2011. B. Stroustrup: http://www.stroustrup.com + Książki: C++; (fragmenty podręcznika obowiązkowe) J. Gosling, H. McGilton: The Java Language Environment. A White Paper, October 1995, A Sun Microsystems. K. Arnold, J. Gosling: The Java Programming Language. Addison Wesley, 2005; Java, Wydawnictwa Naukowo -- Techniczne, Warszawa. R. Bird: Introduction to Functional Programming using Haskell. Prentice Hall, 1988. J. Reynolds: Theories of Programming Languages. Cambridge University Press, 1998. Literatura dodatkowa ==================================================================== R. Penrose: Nowy umysł cesarza. PWN, Warszawa 1995 - Rozdzialy 1-4. Z książki: Matematyka współczesna, Dwanaście esejów. Pod red. L. A. Steana. WNT, Warszawa 1983, Rozdział: Czym jest obliczanie, wg. M(artina) Davisa, str. 261. P. Van Roy, S. Haridi: Concepts, Techniques, and Models of Computer Programming. MIT Press, 2004. K. Slonneger, B. L. Kurtz: Formal Syntax and Semantics of Programming Languages, Addison-Wesley, 1995. (Rozdział 5: Lambda calculus) ==================================================================== ĆWICZENIA LABORATORYJNE 30 godzin ==================================================================== Ilustracja wykładanych zagadnień z użyciem języków: ruby, python, ... io scala prolog clojure erlang haskell ... ZADANIA Co każde 2 tygodnie zmienia się język programowania. Zadaniem studenta jest samodzielne poznanie podstaw nowego języka i sporządzenie właściwej notatki na ten temat. Notatka stanowi jedną z podstaw zaliczenia ćwiczeń. Zadania programistyczne będą ogłaszane albo przez prowadzącego zajęcia w laboratorium albo w internecie. W laboratorium Studenci realizują aktualne zadania programistyczne. Oceny otrzymane w trakcie realizacji ćwiczeń są podstawą zaliczenia. Obecność w laboratorium jest obowiązkowa i stanowi jeden z warunków zaliczenia ćwiczeń.