This document describes the programming fundamentals curriculum at the University of Lugano's new Faculty of Informatics in 2004. The key aspects summarized are: - The curriculum used multiple programming languages (Scheme, Smalltalk, Java) and emphasized team projects from the first semester to teach programming concepts. - Scheme was used to teach functional programming and algorithmic thinking. Smalltalk focused on object-oriented concepts. Java was taught quickly to reinforce ideas in a mainstream language. - Students worked individually on exercises and exams. They also participated in supervised hands-on exercises, single projects, pair projects, and larger group projects. - Additional support was provided through afternoon "ateliers" and expert lectures on