Introduction to Programming


In this course, you will prepare yourself for working with a team of developers by "getting your hands dirty" with learning and using the tools of modern software development. The purpose of this course is not to make you a software engineer. It is to show you the development cycle as well as to give you the basic understanding in case you want to discover more after the class.  

General characterization





Responsible teacher

Ricardo João Gil Pereira


Weekly - Available soon

Total - Available soon

Teaching language





Fluent Python - Luciano Ramalho (2015) 

Teaching method

The class will be in a blended format, which requires students to do half of the time in async work. We will use the weekly in-person classes to do discussions, live coding and quizzes to practice in teams and the remote/async to do knowledge transfer. Because evaluation is based on a game where each student can play their own way, each student will have specific questions, for which we will make available office hours to answer in order to build a more personalized learning experience. 

Evaluation method

Final exam: 40% - it will cover all the important technical concepts that we worked on during the semester. Continuous evaluation (gamified): 60% - set of optional assignments, articles, peer-reviewing, in-class quizzes and badges, all through a community-driven perspective. The badges will grant the student an extra grade for outstanding performances, consistent participation in technical discussions (Slack) or brainstorming/feedback on the game (we want your help improving the game). 

Subject matter


Data Structures

Flow control


Keyword Args and scope

Files I/O


Python Libraries

APIs Variáveis