Expor o estudante a técnicas mais avançadas de programação, incluindo depuração, testes, princípios de orientação a objetos, padrões de projeto e construção de interfaces gráficas ou Web. Esses tópicos são aplicados em uma parte prática que consiste em desenvolver um sistema de médio porte em uma linguagem orientada a objetos (por exemplo Java, Python ou Ruby).