Distributed version control allows developers to manage software evolution among distributed development teams. But it does not eliminate all consistency and concurrency issues, and instead introduces additional complexity when merging code. And resolving merge conflicts is nontrivial when automated merging fails. In such cases, developers are forced to inspect the...
The use of board games for teaching introductory computer science is a promising recent avenue of research. The goal is to introduce computing concepts through their use in the implementations of simple games, thereby keeping students engaged through their learning process. However, there is a gap between students' algorithmic descriptions...
Developers frequently change the type of a program element and update all its references for performance, security, concurrency, library migration, or better maintainability. Despite type changes being a common program transformation, it is the least automated and the least studied. Manually performing type changes is tedious since the programmers have...