Go is a new computer programming language being developed by Google, designed to ease the development of Web servers and similar software applications. In this project, William will work with other students in my research group to (1) learn the Go programming language and (2) contribute to the development and testing of an automated refactoring tool for Go. (Automated refactoring tools allow software engineers to retroactively change the internal structure of their programs to better accommodate new features and bug fixes over time.)
My research group is working directly with software developers at Google who are designing the Go programming language and associated tools. This project will provide William with the opportunity to interact with -- and have his code reviewed by -- software engineers at Google, which is an invaluable experience for a student planning to pursue a career in software development. Additionally, he will have the opportunity to work in a team of software developers and eventually have his work released as open source software.