PPS1920-projects

Changes for document PPS1920-projects

From version 21.1
edited by Mirko Viroli
on 2019/10/14 17:56
To version 22.1
edited by Mirko Viroli
on 2020/05/26 12:30
Change comment: There is no comment for this version
Metadata changes
Property Previous value New value
Title PPS1819-projects PPS1920-projects
Content changes
I seguenti progetti sono proposti dal docente per la modalità "individuale" del progetto d'esame. Si rimanda alla pagina [esame >> Courses.PPS1819-esame]Courses.PPS1920-esame] per ulteriori informazioni. Si noti che in generale questi progetti sono di tipo esplorativo + sperimentativo, ossia si esplora una tecnologia/libreria, si relazionano i suoi principali aspetti, e poi si realizza una breve sperimentazione, contrattata col docente.docente. Realizzare bene la sperimentazione (con un caso non banale, ma anzi particolarmente interessante) è cruciale al fine della valutazione. Si noti che alcuni di questi progetti sono stati già assegnati in passato, quindi è possibile che il docente fornisca materiale pregresso, per successive sperimentazioni.
* *Constraining Scala programs via annotations*Dotty and compiler-plugins.*Scala 3.0.* In questo progetto si analizzeranno le modalità con cui è possibile estendere il compilatorenovità (di linguaggio e framework) di Dotty, ossia Scala per fornire supporti specifici utili a librerie e DSL (ad es., customizzazioni del type checking, rimozione3.0, con particolare riferimento agli aspetti di costrutti o combinazioni di costrutti dal linguaggio).programmazione funzionale avanzati.
* *ASSIGNED: Collection library structure*Cats (I/O monad and types.*concurrency).* Cats è una libreria Scala che fornisce astrazioni per programmazione funzionale (e.g., monoidi, funtori, monadi). In questo progetto si analizzeranno gli internals del collection framework di Scalal'obiettivo è studiare e presentare l'API, con focus particolare sui supporti per comprenderne design, aspetti implementativi, pattern,gestione dell'I/O e idiomi di programmazioneconcorrenza -- questi includono infattiquesto progetto "fonde" aspetti avanzati molto rilevanti.PPS con aspetti PCD.
* *ASSIGNED Cats (I/O monad and concurrency).* Cats*Scalaz-zio and/or advanced concurrency abstractions for Scala.* Scalaz-io è una libreria Scala che fornisce astrazioni per programmazione funzionale (e.g., monoidi, funtori, monadi). In questo progetto l'obiettivo è studiare e presentare l'API, con focus particolare sui supporti per gestire aspetti di side-effect, gestione dell'I/O e concorrenza -- questo progetto "fonde" aspetti PPS con aspetti PCD.
* *ASSIGNED Scalaz-zio and/or advanced concurrency abstractions for Scala.* Scalaz-io*Shapeless.* Shapeless è una libreria Scala che fornisce astrazioni per programmazione funzionale per gestire aspettidove tipi, generici, impliciti e typeclass sono utilizzati al massimo della loro espressività; l'obiettivo è manipolare dati a livello di side-effect, gestione dell'I/Otipi e concorrenza --costruire rappresentazioni generiche per esprimere tanto con poco codice. In questo progetto "fonde" aspetti PPS con aspetti PCD.si studierà questa libreria, mostrandone il potenziale.
* *ASSIGNED: Shapeless.* Shapeless è una libreria Scala dove tipi, generici, impliciti*Monads.* Sviluppare monadi innovative e typeclass sono utilizzati al massimo della loro espressività; l'obiettivo è manipolare dati a livello di tipi e costruire rappresentazioni generiche per esprimere tantointeressanti, con poco codice. In questo progetto si studierà questa libreria, mostrandone il potenziale.possibili applicazioni utili.
* *ASSIGNED: Prolog*Prolog To Scala, by translation.* In questo progetto si realizzerà (in Scala) un traduttore da Prolog (o un suo più semplice frammento) verso un equivalente programma Scala, sulla falsariga di quanto mostrato a lezione.
* *ASSIGNED Spark (external/internal analysis).* Spark è un famoso*Distributed comuting.* Vari framework Scala per big-data e cluster computing.sistemi distribuiti (Akka, Spark, ..) sono realizzati in Scala. In questo progetto sise ne prenderà uno a campione, se ne studieranno aspetti linguistici di questo framework, elinguistici, la sua organizzazione internainterna, e se ne realizzerà un caso prototipo -- l'obiettivo è porre le basi per futuri framework per computazione distribuita che si ispirino a Spark.
* *Rewrite Protelis lang into scala for ScaFi.**ScaFi libraries.* ScaFi è un framework Scala per Aggregate Computing, un paradigma di recente invenzione per lo sviluppo di sistemi a larga scala.puramente funzionale (in Scala) di algoritmi distribuiti. In questo progetto l'obiettivo è sviluppare la libreria standard di scafiScafi per includere lenuove funzionalità implementate nella libreria standard di Protelis (un DSL standalone, o esterno, per Aggregate Computing). L'obiettivo non è solo tradurre l'implementazione da Protelis a un suo equivalente Scala, ma anche rifinire l'API utilizzando la potenza espressiva di Scala(in parte già esistenti e scritte in altri linguaggi -- questo progetto insisterà su aspetti avanzati di design di API e su questioni scientifiche di sistemi distribuiti.
1 Nuove proposte
* *Shapeless-based frameworks.* La libreria Shapeless consente con semplicità di realizzare codice type-dependent, ossia di realizzare "algoritmi" che dipendono dalla parametrizzazione di tipo in input, che può essere ispezionata con flessibilità. Molti framework sono stati costruiti su Shapeless, che in questo progetto potrebbero essere visti in rassegna, per poi approfondirne qualcuno e fare esperimenti. Uno particolarmente interessante è [https://github.com/jedesah/computation-expressions], che sembra permetta di ridefinirsi le for comprehensions.