Communication and teamwork are essential skills for computer science and software engineering graduates—but the traditional approach to introductory undergraduate computer science courses, focusing on individual programming assignments and discouraging collaboration, doesn’t prepare students for reality. Charles Wallace breaks the mold and promotes interaction as a primary activity in software development. Inspired by real software teams using so-called agile methods, he and his team are building an introductory curriculum that gives students exposure to interpersonal activities like inquiry, critique, and reflection.
Better Computer Science Education through Chemistry
One tool in this effort—POGIL (Process-Oriented Guided Inquiry Learning)—is borrowed from undergraduate chemistry education, where it has been used successfully for 20 years. At the heart of POGIL is a guided inquiry learning cycle of exploration, concept invention, and application. Students work in small groups with well-defined roles—similarly to teams in agile software development—to encourage accountability and engagement. In essence, it is an application of the scientific method in a carefully crafted classroom setting. In addition to learning core concepts at the heart of the assignment, students get practice in team problem solving and communication.
WebTA is a software tool being developed by Wallace and his colleagues to provide automated critique of student programs. The tool is integrated with the Canvas Learning Management System to provide immediate feedback to students as they write code. Students using this tool are engaged in communication-by-proxy with the instructor. This communication is not meant to replace instructor feedback, but to codify common feedback scenarios to assist the instructor in reaching students in tight feedback loops just when the student is engaged in problem solving and learning (for instance, at 3 a.m. when the instructor is fast asleep). The instructor configures WebTA with interactive critiques triggered by errors, warnings, or textual analysis of the student’s code.
A third tool draws from research Wallace and a group of interdisciplinary colleagues conducted on team communication in software settings. Drawing from real-world examples including student projects and industrial case studies, students reflect on the characteristics and effectiveness of the written and oral communication they observe. The goal is to create a mindset that good communication requires design—choosing the right characteristics for the given setting. Later, when they are working with their own projects, students reflect on their own communication practices and those of other teams.
Learning from Professionals
Trends come and go in the field of software development, but communication between humans remains at its heart. Wallace is interested in deriving principles of effective software communication by turning to industry experts. Software developers communicate with clients, end users, and team members with very different perspectives and goals. Communication can cause problems because of the complexity (and invisibility) of software, competing goals of different stakeholders, a lack of universal vocabulary, and incomplete and changing requirements. Even professional software engineers who are effective communicators do not have practice in articulating what makes communication effective (or ineffective). A major obstacle is a lack of a common language for discussing the specialized forms of communication taking place in software teams and between developers and other stakeholders.
Through ethnographic studies of student teams and professional developers, Wallace is building a body of knowledge on communication practices. Ethnography looks at cultures from an insider perspective. Wallace’s colleagues in computer science and humanities, working as ethnographers, provided insider studies that reveal how communication practices are established and evolve over time. They are deriving patterns of effective practices—patterns that can be replicated time and again, in a variety of settings. In addition to contributing to the software development community’s library of patterns, Wallace and his colleagues are bringing the notion of communication pattern back to computer science students, helping them understand and analyze team software development.