Crowdsourcing uses human intelligence to solve tasks which are still difficult for machines. Tasks at existing crowdsourcing platform are batches of relatively simple microtasks. However, real-world problems are often more difficult than micro-tasks. They require data collection, organization, pre-processing, analysis, and synthesis of results. In this thesis, we study how to specify complex crowdsourcing tasks and realize them with the help of existing crowdsourcing platforms. The first contribution of this thesis is a complex workflows model that provides high-level constructs to describe a complex task through orchestration of simpler tasks. We provide algorithms to check termination and correctness of a complex workflow for a subset of ...