The goal of this thesis was to create a system for performing arbitrary operations on data in parallel using a data-flow graph. In this thesis we developed a system for parallel execution of data-flow graphs. Every node in the graph performs an operation, which operates on data passed to it via incoming graph edges and sends results over outgoing edges. We developed an execution engine for executing operations in parallel. Each operation is implemented in a dynamically loadable module or using a domain-specific language, which was developed specifically for this thesis. We also developed and implemented a compiler for this language. The domain-specific language is functional and strongly typed. We designed its type system to be modular. Eve...