What comes next once you're comfortable with the syntax of a programming language or two? The aim of this school is to give an introduction to topics that go beyond the initial knowledge of reading and writing code. How do you design programs that are modular and reusable? How can libraries in different languages be used together? What are tools that can help in documenting and testing code? How can development and releases be managed in projects with multiple authors? In a mixture of talks and many hands-on sessions we'll try to address this next step.