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ń.