Current Teaching Activities

For my current courses, please visit my page at Carnegie Mellon University:

Teaching Philosophy

Wordle: Davide's Teaching Philosophy
Image from

My understanding and beliefs on learning and teaching originate from three main sources: my experience as a student, my practice as a teacher, and my research on tutoring and educational applications of computer science. The examples reported in this section are mostly from my teaching practice. A chronological description of my teaching experience is reported in the next section of this document.

A learning environment consists of the interaction of many different components, like age, background, and goals of students; goals of the teaching institution; and the specific characteristics of the discipline to be learned and taught. I believe teaching should be tailored to each context as much as possible. For example, when I taught guitar classes in the parish of my hometown from 1993 to 1997, I realized that the content and style of my teaching needed to be very different from what they would have been like in a traditional music school. The institution, a church, valued guitar classes as a safe environment for the overall development of kids. The students, mostly young teenagers, were often struggling to make sense of themselves and the world around them. Given this peculiar context, in addition to music instruction, I devoted a significant portion of my class time to mentoring activities and promoting social interaction.

I believe first-hand experience is important in learning. Students learn a great deal from their success as well as their mistakes. A good teacher should provide the students with activities, examples, and counter-examples that are relevant, meaningful, and easy to remember. A rather extreme, but successful, example comes from the introductory rock climbing course I taught in 2008. A fundamental point of that class was to stress the importance of safety procedures. One of these procedures requires a careful check of the equipment of a climbing partner before every ascent. To make this point unforgettable, I once unbuckled my own harness and put it in a completely unsafe state, but this could only be discovered after a careful inspection. Then, I asked one of my students to check my equipment before I started climbing. After a superficial inspection, the student could not find the problem, and told me I could start climbing. At that point, I exclaimed "thank you for letting me die!" The student was very surprised and he realized the potentially fatal consequences of his careless behavior. From that moment on, he followed the safety procedures thoroughly and carefully.

I strongly believe that learning a particular subject should foster the creation of a larger interconnected network of knowledge in the mind of the learner. I think a subject should be taught considering the relationships with other disciplines. When possible, these interdisciplinary relationships should be planned in cooperation with educators in the appropriate fields. For example, when I taught introductory computer science to grade school children in 2003, I personalized the content of the course for each different group of students based on common learning objectives determined together with other teachers in the school. In a third grade class, we used computers as an instrument to improve the writing skills they were learning in their Italian language class. In fourth grade, we worked with software that helped students visualize and practice the geometry concepts they were studying in their math class. In fifth grade, students were expected to improve their analytical and procedural skills while solving problems using an appropriate programming language (LOGO), again in concert to the skills they were acquiring in their math course.

I think that collaboration between students, under the appropriate circumstances, can improve learning. Interacting with peers can have the beneficial effect of enabling the possibility for knowledge co-construction, which happens when students share their knowledge with each other and correct each other's mistakes and misconceptions. I remember a very successful example of such interaction in my second year of college. The day before the midterm exam of Fundamentals of Computer Science II, a friend of mine and I realized that we had not studied the material of the course thoroughly enough. Both of us had a broad, but very fragmented, knowledge of those topics coming from our previous background and attendance to some of the course lectures. In just one afternoon of brainstorming, explaining to each other, and fixing each other's bugs, we were able to put together a systematic overview of the course material. As a result, both of us performed very well at the exam the following day. However, teamwork does not always lead to successful learning. In some cases, especially when working in large teams, some students just "sit back" and let other people do their work. Other times, a student needs to study alone in order to avoid distractions. Achieving a good balance between individuality and collaboration can be difficult, and highly depends on the context. An example of a good solution in the context of computer science comes from the Programming Language Design class I worked on as a teaching assistant in spring 2007. The instructor of the class and I allowed students to work on homework assignments either individually or in pairs, according to their own preference. This format worked very well; it encouraged collaboration among students, but did not force it, and effectively prevented unwanted collaboration, i.e., cheating. Overall, the quality of students' work in that class was quite good.

Teaching Experience

My first teaching experience dates back to when I was 15 years old. From 1993 to 1997, I taught basic guitar courses at "Oratorio S. Tarcisio e S. Agnese," an institution closely related to the parish of my home town, Gaggiano (Milano), Italy. The students where children and younger teenagers. This experience was very challenging and rewarding for me, and I learned a lot about the importance of student goals, and adapting my teaching to the context.

From 1997 to 2001 I tutored high school students on Math, Physics, and Chemistry. Practicing one-on-one tutoring gave me the opportunity to improve my ability of assessing students' knowledge and misunderstandings in order to provide personalized and more effective instruction.

Throughout my graduate student career, first as a Master's student (2001-2002), then as a PhD student (2005-2008), I worked as Teaching Assistant (TA) at the University of Illinois at Chicago for several semesters.

My activities as TA varied across different courses. They included teaching weekly lab sessions, grading homework assignments, projects, and exams, tutoring students, preparing assignments and classroom materials, and occasionally lecturing in front of the classroom. My work as a TA has been formally appreciated by the Department of Computer Science, which awarded me the Outstanding Teaching Assistant Award for the academic year 2005-2006.

In spring 2003 I taught introductory computer science classes to third, fourth, and fifth grade children at the Elementary School of Gaggiano, Milano, Italy. The experience of teaching to children allowed me to improve my ability to present difficult topics in a clear, interesting, and age-appropriate manner.

In fall 2006 I taught an Italian as a second language course at the Shrine of Our Lady of Pompeii, Chicago. The students were mostly adults interested in learning a foreign language for travel purposes. Given their goal, I organized the class to provide a balance of basic conversation skills and cultural awareness.

In summer 2008 I taught an introductory rock climbing course at the Student Recreation Facility of the University of Illinois at Chicago. This course gave me the opportunity to teach life-critical skills and procedures. This fact required me to provide extremely clear explanations and demonstrations, and to make sure that students understood and assimilated the material perfectly.

Since fall 2010 I have been working as an Assistant Teaching Professor of Computer Science at Carnegie Mellon University, both in Pittsburgh, PA, and in Doha, Qatar. I taught a variety of Computer Science courses, and I also designed or co-designed some of them.