Sebastian Fischer

I am currently a freelance computer scientist teaching computer science teachers in northern Germany. See my CV for a summary of what I did previously.

Contact

(encryption)

Research Interests

Open Source Projects

I maintain Haskell libraries for

See my github page for a complete list of my open source projects.

Scientific Activities

Talks

Generate, Test, and Aggregate: An Algebraic Method for Developing Divide-and-Conquer Algorithms

presented at National Institute of Informatics in Tokyo, Japan (March 2012) [slides]

Divide-and-Conquer is an important algorithm design paradigm where a problem is divided into sub-problems that can be conquered individually. Recent opportunities to parallelize computations draw new interest to this paradigm as individual sub-problems can be solved in parallel. For example, the MapReduce framework allows to distribute massively parallel computations based on associative combining operations that leave the necessary freedom to be executed in parallel.

Unfortunately, associative combining operations are often non-trivial and there is little support helping programmers to define them. I will present a method that facilitates the implementation of parallel algorithms in divide-and-conquer style by helping programmers to define complex associative combining operations based on more intuitive specifications in generate-test-and-aggregate style. The method has firm algebraic roots and functional programming will be helpful in explaining it based on program calculation.

A Haskell EDSL for (Parallel) Programming in Generate-Test-and-Aggregate Style

presented at Chalmers University of Technology in Gothenburg, Sweden (November 2011) [slides]

MapReduce is a popular and successful framework to implement massively parallel algorithms. It can be used to distribute the execution of data intensive tasks and hide implementation details of parallelization and data distribution. However, it is often difficult to define MapReduce programs because realistic problems do not match its simple divide and conquer form. Although many case studies are being published that show non-trivial applications of MapReduce, no generalized theory has been developed that captures underlying common ideas.

I will present a framework for systematic parallel programming with MapReduce that generalizes existing implementation ideas for parallel algorithms and is applicable to a wide class of search problems. Parallel algorithms can be specified as generate-and-test problems combined with result aggregation and we provide two theorems that allow to implement such specifications efficiently using MapReduce. Our approach brings MapReduce programming, which is inspired by the map and reduce primitives available in many functional languages, back to its roots by providing a calculation-based framework for program development. It makes expert knowledge applicable for a broader group of programmers by automatically bridging the gap between intuitive specifications and efficient implementations.

Publications

BibTeX entries