Podstawowe informacjeOpis
Kilka z cytatów ze strony http://lispers.org:
Lisp is worth learning for the
profound enlightenment experience you will have when you finally get
it; that experience will make you a better programmer for the rest of
your days, even if you never actually use Lisp itself a lot. Eric Raymond, “How to Become a Hacker”
Lisp has jokingly been called “the
most intelligent way to misuse a computer”. I think that description is
a great compliment because it transmits the full flavor of liberation:
it has assisted a number of our most gifted fellow humans in thinking
previously impossible thoughts. Edsger Dijkstra, CACM, 15:10
Lisp … made me aware that software could be close to executable mathematics. L. Peter Deutsch
Lisp is a programmable programming language. John Foderaro, CACM, September 1991 Lisp is a language for doing what you've been told is impossible. Kent Pitman Greenspun's Tenth Rule of Programming:
any sufficiently complicated C or Fortran program contains an ad hoc
informally-specified bug-ridden slow implementation of half of Common
Lisp.
Na seminarium zajmiemy się poznawaniem języków z rodziny Lisp. Żadna wcześniejsza styczność z tym językiem nie jest wymagana.
Będziemy się zajmować co najmniej trzema odmianami LISPa: Skupimy się na omówieniu: - języka Common Lisp,
- technik wykorzystania makr do metaprogramowania,
- modelu obiektowego,
- różnicach między dialektami.
Zasady
Poczta elektroniczna
- Wysyłając e-mail należy w polu temat jako prefiks podać następującą frazę: [LISP10]
Zaliczanie- Trzeba pojawić się na co najmniej połowie zajęć. Obecność będzie sprawdzana w trakcie trwania zajęć. Brak wymaganej ilości obecności będzie podstawą do niezaliczenia seminarium.
- Zakłada się, że student w ramach zaliczania przedmiotu poświęci w ciągu semestru 30h na pracę w domu.
- Zaliczenie przedmiotu polega na:
- wygłoszeniu dwóch 45 minutowych seminariów lub jednego 90 minutowego,
- oddaniu indywidualnie dobranego małego projektu programistycznego w dowolnym dialekcie Lisp-u.
- Oceny wyliczane będą na podstawie poniższej tabeli:
Ilość punktów
| Ocena
| 100% - 90%
| 5.0 | 89% - 80%
| 4.5
| 79% - 70%
| 4.0
| 69% - 60%
| 3.5
| 59% - 50%
| 3.0
| 49% - 0%
| 2.0
|
Prezentacje
-
clos.tar.gz
85k - 1 Feb 2011, 11:27 by Krystian Bacławski (v1)
Common Lisp Object System (autor: Karol Błażejowski)
-
Filozofia_Clojure.pdf
542k - 17 Jan 2011, 13:55 by Krystian Bacławski (v1)
Filozofia Clojure (autor: Mateusz Dereniowski)
-
elisp.zip
209k - 16 Jan 2011, 02:56 by Krystian Bacławski (v1)
Emacs Lisp - zaprogramuj swój edytor (autor: Marcin Milewski)
-
Scheme.zip
133k - 13 Jan 2011, 05:00 by Krystian Bacławski (v1)
Scheme vs. Common Lisp (autor: Bartłomiej Kobyłecki)
-
ProgramowanieZUżyciemMakr.zip
103k - 13 Jan 2011, 04:56 by Krystian Bacławski (v1)
Programowanie z użyciem makr (Autor: Łukasz Zapart)
-
TechnikiPisaniaMakr.pdf
604k - 13 Jan 2011, 04:48 by Krystian Bacławski (v1)
Metaprogramowanie - Techniki pisania makr (autor: Aleksander Balicki)
-
kontynuacje.zip
137k - 13 Jan 2011, 04:47 by Krystian Bacławski (v1)
Kontynuacje (autor: Wojciech Jedynak)
-
CommonLISP-BibliotekaStandardowa.pdf
615k - 10 Nov 2010, 11:25 by Krystian Bacławski (v1)
Biblioteka standardowa (autor: Jakub Kowalski)
-
typy-i-struktury-danych.pdf
805k - 3 Nov 2010, 15:11 by Krystian Bacławski (v1)
Typy i struktury danych (autor: Aleksandra Woźniak)
-
Funkcje_i_zmienne.pdf
290k - 3 Nov 2010, 15:10 by Krystian Bacławski (v1)
Funkcje i zmienne (autor: Wojciech Jedynak)
-
CommonLISP-InstrukcjeSterujace.pdf
510k - 3 Nov 2010, 12:26 by Krystian Bacławski (v2)
Instrukcje sterujące (autor: Jakub Kowalski)
-
lisp-io.pdf
501k - 3 Nov 2010, 12:27 by Krystian Bacławski (v3)
Obsługa wejścia-wyjścia (autor: Marcin Milewski)
Poniżej znajdziecie kilka rad odnośnie przygotowania prezentacji na seminarium. Dobrym pomysłem jest poszukanie na internecie informacji o tym jak nie należy robić prezentacji ;-)
- Odpowiedź sobie na pytanie: "Co chce przekazać uczestnikom seminarium?".
- Nadać prezentacji odpowiednią strukturę.
- Wymagać od uczestników interakcji.
- Przeprowadzić próbę generalną!
- Przygotować slajdy tak by osoba nie będąca na seminarium też miała szansę zrozumieć ich zawartość.
- Nieczytelne slajdy:
- za dużo wierszy na stronie,
- jasnozielony lub żółty kolor,
- małe czcionki,
- Mówienie cicho i/lub do ściany.
- Czytanie ze slajdów.
- Brak treningu.
- Nieprzestrzeganie ram czasowych.
- Slajdy z samym kodem bez żadnego opisu.
Błędy dotyczące prezentacji kawałków kodu: - Za mała czcionka terminala z interpreterem.
- Wycinki kodu kopiowane ze slajdów lub z pliku (zamiast tego należy wgrywać z dysku - polecenia: load, compile-file).
- Złe sformatowanie kodu na slajdach (wcięcia / nawiasy) utrudniające czytanie.
- Brak opisu i zrozumienia funkcji wykorzystywanych przez kod na slajdach.
Być może dobrym pomysłem byłoby:
- umieszczanie większych przykładów i ich wytłumaczenie,
- ożywienie widowni poprzez zadanie prostego przykładu do zaprogramowania (maksimum kilka linii),
- zrobienie kilku ćwiczeń z książek celem przekonania się na własnej skórze co może być skomplikowane / nietypowe / w inny sposób ciekawe (i podzielenie się tym z widownią),
- pobieżne zaprezentowanie możliwości biblioteki standardowej przy omawianiu danego tematu.
Zadaniem projektu programistycznego jest zachęcenie uczestników seminarium do praktycznego poeksperymentowania z jedynym z dialektów języka Lisp. W tym celu należy wykonać większy program lub kilka wybranych zadań z książki "Common Lisp: An Interactive Approach".
Projekt powinien spełniać kilka wymogów:
- ma być napisany w jednym z trzech dialektów: CL, Scheme, Clojure,
- mieć nie mniej niż 300 linii (nie lubię miary ilościowej, ale nie mam lepszego pomysłu),
- powinien używać funkcji z biblioteki standardowej, zamiast wymyślać koło od nowa (a co tam można znaleźć było na jednej z prezentacji),
- należy skonstruować kilka makr (w miarę możliwości, ale nie na siłę).
Mile widzianie:
- Program podzielony na moduły.
- Użycie CLOS lub innego systemu obiektowego.
Tematy i materiałyUwaga! Spis tematów i materiały, które powinno się wykorzystać do przygotowywania prezentacji są na mojej wiki. Ogłoszenia- Zajęcia w środę 13 października nie odbędą się z powodu braku prelegenta!
- W związku z niską frekwencją na seminarium 27 października postanowiłem dodać wymóg obecności do regulaminu. Uważam, że byłoby nieuczciwe, gdyby student mógł przyjść tylko raz, wygłosić dwugodzinną prezentację i tym samym zaliczyć przedmiot. Obecność zaczniemy liczyć od zajęć odbywających się 3 listopada i będę wymagał co najmniej siedmiu. Łudziłem się, że obędzie się bez tego. Mam nadzieję, że wszyscy się ze mną zgadzacie, że wprowadzenie tej reguły zapobiegnie niezdrowym próbom zaliczenia przedmiotu.
Terminarz zajęć
Data | Prelegent | Czas trwania | Temat |
26 January 2011 | Paweł Murias | 1h | Programowanie zorientowane kontekstowo | 19 January 2011 | Karol Błażejowski | 2h | Common Lisp Object System | 12 January 2011 | Paweł Murias | 1h | Programowanie reakcyjne w Lispie | 12 January 2011 | Marcin Milewski | 1h | Emacs Lisp | 5 January 2011 | Wojciech Jedynak | 1h | Kontynuacje | 5 January 2011 | Mateusz Dereniowski (nieobecny) | 1h | Programowanie modułowe i obiektowe w Clojure | 22 December 2010 | Bartłomiej Kobyłecki | 2h | Scheme vs. Common Lisp | 15 December 2010 | Mateusz Dereniowski | 1h | Filozofia Clojure | 8 December 2010 | Brak | 2h | Nieobecność prelegenta z powodu choroby. | 1 December 2010 | Aleksander Balicki | 2h | [MP] Techniki pisania makr | 24 November 2010 | Łukasz Zapart | 2h | [MP] Programowanie z użyciem makr | 17 November 2010 | Dariusz Jackowski | 2h | Nyquist jako system syntezy dźwięku | 10 November 2010 | Jakub Kowalski | 1h | [CL] Biblioteka standardowa | 3 November 2010 | Marcin Milewski | 1h | [CL] Obsługa wejścia-wyjścia | 27 October 2010 | Wojciech Jedynak | 1h | [CL] Funkcje i zmienne | 27 October 2010 | Jakub Kowalski | 1h | [CL] Instrukcje sterujące | 20 October 2010 | Aleksandra Woźniak | 2h | [CL] Typy danych | 13 October 2010 | Brak | | Zajęcia nie odbędą się z powodu braku prelegenta! |
|