Home Program

Program

Descarca programul in format PDF – Pdf iconProgram FPSS12

Mai multe detalii despre prezentarile de la FPSS12 aveti mai jos:

1) Corutine – implementare şi aplicaţii 

Un exerciţiu în Scheme: corutine, implementare şi aplicaţii. O variantă interesantă de rezolvare distribuită a problemelor foloseşte corutine: proceduri capabile să-şi salveze starea calculului şi să-şi reia calculul conform controlului explicit al programului. Cursul, cu caracter practic, prezintă o variantă de implementare Scheme, bazată pe continuări, a corutinelor şi o aplicaţie rezolvată distribuit folosind corutine.

2) Polimorfism de ordin superior.

Constructorii de tip, funcţii aplicate asupra unor tipuri pentru a calcula tipuri, pun probleme interesante atât la nivelul limbajului de programare echipat cu asemenea mecanisme cât şi la nivelul sintezei de tip. Cursul prezintă, la nivel introductiv, aspecte teoretice şi practice referitoare la tipul tipurilor (kind) şi modul în care acestea sunt reflectate în Haskell.

Prezentarile 1), 2) sunt tinute de Cristian Giumale, profesor universitar la Facultatea de Automatica si Calculatoare din UPB.

3) Functional Programming in the Real World

Functional Programming was never in the commercial products development “prime time”. It was considered many times more as an academic approach of the software development. Still there were companies that understood the real potential that functional programming has and have built successful products and businesses based on these concepts.
Even if it has more than fifty years it was and it feels even today ahead of its time.

This presentation will cover the most important products that were implemented in a functional programming language and used in the real world. I will also present the competitive advantage that helped these products to be successful.
It will cover products developed in languages like lisp – common lisp, scheme, clojure, haskell, erlang, scala and others.

4) Erlang – Concurrent Programming Language and Runtime System

What if I need to build a product that needs to follow these characteristics:
- highly concurrent an distributed systems
- thousands of simultaneous transactions
- support cluster architectures and changes in the cluster topology at runtime
- support may OS’s – Solaris, VxWorks, Windows, Linux, Mac OS X - 32bit, 64bit with SMP support
- no down time ( actually uptime of 99.999% which means maximum downtime of 5 minutes / year)
- highly “expressive” programming language
- recovery from software errors
- recovery from hardware errors
- trace & debug code at runtime
- update code at runtime

Do I have many choices? No, we have only one – which is Erlang. In this presentation I will cover the concepts behind the Erlang programming language and its runtime system that allows an application to have all these key characteristics
described before.

Prezentarile 3), 4) sunt tinute de Lucian Parvu, Software Engineer - Luxoft Romania (former ITC Networks)

5)  Testarea formală a codului (QuickCheck, SmallCheck)

Prezentarea se concentrează pe o parte importantă a dezvoltării unui proiect software: testarea codului. Spre deosebire de un limbaj imperativ, codul funcțional permite testarea directă a proprietăților, fără a fi nevoie de boilerplate pentru aducerea programului în starea dorită. Se vor prezenta framework-urile puse la dispoziție de ecosistemul Haskell pentru testarea codului, atât funcțiile pure cât și codul din monada IO. Vom vedea cum putem genera instanțe arbitrare
de input pentru test și cum putem scrie proprietățile într-un mod cât mai eficient. Spre final, vom vedea cum putem verifica coverage-ul testelor, pentru a fi siguri că am testat toate cazurile posibile.

6) GUI în Haskell (GTK+ și Cairo)

Majoritatea programelor scrise acum au o interfață grafică. Vom prezenta unul dintre cele mai populare framework-uri de realizare a GUI-urilor și modul de folosire al acestuia în Haskell. Vom crea formulare simple, aplicații avansate cu multe ferestre și la final vom încheia cu o clonă de Paint scrisă în Haskell.

7) Paralelism in Haskell

Aproape toate sistemele de acum au mai mult de un core. Paralelismul și concurența sunt topic-uri la modă. Vom vedea cum tratează Haskell acest subiect prin mecanisme precum strategii de evaluare, green threads, transactional memory, MVars, Channels, etc. La final vom încheia cu scrierea unei aplicații reale pentru manipularea de imagini utilizând threaduri.

Prezentarile 5), 6) si 7) sunt tinute de Mihai Maruseac, student la Master la Facultatea de Automatica si Calculatoare, si asistent la cursul de Paradigme de Programare.

8 ) De ce programare functionala ? Un exercitiu de programare in Haskell

Cand trecem in revista particularitatile limbajelor functionale, ne lovim intotdeauna de restrictii: absenta efectelor laterale, absenta instructiunilor de control, etc. Aparent, pare mai usor a vorbi despre ceea ce nu pot face limbajele functionale (spre exemplu Haskell), decat despre ceea ce pot face. Intr-un exercitiu de programare in Haskell (care nu necesita cunostinte anterioare, insa cere renuntarea la prejudecati), examinam doua trasaturi care nu limiteaza, ci din contra ofera expresivitate limbajelor functionale: functii de ordin superior si evaluare lenesa. Pe baza acestora, aratam cum putem scrie programe modulare si compacte.

9) De ce avem nevoie de modele computationale ?

In general, gasim in teorie o pletora de modele de calcul: Masina Turing, Calcul Lambda, functii recursive, masini cu registru, masini while, etc. Prezentarea incearca sa raspunda la intrebarea din titlu, si, folosind Calculul Lambda ca studiu de caz, stabilim relatia intre model de calcul si limbaj de programare.

10) Tipuri in Haskell

Prezenta tipurilor face ca programarea in limbajele functionale (si nu numai) sa fie realizata pe doua planuri: (i) unul al expresiilor/valorilor specifice, (ii) al tipurilor acestora. Un sistem de tipuri este in general util pentru a preveni posibilele erori ale programatorului. Totusi, acesta poate oferi flexibilitate sporita limbajului aferent. Examinam cateva din trasaturile fundamentale ale sistemului de tipuri din Haskell, si le comparam cu cele ale limbajelor imperative (in special Java). In majoritatea situatiilor, sistemul de tipuri din Haskell se dovedeste a fi cel putin la fel de puternic ca cel al Java (si al altor limbaje), si de multe ori ofera solutii naturale la probleme aparent complicate.

11) Particularitati ale limbajului Scheme

Haskell este un limbaj functional pur. Puritatea se refera in general la absenta efectelor laterale. Nu toate limbajele au aceasta trasatura (Haskell este o exceptie rara). De fapt, majoritatea limbajelor combina elemente variate ale celor doua paradigme (functionala si imperativa). Examinam cateva din trasaturile definitorii ale unui alt limbaj functional, Scheme, si ne oprim la un element cu totul special: abilitatea de a controla contextul computational (contextul in care se evalueaza o expresie), folosind continuari. Acestea au aplicatii interesante, printre care amintim exceptiile.

12) Comportament strategic in Sisteme Multi-Agent – un exercitiu de modelare in Haskell

In Sistemele Multi-Agent, luarea deciziilor poate fi vazuta ca o problema de planificare. O astfel de abordare este reactiva: un agent reactioneaza la mediu (pe baza unor reguli) iar obiectivele acestuia sunt descompuse in sub-obiective si satisfacute iterativ.

Cand insa obiectivul unui agent poate depinde de obiectivele altor agenti (si implicit de actiunile acestora), luarea unei decizii este implicit afectata de deciziile celorlalti. Prezentam succint doua abordari (cooperativa si non-cooperativa) pentru aceasta problema, si implementam solutiile obtinute in Haskell.

Utilitatea demersului este justificata atat teoretic (implementarea solutiilor ajuta la intelegerea conceptelor discutate), cat si practic (implementarea in Haskell este compacta, exploateaza unele subtilitati ale limbajului, si este foarte apropiata de definitiile conceptelor). De asemenea, demersul ilustreaza eficienta limbajelor functionale in a realiza trecerea de la un model teoretic la o implementare.

Prezentarile 8), 9), 10), 11) si 12) sunt tinute de Matei Popovici, asistent universitar la Facultatea de Automatica si Calculatoare, UPB.

Programul mai suferi anumite modificari. 

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

© Școala de vară de programare funcțională
credit