Introduction / Context Statement

As of January 2022, I am an Assistant Professor, Teaching Stream at Lassonde School of Engineering, York University. In addition to teaching, I am heavily involved in the development of the program and curriculum for the Bachelor in Digital Technologies for the Markham campus, to open as early as September 2023. This program is based on a hands-on approach, where students are able to interact with real-world scenarios through partnerships with local business providing full-time work positions. The integration with an authentic work environment is expected to provide students with a deeper understanding of topics that Industry partners really care about.

Up until the end of 2021, I have been a Lecturer in the Department of Computer Science of the University of British Columbia, Vancouver campus. The University of British Columbia (UBC) is a global centre for teaching, learning and research, consistently ranked among the top 20 public universities in the world and recently recognized as North America's most international university ( The Department of Computer Science is a thriving community at UBC, and is considered one of the top 3 of its kind in Canada.

My primary area of interest is Computer Systems, broadly defined. This area typically comprises the interface between hardware and software, and includes topics like Computer Architecture, Operating Systems, Networking and Security. In particular, I like to engage in topics related to File Systems, in particular Distributed File Systems. This topic allows me to explore the bridge between abstract concepts like files and directories, and the implementation of these concepts in a specific context like a storage medium, a network connection or a virtual environment.

I took my undergraduate studies in Computer Science at the Federal University of Paraná (UFPR), in Curitiba, Brazil. Although the program at UFPR did not provide an Honours option, I completed a research capstone project during my final year of the BSc program, similar to a North American model of an Honours thesis. After finishing my Bachelor's degree, I continued my research in a Master's program at UFPR. My thesis proposed an alternative routing algorithm based on a trade-off between speed and reliability, which theoretically would allow a lost connection to be bypassed with alternative routes more effectively. After finishing my MSc studies I started teaching full time at UFPR and a local college in São José dos Pinhais, Brazil.

In September of 2007 I started my Master program in Computer Science at the University of British Columbia, transferring to a PhD program one year later. As a PhD student, in addition to my research on Distributed File Systems, I was involved in several educational initiatives, in addition to experience as a teaching assistant. Initially I was involved in the development of a clicker-like application using Bluetooth for feature phones, called BlueCT. I was also the lead developer of LIVES, a platform for distance learning using phone calls. LIVES has been in use in several countries, particularly in regions where Internet and formal education are not as prevalent, like rural areas of India and Afghanistan.

As part of the Carl Wieman Science Education Initiative (, in 2011/2012 I was involved in the redevelopment of UBC's 3rd year course on Computer Networks (CPSC 317). This specific project refocused the course on topics that most Computer Science students would actually need in real life situations, reducing focus or eliminating topics that students don't encounter in professional life. As part of this team, I developed new material, new activities for in-class active learning, new assignments, and new tutorial classes aimed at practical applications on topics presented during regular lectures. This work has also been crucial in recent months, as I developed the follow-up course in Computer Networks (CPSC 417).

Between 2012 and 2014 I took the responsibilities of TA Coordinator in the CS department. In this position, I was responsible for handling TA evaluations; mentoring and coaching TAs, directing them to additional resources when necessary; moderating conflicts between TAs and instructors or students; and selecting TAs for awards.

After completing my PhD program in 2016, I taught for one Summer term at Douglas College, before starting as a full-time Lecturer at UBC. Starting in July 2017, I also took over the role of TA Assignment Coordinator in the department. This position lasted until the end of 2021, when I was offered a full-time opportunity at York University.

Teaching Philosophy

My experience with teaching Computer Science in the past sixteen years has allowed me to learn strategies and philosophies that contribute to a more effective way to present Computer Science topics. In particular, I would like to address my experience with active learning, my personal practices on handling student questions, my recent experience with adapting course material for each class, and some ways I have sought to improve myself and become a better teacher.

Active Learning: In recent years I have been involved in several active learning initiatives at UBC and York. Instead of blindly presenting the material in lectures to students in an expository fashion, current technology allows students to be presented with this material outside of the classroom environment, using tools like textbook readings, online videos and screencasts. Lecture time present students with direct access to the instructor, where they can practice their understanding with guided exercises and have immediate feedback. I have recently been able to use this methodology in courses like APSC160 - Introduction to Computation in Engineering Design (P. Carter; "An experience report: on the use of multimedia pre-instruction and just-in-time teaching in a CS1 course"; SIGCSE, 2012), where during the shift to online shift due to COVID-19 I restructured the existing worksheets to use PrairieLearn, an online tool that provides immediate feedback on students' answers. I have also been able to contribute towards a focus in the direction of active learning through my scholarship in the Carl Wieman Science Education Initiative (CWSEI), in which I contributed towards class activities and assignments for the course on Internet Computing at UBC (CPSC317).

Student questions: Students should be motivated to ask questions, and the teaching environment should be open to allow those questions to flourish, in class, in one-on-one meetings or through collaborative online tools. Questions should never be considered too easy or too simple. As an instructor, I assume as one of my responsibilities to ensure that the answer to a question is not just a way to dismiss a student's immediate need, but I try to incorporate the answer into the learning process of the student and the class in general. I have observed that in classes where one student asked a question and received an encouraging answer, the interruption of the "regular flow" of class prompted other students to pay more attention to the discussion at hand, leading other students to learn from that answer. Such questions tend to lead to other questions that cleared misunderstandings in class and pointed students to the following topic in a productive learning environment. They also provided a foundation for a trusting relationship between me and the students, and students that would typically struggle in the course were encouraged to interact with me and other course staff inside and outside of class.

One of the keystones of my interaction with students is to try and understand the full context of the question a student is asking. My goal is to understand what a student actually needs to know, not only what they asked. One of the many strategies I have used is to repeat the student's question but using other words. Also, sometimes a question may be rooted in a misconception the student may have about the presented material; in such cases, I have tried to not only answer the question, but, before that, to make sure the student is led to the correct course of thought so that the answer makes sense and is beneficial.

Students often learn better by interacting with other students through "peer instruction" (Zingaro, D.; "Peer instruction contributes to self-efficacy in CS1"; SIGCSE, 2014). When I am teaching a course I often encourage students to engage in group activities, assignments and evaluations. I also like to encourage students to answer other students' questions in online forums or eventually in class. I have found that, when one student explains a concept to another student, everybody learns from the experience. The student that asked the question is presented with a different perspective on the concept; the student that explains it will deepen his/her understanding of the answer by presenting it in a different way; and other students will be exposed to the explanation for that question in a manner that can potentially confront misunderstandings.

Course delivery: Teaching is an adaptive process. An instructor should be able to assess the learning environment, and adapt it based on its success or failure (whatever that means in the context). In the example of a University-level course, I have aimed to adapt my presentation not only in following terms, but also in the course delivery as it progresses through the term, as well as the rate at which the material is presented. One particular way of assessing the learning environment is by evaluating the questions raised by students, and their participation in general. When the same questions are raised regularly, the way the questions are answered must be refined. If students are raising questions that lead to following topics, the learning process is progressing as planned.

From my experience, one of the most effective ways to address student struggles is to slow down and divide the problem. This approach allows me to identify the specific concept that is causing the struggle, and presents the student with the missing links that allow him/her to proceed with the material. From my background as a teaching assistant and my frequent appointment to tutorials and office hours, I have learned that different students understand the same concepts through different mediums or strategies. Whenever possible I try to teach new concepts in more than one way, in order to make sure students can be introduced to the material with a wider understanding of the concept, often using metaphors (Waguespack Jr., L. J.; "Visual metaphors for teaching programming concepts"; SIGCSE, 1989). For example, when teaching students about network delays and bandwidth, I extend the explanation by bring examples of familiar concepts that behave in the same way, such as traffic patterns and public transit systems; I also try to use in-class activities that simulate the expected behaviour, for example by asking students to pass along paper messages simulating Internet traffic.

Learning to Teach: In the process of improving my ability to teach, I often take advice from colleagues and the University community. I believe the ability to learn from others is something that should be considered not only for my students, but also for myself. In particular, by coordinating course sections with more experienced instructors, I have been able to obtain insights not only in the course material itself, but also in how to present it in a more effective manner. I have also taken upon myself to attend conferences with a focus on understanding strategies that have been successful around the community. I have recently attended SIGCSE (Technical Symposium of the ACM Special Interest Group on Computer Science Education) and WCCCE (Western Canadian Conference on Computer Science Education), which were very valuable.


As a Lecturer in the Department of Computer Science at UBC, I have been able to develop and enhance several courses in the area of Computer Systems. For courses like CPSC 313, CPSC 213 and CPSC 261, I have created new assignments, new evaluation methods, and new practical environments. For example, for CPSC 313, I created a new Web-based CPU simulator that can be used to discuss concepts like Assembly programming and machine code, general purpose and special purpose registers, pipelining, data and control hazards and caching. This simulator is often used in lecture presentations to present new concepts, in assignments as a framework for Assembly development, and by students aiming to "play" with different concepts related to Computer Architecture.

My ability to teach all different kinds of courses, from entry-level to last-year courses, from small classes to large auditoriums, has been recognised by students and Faculty alike. In addition to excellent evaluations of teaching, I have received a Department Teaching Award in 2018.

In addition to teaching, from 2017 to 2021 I have also been the TA Assignment coordinator for the Computer Science department. In this position I oversaw the assignment of teaching assistants to all courses offered by the Department of Computer Science, totalling over 700 TA positions per year. I have also been part of the Classroom Operations committee, which oversees the operational side of course offerings, enrolment, TA resources and training. I also facilitated the interaction between teaching assistants and instructors.

I have been involved in initiatives related to SoEL, including participation in Computer Science education conferences, participation in reading groups, course development, and the development of tools for student engagement and assessment. This effort has been particularly relevant in the activities I took part in the last two years.

As I move forward in my professional journey, one of my goals is to be able to devote time to improve my skills continually, either through experience, or by learning through research opportunities, either from others or on my own. As part of the Computer Science Education Reading Group at UBC and the Teaching Stream faculty group at Lassonde, I have been fortunate to learn from other instructors in these departments and elsewhere about techniques and methodologies that are proven to improve students’ learning. I have also been able to participate in the evaluation and development of future research in Computer Science education, particularly in topics related to instructor-student interaction. I am also part of the local organizing committee for the 25th WCCCE Conference at UBC.

Educational Leadership

In the last few years, I have aimed to grow in the Educational Leadership dimension, focusing on bringing an impact that goes beyond the limits of my classroom. And as these improvements are properly identified and contextualised, my hope is that I will be able to disseminate the ideas that have been growing in my practice, and be an influence in my context and beyond. I have been fortunate to be involved in departments with collegiate spirit and where Faculty members demonstrate a focus on teaching excellence.

As I progress through my career, it is one of my goals to be able to lead pedagogical initiatives that further the experiences of students and teaching staff as they progress through each offering of a course, or their program in general. I am particularly interested in developing further studies on how to improve the selection, training and development opportunities for teaching assistants in the department. As part of this goal I have recently completed UBC's International Program for the Scholarship of Educational Leadership.

I am also engaged in the development of curriculum innovation. I have recently re-developed CPSC 417 at UBC, a course on advanced topics on networking that hadn’t been offered in 8 years; given the significant changes in the area in these years, with advances in security concepts, Wireless (including 5G networks) and Software Defined Networks (which weren’t even defined before 2008), this course required a significant overhaul. This overhaul had as a major goal allowing students to be engaged in topics that are relevant in today’s environment, focusing on the conceptual ideas rather than technical details.

I am an active collaborator of the PrairieLearn project, an online tool for student assessment based on mastery learning. In this project I am currently the maintainer of the C and Java autograding platforms, as well as a major contributor to initiatives for exam proctoring and assessibility accommodations.

I am also part of the organizing committee for the 25th WCCCE Conference (to be held in 2022) at UBC, a conference that has brought together CS educators across the country to share success stories and innovations in Computer Science education. I have also participated in international conferences in the area such as the SIGCSE Technical Symposium and ICER.

Future Activities

My goal is to contribute towards the growth of Computer Science initiatives in my local context and abroad. I hope that my contributions in areas like pedagogical innovations and curriculum development in Systems courses, and my work in TA engagement, can bring change in the educational experience of students, fellow instructors, teaching assistants, and the Computer Science community as a whole.

In the summer of 2020, I participated in UBC's International Program on the Scholarship of Educational Leadership. As part of this program, I designed a proposal for an evaluation of the current practices of allotment, selection and assignment of TAs to different courses in the Computer Science Department. This proposal focuses on an appreciative inquiry of current practices, and aims to identify the different cohorts of teaching assistants, such as graduate and undergraduate TAs, international TAs, TAs with industry experience, TAs with experience in other universities, and so on. It also highlights some related work in CS Education and general SoEL research that can be relevant to this discussion. The goal is to inform our future decisions related to the number and characteristics of TAs to assign to different courses. I am hoping that this proposal can become an actual research project in the department within the next few years.

Recently I have been increasingly involved in the development and improvement of tools like PrairieLearn. This involvement has not been restricted to individual minor changes, but in core features of the system. Given the impact such development has in my classroom and outside it, I intend to continue working on PrairieLearn and other tools, as well as on the creation of tools to be used in learning environments in the department and elsewhere.

Diversity, Equity and Inclusion

As an educator, I believe it is part of my duty to ensure that all my students are treated with fairness and respect, regardless of their identity, beliefs or background. My responsibility is teach them on the topics that are relevant to the course in question, as well as to mentor them and support them as they struggle and advance through their academic achievements. In this context I believe it is important to give all students the ability to prosper, and to support those that are marginalized so that they can experience success in their educational goals.

Canada is a country that receives a large number of immigrants, each with their own cultural background. I believe that this diversity of cultures is what brings prosperity to this country. Unity in diversity has a greater beauty and power than unity alone. A work of art is truly great if it brings joy not to a small group of like-minded people, but to a great diversity of people, since such work appeals to a universal truth within all people.

It is within human nature to be informed by bias in our communication with others. One particular area where such bias can be particularly prejudicial towards some groups of people is in grading assessments. To ensure such bias does not take place in my own context or with teaching staff (other instructors, course coordinators, teaching assistants) in environments I am responsible for is to ensure that marking is performed anonymously. Whenever possible I remove any information that could identify the student (or the group they represent) to markers, ensuring that marking is done purely on the merits of the answer itself, not on any recognized or invisible bias towards specific students. Exams are often identified by numbers that are only linked to individual students after marking is complete.

As universities moved towards online learning in the recent past due to social distancing measures, one trend I started to notice was that students that often were unwilling to ask questions in a social setting (due to cultural differences or because of their own personality) were often more comfortable asking questions in a private chat setting during class. By ensuring that such questions are encouraged, kept anonymous, and answered in a timely manner, I believe such students are able to engage with the course material more successfully. Similar techniques such as web-based polling (with participation points rather than performance evaluation) can also be used to allow students to participate in class discussion without fear of direct repercussion. Given these anecdotal results, I intend to further evaluate the use of anonymized tools to encourage participation in class, and their impact in the engagement of students in general. I am planning to study if this different is real, how much it brings positive change, what the caveats are, and why such a change is perceived.

In the last few years I have completed courses on preventing and addressing workplace bullying and harassment, unconscious bias and other topics related to diversity and inclusion. I understand that, based on my background, I must make a conscious effort to ensure that my actions are grounded on an inclusive foundation. As such, I am always open to learn more about ways to improve in my relationship with others and to act with respect and inclusion.