Parallel thinking is a mindset that enables computer scientists to think about and implement systems that allow activities to happen concurrently. This mindset is needed in designing and implementing a wide range of computer systems involving coordinated components (e.g., parallel, distributed, and multi-user systems). No matter what the coordinated component is, whether human or computer, the underlying issue is to imagine coordination between these components and manage the distribution and reintegration of coordinated work. The rapid development of multi-core technologies has attracted people’s attention back to parallelism. Ubiquitous and pervasive computing further brings parallelism into the everyday experiences of non-computer scientists. Designing and developing for ubiquitous parallelism become an essential and heavy responsibility for every software designer and developer. This situation creates a new standard for every one working in the computing field; simply understanding the techniques and algorithm in parallel-distributed computing to support parallel computing resources is not enough; the ability to create support for parallel human activities is also needed. Therefore, the need to train CS students to have a “parallel thinking” mindset is more urgent than ever. This doctoral work approaches the pedagogy of parallel thinking by teaching CS students to model coordination for parallel human activities explicitly. Although most participants started with an undeveloped imagination for human coordination, they were able to improve by focusing on coordination issues in the context of a class. The research method was to study a semester-long experimental class in the Department of Computer Science at Virginia Tech through a qualitative design-based research approach. Multiple types of data were collected using methodological triangulation to maximize validity. The data analysis process was guided by Grounded Theory (GT) through a systematic set of procedures. The outcomes provide a rich, thick, and detailed description about how CS students conceptualize and approach parallel thinking. The research contributes to CS education, programmer cognition literature, and computer supported collaborative system design and development by elaborating and analyzing various challenges in coordinated system creation, and making suggestions about pedagogical solutions, and software infrastructure and tools design.