Control Flow Design Patterns A program consists of two components: what instructions to execute and in what order to execute those instructions. Control flow structures (if, for, while, switch-case, return, etc.) allow for the execution of different instructions based on the inputs. The purpose of our research is to develop an understanding of patterns of control flow in source code in order to improve software development, computer science education, and the tools and techniques used to design software. We will accomplish this goal by building a model of control flow patterns based on large, open-source code repositories as well as studies of novice and veteran programmers. We will also examine the correlation between uncommon patterns in control flow and bugs. This work will culminate in tools for identifying bad code, better organizing instructions, and synthesizing programs given only a short, unordered list of applicable instructions and a model of control flow patterns.