11 - 15 June 2018
Poznan, PL

Haskell Summer School

=<< Monadic Party >>=

Five days of Haskell nerding. Lunch included. Bring your laptop

About the event

Monadic Party is a five-days long Haskell summer school. Our vision is to teach in depth with each talk spanning multiple sessions. Because of the additional time at our disposal we can get deeper into each topic to show a larger part of the story behind the subject. The size will be capped at fifty attendees to provide you with a good learning experience.

We will have two tracks, one for programmers that aren't experienced in Haskell and would like to learn it from the basic concepts. The other track is for people already familiar with the language and will present a selection of talks and workshops on a variety of topics. We will announce the list of topics after our call for speakers closes at the end of February.

We chose Poznan to host the summer school because of its architecture, culture and nightlife. The venue is a recently restored lovely old building at Mlynska 12 where we have the whole highest floor at our disposal. So the only thing you need is a ticket, laptop and a place to sleep and you're good to go. Catered lunch, tea and coffee is included in the ticket price.

Getting There

We will hold the summer school at Mlynska 12, Poznan, Poland. The venue is in the Old Town, a walking distance from a town square. We would love to help you with choosing a place to stay. If you have any questions, please email us at [email protected].

In terms of travel, WizzAir, Ryanair, Lufthansa and LOT all have a dense network of daily connections to and from the city. If you want to save some carbon dioxide, there are frequent train connections from Germany and inside Poland. Buses are also a good budget option with PolskiBus which operates a lot of routes in the region.

Inside the city of Poznan there is a good public transporation system with a dense network throughout the city.

About us

We're the organizers of Monadic Warsaw, Ewa Kruzynska and Michal Kawalec. With over five hundred members it grew up to be one of the biggest Haskell meetups in Europe. We've had speakers and visitors from all over the world and we also host a YouTube channel. It is our way of popularizing functional programming and building a community of interested people. We are sure the summer school will give us as much fun as Monadic Warsaw.

Scholarship Programme

We are deligted to offer a means based scholarship programme. If you are financially unable to attend the summer school, we have a number of fully funded places available. Everything needed for you to attend is covered - travel to the event, accommodation and the ticket itself. The scholarships are provided by X-Team

The scholarship applications are closed now, recipients have been notified.

Scholarship applications are closed now

Julie Moronuki

Julie Moronuki is one of the authors of Haskell Programming from First Principles. She has a master's degree in linguistics and taught English, English as a second language, philosophy, linguistics, and medical transcription for over ten years. When she is not writing Haskell, writing about Haskell, or teaching Haskell at a local meetups, she homeschools her two children, pickles everything in sight, and adopts too many pets.

Chris Martin

Chris Martin has a master's degree in computer science from Georgia Tech. He has worked for GTRI, was cofounder and CTO of Fold, and worked for Hijro writing a blockchain in Haskell. He has recently founded Typeclass Consulting with Julie Moronuki and is also writing a book, The Joy of Haskell, with her. Chris tries to increase public awareness of NixOS and the power of good documentation. He enjoys barefoot running, sour beers, and arguing with Julie about math.

Krzysztof Gogolewski

Haskell user since 2008, currently software engineer at Codility. Studied mathematics and computer science and University of Warsaw and Ecole Polytechnique. Enjoys finding bugs in GHC.

Carter Schonwald

Hello! I’m Carter Schonwald, a computer scientist. Right now I’m collecting novel algorithmic and mathematical problems in their native industrial habitat, they’re quite fun to spot in their natural unformalized state. Later I think I shall climb back into my tower and analyze them in the laboratory.

Marcin Szamotulski

Marcin is a mathematician and a functional programmer. He did research in Abstract Algebra and Category theory in the crossroads of Galois theory. He also did research in Game Theory. He has been programming in various languages and paradigms: from C and Python, to PureScript and Haskell, and logic programming. Currently he is working for IOHK on the blockchain technology.

Michał Kawalec

Michał is an engineer of many trades. He works at X-Team where he is responsible for libraries and architecture of League of Legends, and, previously he had worked with startups, supercomputers, and particle detectors. At nights, he writes Haskell libraries and runs the biggest Haskell Meetup in Poland. Talk to him about riding on two wheels ;)

Tom Sydney Kerckhove

I have been working on testing for years, have done research in it, and am now working at FPComplete doing more testing. More about me here.

Laurens Duijvesteijn

Laurens writes Haskell for a living at Channable. He likes distributed systems, functional programming, Linux, and public speaking. Occasionally, he organizes meetups and conferences in and around Utrecht, The Netherlands.

Ryan Moore

I am a programmer, musician and volunteer. I lead the front-end team of software engineers at MX, where I love to leverage functional programming concepts in my everyday work. I’m a regular attender and presenter at the Utah Haskell, Elm and JavaScript meetups. I love building and benefiting from great communities. I volunteer as a curriculum designer, course organizer and teacher for refugees. I am currently partnering with the Refugee and Education Training Center of Utah to teach refugees the Java programming language.

Filip Graliński

I do research in natural language processing and machine learning. By day, I am a computer science assistant professor at Adam Mickiewicz University in Poznań and by night I am an amateur folklorist, combing old newspapers for bizarre stories and urban legends. I've been learning Haskell for a couple of years, happily recovering from 6502 machine code, C++ and Perl.

Jakub Zalewski

Jakub is studying programming language theory by day, and being functional programming enthusiast by night. He is currently doing his PhD at the University of Edinburgh, where he is researching the applications of gradual typing to dependent types and session types. In his spare time he helps MedApp with algorithmic processing of medical data.

Piotr Radwan

I'm attending Computer Science at the Faculty of Mathematics and Computer Science at the Adam Mickiewicz University where I also work in the Natural Language Processing Project for Samsung. In spare time I write side projects using Haskell which mostly cover topics such as numerical computations,machine learning,text/language processing and physical simulations. I'm self-declared Haskell activist interested in mathematical description of world phenomena and using formal mathematics in computer programs engineering.

Christophe Scholliers

Prof. Dr. Christophe Scholliers, obtained a PhD in Computer Science from the Vrije Universiteit. His PhD titled "Ambient Contracts" was promoted by Wolfgang De Meuter (SOFT-VUB) and Éric Tanter (Pleiad-DCC). As a postdoctoral researcher he has focused on type systems for synchronisation and coordination of parallel programs. In October 2015 he was hired as a full-time professor at the department for Applied Mathematics, Informatics and Statistics where he is leading the Theory of Programming Languages Lab (TOPL) . His current interests are in programming languages, type systems and debuggers for parallel and distributed systems. When he is not programming he enjoys having a nice Belgium beer, playing some indoor soccer or learning Chinese.

=<< Talks >>=

Marcin Szamotulski

A Category Theory course

We will present an introduction to Category Theory for a Haskell programmer. We will introduce basic notions of category theory together with their counterparts in Haskell. We will try to fill the course with interesting and useful examples taken from both worlds: of pure mathematics and Haskell. We will introduce the notions of category theory, functors and natural transformations, universal properties and adjoint functors. We will consider initial objects, and the notion of freeness. If time permits we will show how initial F-algebras give rise to recursive schemes in an elegant an elementary way and how GADTs can be constructed via Yoneda Lemma.

Chris Martin

Deploying Haskell to the Cloud

I want people to walk away feeling confident that they're capable of deploying Haskell apps to a server. So in the first half or so we'll install nix, use nix-deploy to get a demo app running, and learn enough about nix to get a sense of what's going on. In the second half I'd like to iterate on that with a real life project project.

Michał Kawalec

Web development with Servant and ReasonML

Haskell specifically and functional programming in general brings many promises to the table in web development. In this series of workshops and lectures I will present how reliable and fun it can be. We will write servers with Servant and interfaces in ReasonML. The intention is for attendees to leave with enough knowledge to easily write common web services in a typesafe manner. On the frontend side we will learn how ReasonML can help with creating robust interfaces we can rely on and reason about.

This tutorial assumes a basic familiarity with web development in any technology and an intermediate knowledge of Haskell.

Julie Moronuki

A Gentle Introduction to Profunctors

Over the course of the week, we'll work on gaining a deep understanding of Haskell's type and typeclass system and how they allow us to think about code algebraically. We'll explore functors in great detail, coming to understand the similarities and differences of the most important functors, ending with a look at contravariant functors, profunctors, and how profunctors are used to great effect in the SQL-generating library, `opaleye.`

Krzysztof Gogolewski

An Introduction to Dependent Types

This will be a gentle conceptual introduction to dependent types. I'll cover motivation, how well-known constructions generalize to dependent types, using types to guide program writing, dependent pattern matching, constructivism and the law of excluded middle, code examples where dependent types fit well. The tutorial assumes intermediate familiarity with Haskell, but otherwise requires no background about type systems.

Laurens Duijvesteijn

An Introduction to Software Transactional Memory

Traditionally, programming with shared-memory concurrency is difficult and error prone. Data-races and threading bugs are difficult to detect and reason about. If you get things right after a lot of fiddling with locks, your code will be a hard to read mess. Software Transactional Memory makes techniques pioneered in relational databases available to your application. During a series of workshops and lectures, we will discuss what STM is, how it works, and how you can use it to get composable concurrency control. Make your applications faster without pulling your hair out (as much).

Tom Sydney Kerckhove

Testing for beginners

The talks will form a complete introduction to testing in Haskell. They will cover the different kinds of tests, and how to write them in Haskell, best practices and generators and their best practices. It will be a combination of lectures and hands-on workshops.

Jakub Zalewski

Serverless Haskell on Azure

Serverless is an emerging model of clouding computing which abstracts away all the task regarding server maintenance and resource provision, and Azure Functions is Microsoft's serveless platform. While Haskell is not an officially supported language for developing on top of Azure Functions, we will see how to mitigate that shortcoming and write some a simple Haskell serverless application. Finally, we will explore some of Azure offerings for more complex scenarios.

Ryan Moore

From NAND To Lambda: Foundational Computing from Functional Principles

My talk will be a series of mixed lectures with workshops that will introduce students to fundamental concepts of computer hardware using Haskell! This sounds like a heavy duty course, and it is, but I will break down these concepts into approachable pieces with a logical progression from basic logic gates to parsing a simple assembly language! It is heavily inspired by this Nand to Tetris course, but will present the concepts through the lens (pun only slightly intended) of Haskell programming, rather than the imperative programming that is taught through much of the course.

Piotr Radwan

Neural Networks as Category: in-depth Haskell implementation tutorial

Talk will show neural networks as a motivating examples to introduce few intermediately advanced topics such as RankNTypes, GADTs, ScopedTypeVariables extensions as well as using category theory to describe programming problem. Ale these topics will be presented with in-depth formal explanation while showing how to write neural networks library from scratch using great 'hmatrix' and 'ad' libraries.

Filip Graliński

Really Real-World Haskell (for Machine Learning Evaluation)

In this series of workshops, you'll help me to develop cool features for Gonito.net, an open-source platform for machine learning competitions, and GEval, its companion command-line tool for evaluating machine learning systems — real stuff to be used by Machine Learning people (not necessarily Haskellers). I want you to see how easy and fun Haskell programming can be (with the right abstractions). We will cover things useful in practise (error handling, Web applications, conduits, database programming, monadic parsing, handling command-line options), which will take you from zero knowledge of Haskell straight to the intermediate level. Basic coding skills (in any programming language) are required. However, no knowledge of machine learning is needed (actually, you will learn its titbits, as a by-product of this course).

Carter Schonwald

Modeling protocols with linear dependent types

Learn how concurrent functional programming is exactly a proof language for full linear logic, fancy protocol modeling using coinductive programming, along with first class ownership and authorization. Example modeling will span replication algorithms, various authorization models, library books, pen&paper rpg systems, and some of the more elementary financial/business structures that usually lack good abstractions! Also try out your own modelling and learn how its implemented! participants should be comfortable with gadts, concurrent haskell programming, and writing code in Agda or a similar proof assistant. Compiler hacking or immature PL implementation experimentation a plus :) This sequence synthesizes several years of industrial research towards building the tools we wish "blockchain" actually was! :)

Christophe Scholliers

Reactive programming, bananas, robots, what do you want more?

We live in an inherently reactive world, Newton already knew this in the 17th century and became famous by formulating this idea as a law. The programming language world is also slowly realising that reactivity should be a first class language construct. Frameworks like Angular and Reactive extensions are popping up like mushrooms. Like many groundbreaking language features reactive programming had its origins in the functional programming world. In this talk I will give a gentle introduction to the world of functional reactive programming. Starting from the main principles we will build our own reactive programming library. Once we have done that we will look into a state of the art library and implement a simple game. To put the cherry on the cake we will implement a small reactive program to control an MBot (educational robot).

=<< Schedule >>=

Monday

Beginners track

Welcome
Julie Moronuki
A Gentle Introduction to Profunctors 1/6
Julie Moronuki
A Gentle Introduction to Profunctors 2/6
Marcin Szamotulski
A Category Theory course 1/4
Lunch Break
Marcin Szamotulski
A Category Theory course 2/4
Ryan Moore
From NAND To Lambda: Foundational Computing from Functional Principles 1/5
Ryan Moore
From NAND To Lambda: Foundational Computing from Functional Principles 2/5

Advanced track

Welcome
Carter Schonwald
Modeling protocols with linear dependent types 1/4
Carter Schonwald
Modeling protocols with linear dependent types 2/4
Laurens Duijvesteijn
An Introduction to Software Transactional Memory 1/5
Lunch Break
Laurens Duijvesteijn
An Introduction to Software Transactional Memory 2/5
Christophe Scholliers
Reactive programming, bananas, robots, what do you want more? 1/1

Tuesday

Beginners track

Marcin Szamotulski
A Category Theory course 3/4
Marcin Szamotulski
A Category Theory course 4/4
Ryan Moore
From NAND To Lambda: Foundational Computing from Functional Principles 3/5
Lunch Break
Ryan Moore
From NAND To Lambda: Foundational Computing from Functional Principles 4/5
Julie Moronuki
A Gentle Introduction to Profunctors 3/6
Julie Moronuki
A Gentle Introduction to Profunctors 4/6

Advanced track

Krzysztof Gogolewski
An Introduction to Dependent Types 1/4
Krzysztof Gogolewski
An Introduction to Dependent Types 2/4
Laurens Duijvesteijn
An Introduction to Software Transactional Memory 3/5
Lunch Break
Carter Schonwald
Modeling protocols with linear dependent types 3/4
Carter Schonwald
Modeling protocols with linear dependent types 4/4

Wednesday

Beginners track

Filip Graliński
Really Real-World Haskell (for Machine Learning Evaluation) 1/5
Filip Graliński
Really Real-World Haskell (for Machine Learning Evaluation) 2/5
Filip Graliński
Really Real-World Haskell (for Machine Learning Evaluation) 3/5
Lunch Break
Tom Sydney Kerckhove
Testing for beginners 1/6
Tom Sydney Kerckhove
Testing for beginners 2/6
Ryan Moore
From NAND To Lambda: Foundational Computing from Functional Principles 5/5

Advanced track

Laurens Duijvesteijn
An Introduction to Software Transactional Memory 4/5
Laurens Duijvesteijn
An Introduction to Software Transactional Memory 5/5
Jakub Zalewski
Serverless Haskell on Azure 1/4
Lunch Break
Jakub Zalewski
Serverless Haskell on Azure 2/4
Krzysztof Gogolewski
An Introduction to Dependent Types 3/4
Krzysztof Gogolewski
An Introduction to Dependent Types 4/4

Thursday

Beginners track

Tom Sydney Kerckhove
Testing for beginners 3/6
Tom Sydney Kerckhove
Testing for beginners 4/6
Julie Moronuki
A Gentle Introduction to Profunctors 5/6
Lunch Break
Julie Moronuki
A Gentle Introduction to Profunctors 6/6
Chris Martin
Deploying Haskell to the Cloud 1/4
Chris Martin
Deploying Haskell to the Cloud 2/4

Advanced track

Piotr Radwan
Neural Networks as Category: in-depth Haskell implementation tutorial 1/4
Piotr Radwan
Neural Networks as Category: in-depth Haskell implementation tutorial 2/4
Jakub Zalewski
Serverless Haskell on Azure 3/4
Lunch Break
Jakub Zalewski
Serverless Haskell on Azure 4/4
Michał Kawalec
Web development with Servant and ReasonML 1/4
Michał Kawalec
Web development with Servant and ReasonML 2/4

Friday

Beginners track

Tom Sydney Kerckhove
Testing for beginners 5/6
Tom Sydney Kerckhove
Testing for beginners 6/6
Chris Martin
Deploying Haskell to the Cloud 3/4
Lunch Break
Chris Martin
Deploying Haskell to the Cloud 4/4
Filip Graliński
Really Real-World Haskell (for Machine Learning Evaluation) 4/5
Filip Graliński
Really Real-World Haskell (for Machine Learning Evaluation) 5/5

Advanced track

Piotr Radwan
Neural Networks as Category: in-depth Haskell implementation tutorial 3/4
Piotr Radwan
Neural Networks as Category: in-depth Haskell implementation tutorial 4/4
Michał Kawalec
Web development with Servant and ReasonML 3/4
Lunch Break
Michał Kawalec
Web development with Servant and ReasonML 4/4
Discussion panel
Future of functional programming

=<< Partners >>=

Code of Conduct

We are following the Berlin Code of Conduct. If you ever feel it has been breached, do not hesitate to contact one of the organizers.