My Teaching Philosophy: Active Learning for All
Phillip Compeau
Professor at Carnegie Mellon | Online education founder | PhD | MBA
Building an Active Learning Classroom
The ability to adapt my teaching to students at different educational levels and from varied backgrounds, in addition to rapidly adapting to the pandemic classroom, has in large part defined my first several years of classroom teaching.
That having been said, I also apply unifying principles across my teaching. All my courses feature an attendance policy that allows students to miss up to three classes without penalty, yet most students achieve perfect attendance. I do not permit phones or laptops in my classrooms (and tie this policy to attendance) unless we are working on pair programming or a code-along, as described below. An important complement of these policies is ensuring that students understand that their attendance directly impacts their success in the course, and that I build a classroom that they see the value of attending, which I reinforce by instituting an active learning classroom across all my teaching.
?The active learning classroom is one in which the professor fosters students to construct as much understanding of the material on their own as possible, rather than conveying the material through a lecture in which most students rarely participate (and many do not attend).? The active learning classroom is empirically superior to traditional lectures, as demonstrated by a meta-analysis performed by Freeman et al. 2014[1]. These authors concluded that active learning on average will boost student performance by half a standard deviation, and it reduces failure/drop-out rates by 50%.
?In the following sections, I will describe the specific courses that I have taught, all of which I developed, co-developed, or completely overhauled. Where applicable, I will mention how I implemented active learning as well as how I have worked to master teaching each course. As evidence of the success of my approaches, my teaching evaluations are superlative across all of my courses, I have twice been nominated by my students for a Carnegie Mellon teaching innovation award (for Fundamentals of Bioinformatics and Precollege Program in Computational Biology), and in 2022, I won the Herbert A. Simon Award for Teaching Excellence in Computer Science (for Great Ideas in Computational Biology).
?Great Ideas in Computational Biology
In spring 2019, Carl Kingsford and I designed and taught 02-251 (Great Ideas in Computational Biology), a course showing first-year School of Computer Science undergraduates the big ideas that have made biology a computational discipline. These ideas are beautiful but often advanced, and when a similar course is taught at other universities, it is offered as an advanced elective for upper-class students (many of these analogous courses have adopted my Bioinformatics Algorithms project with Pavel Pevzner). The challenge, then, is to communicate these ideas to first-year undergraduates in a way that prevents overwhelming or overworking them.
I have taught the course solo since 2020, and in that time, I have made significant changes to the curriculum, based on input from both Computational Biology Department faculty and former students. The course operates on a lecture format, but to facilitate active learning, I ensure that each lecture has three or four breaks in which students are required to complete an exercise, usually working with a teammate. To further ensure that students work together, I have added group-based homework assignments and replaced a final exam with a final project that students complete in a group. With the rise of the COVID-19 pandemic, I developed a collection of SARS-CoV-2 Software Assignments showing students how the ideas they learn about in the course are integrated into real software that we can apply to SARS-CoV-2 genome datasets.
I am also proud of measures I have taken to keep the course fun. We have had southern rap playlists introducing our lectures; we have had “Phillip’s T-shirt showcase” in which I show off a different T-shirt and let students vote on whether I kept it.? In spring 2020, when our course was taken suddenly online, I wanted to lighten the mood at a time in which students were understandably distressed. I rummaged through my closet to construct crazy outfits for each day, from “Joe Exotic” to “enthusiastic Spring Break 2020 attendee”. In spring 2021, to fight the general sense of apathy that many students were facing, I implemented a bounty system in which various aspects of student attendance and participation would be rewarded with personal donations to charity, much like a British boarding school’s points system. I wrote further about these efforts on my website in “Incentivizing Course Participation with Charity Contributions” and was pleased that participation skyrocketed, the chat was very lively, and we were able to donate $442 to the wonderful Every1online project, which my students chose as our partner charity.
Programming for Scientists
?02-601 (Programming for Scientists) is a course designed for first-semester MS students that I inherited from Carl Kingsford and have taught since fall 2015. Since that time, I have made four significant major changes to the course.
First, I have reworked the course structure to include a great deal more scientific content. Specifically, each module of the course centers on a single scientific inquiry, from finding replication origins in a bacterial genome, to building a gravity simulator, to constructing evolutionary trees of coronaviruses, to implementing a self-replicating cellular automaton, to simulating a presidential election from polling data. The scientific problem is presented upfront, which motivates a transition to a topic in programming that is required to answer this problem, and then the course centers on applying this topic to build and analyze the required scientific model.
?Second, although the course has short lectures to motivate material, most time in classes and recitations is devoted to active learning via code-alongs and pair programming. In the former, students type along following the instructor’s lead as we demonstrate a programming topic. In the latter, students are tasked with working with a partner to take the next steps or apply what they have learned by completing an exercise.
?Third, I noticed that students who have not previously programmed tended to struggle the most with the course’s first month of content. After a challenging first month, many of these students became indistinguishable from others when we covered more advanced topics. To allow a more gradual on-ramp, I now make what previously was the first month of the course a required prerequisite, and I have transitioned this material (contained as part of the Programming for Lovers project) into an online bootcamp that students complete with guided help from teaching assistants in the summer before they matriculate at Carnegie Mellon. Running this bootcamp has freed course time that I devote to more code-alongs and pair programming exercises, as well as to deeper dives into more advanced topics, with a focus on dynamic programming, distributed computing, assembly language, and an introduction to data structures. As Programming for Lovers grows, I will be making the entire course open to the community with the hope of widespread adoption.
?Fourth, I have expanded the course’s final project, allowing students to complete the project in groups, but demanding that their project constitutes at least 4,000 lines of code.? Holding an online bootcamp in advance of the course ensures that students begin the project with greater confidence. Furthermore, in fall 2023, at a time when many instructors were banning AI tools like ChatGPT and Github Copilot, I established an AI policy encouraging students to use these tools to help them write and test code for their project; in my experience, this measure greatly improved the quality of the final projects.
?I am excited to have watched the enrollment for this course grow from 25 students in my first offering to 60 students in fall 2024. In the future, I would love to see the course grow further, and in fall 2025, I am planning to relaunch an undergraduate version of Programming for Scientists.
Precollege Program in Computational Biology
02-000 (Pre-College Program in Computational Biology) is a four-week full-time high school program that I developed with Josh Kangas. Each day, students spend four hours with me learning how to implement fundamental algorithms for the analysis of biological data that they generate in a four-hour laboratory session with Josh. In previous years, I would teach the entire cohort in the mornings; this year, because we have grown to nearly 100 students, we will be dividing our students into two equally sized cohorts, and both Josh and I will teach in both the morning and afternoon, switching our cohorts at lunch.
?The data for the program is based on a combination of publicly available SARS-CoV-2 genome data and an environmental study of the microbes living in Pittsburgh’s three rivers. Typically, students spend a day at the start of the program touring 40 miles of the rivers and sampling river water on a state-of-the-art vessel operated by local charity Rivers of Steel. This year, we are also adding a field trip to Boyce Park, where we will be comparing different ponds that suffer from acid mine drainage.
?Before teaching this program the first time, I thought that students might tire of such a lengthy day, and yet I have found the challenge to be quite the opposite. The students are immensely energetic and have no problem enduring a four-hour session with just a single short break. Even after two of these sessions in a day, they leave in the evening brimming with enthusiasm.
Like Programming for Scientists, the coding component of our precollege program operates based on code-alongs and exercises. And, like Programming for Scientists, I have started to require materials from my Programming for Loversproject as a preparatory bootcamp to ensure equity of student background when our students arrive.
?I have also noticed that our PreCollege students tends to be hyper-social, much more even than undergraduates, and so I have changed the structure of the course to require dozens of hackathon coding exercises connected to the program material. Students work in “pods” of 4 or 5 students – perhaps the ideal group size[2] for problem-solving, and one favored by the Navy SEALS – to solve and debug problems together with roaming TA and instructor support. It is astounding to me (and to colleagues when I have spoken about our program to other computational biologists) that our students will write dozens of lines of code with minimal instructor input and be able to implement a fundamental algorithm from a research paper that has thousands of citations and that was once at the frontier of computational biology research.
?The heavily active learning structure of the hackathon component allowed our precollege program to adapt seamlessly to an online environment in 2020 and 2021 due to the COVID-19 pandemic. In fact, we were one of only three programs to run in 2020, and we did so at a significant surplus due to the ability to scale our program beyond physical limitations of classroom space.
?Professional Issues in Computational Biology
?02-602 (Professional Issues in Computational Biology) is a course I taught from fall 2015 to fall 2020 with three co-instructors: Shoba Subramanian, DJ Brasier, and Stephanie Wong-Noonan.? Over that time, I worked to transition this course from a weekly seminar into a completely flipped intensive skills development course in which students learn how to form their professional skills outside of class, which frees in-class time for peer- and instructor-reviews of student demonstrations of their professional skills via resumes, cover letters, elevator pitches, mock presentations, and mock interviews.
领英推荐
?Students present their resumes and introduce themselves to a hypothetical employer, explain how they would navigate a crisis in a work environment, deliver a short presentation on a technical topic, and go through several rounds of mock interviews, all while getting instant peer and instructor feedback on their work. One of my proudest moments as a teacher was having a student tell me that they had received an internship at Illumina (a company receiving over 10,000 applications annually for fewer than 100 internships) in large part because they had aced a short presentation as part of the interview, and that it was due to the guided practice that they received in this course.
?The course did not have faculty course evaluations, but below, I am providing some comments from five different students as part of their final reflections in the course from fall 2020.
I believe that this class was one of the most useful classes that could have been offered to first year students in the program. Coming into the program, one of my biggest worries was how I could focus on both my coursework and my internship/job search at the same time. Creating the latter into a course itself made it much easier for me to concentrate on this aspect. I learned many useful skills from this class, from having a complete resume, to writing a cover letter and preparing for interviews. On top of that, this class forced me to recognize the many resources the Carnegie Mellon has to offer, such as the career center, and take use of them. Now, I feel as though I always have wonderful people that are willing to help me get to where I want to be in my career path.
Not only did this course benefit my professional skills, the adaptiveness shown to teach the course asynchronously was a marvel. Giving advice and allowing us to view other answers was a great way to provide feedback. Viewing other responses allowed me to look at ways I could better myself.
?I have gained a lot of insights from this course which I’m going to find immensely useful going forward. I now have better awareness of how to go about the job application process and the main strategies I will need. I am also more aware of the need to stay up-to-date on LinkedIn and maintain professional networks, and how to communicate professionally and engage constructively with the content on the platform. I consider these to be life skills, as I will continue needing these at every stage of my career. I am confident that I now have a good sense of the know-how and can project myself confidently to smartly leverage opportunities.
??
?Fundamentals of Bioinformatics
?I have built active learning into my classes wherever possible, but the largest such effort is the flipped class that powers 02-604 (Fundamentals of Bioinformatics), a course that I designed for second-semester MS students in computational biology and have taught since spring 2016. I was a finalist for a Teaching Innovation Award at CMU for my work in this course, and in 2018, I was invited to deliver a keynote talk at the meeting of the Community of Special Interest in Education at the 26th Conference on Intelligent Systems in Computational Biology (ISMB), the largest annual conference for computational biology worldwide. This talk led to the publication of an education article[3] in PLOS Computational Biology about my experience in teaching the course, where I discuss some of the challenges that I encountered and how I responded to these challenges.
?As mentioned previously, in a flipped class, students complete outside of the classroom what would normally be covered in a lecture, freeing class time for assessments that test and deepen their understanding of what they learned outside of class. I appreciate the definition of a flipped class proposed by Bishop and Verleger?in 2013[4], in which the pre-class learning must be?automated. ?This definition therefore would exclude course structures like the one I have described in 02-602, in which students simply read an article or watch a lecture video before class (although I have still found such a structure to be useful).
Requiring the flipped classroom to incorporate automation in its activities outside the classroom also helps indicate the clear bottleneck in implementing successful flipped classes. ?Fortunately, in the case of Fundamentals of Bioinformatics, I built (with Pavel Pevzner) an interactive online textbook as part of the Bioinformatics Algorithms project. This online textbook has served as the automation vehicle for Fundamentals of Bioinformatics for the past several years.
A reasonable model for flipping a course is to require students to complete a module of material outside of class, and then use a weekly class meeting to discuss this material as well as solve some additional exercises derived from the material.? Yet in teaching Fundamentals of Bioinformatics for several years, I have learned that such an approach is flawed; although high quality automated learning materials are vital to student success outside of the course, a more careful design of the in-class modules is just as important. I have spent the past few years designing these in-class modules to best serve my students, and I will describe that design in what follows.
Each week in Fundamentals of Bioinformatics, students complete a module of the interactive text, logging every remaining question or concern that they have (they are required to ask at least five questions). Students must submit this work the evening before the in-class session, at which point I work with my teaching assistants to consolidate all student questions.? The 2.5-hour in-class session then comprises the following five components of approximately equal length.
In particular, the recent inclusion of component 5 is one of which I am very proud. It allows me to demonstrate that the course is not a series of unconnected topics arising from the ether, but a chain of key ideas that can be threaded together into one overarching narrative with a single theme. ?Component 5 also moves the course beyond active learning into a different paradigm called discovery learning, in which students are not just recipients of knowledge but rather the constructors of it.
Self Evaluation of Goals, and Looking Toward the Future
?My primary goal in teaching is to create an educational experience across all my teaching that is both challenging and rewarding to students. I will allow my student letter writers to indicate whether I am meeting this goal. I will also point to my faculty course evaluations, which are typically in the 4.9 out of 5 range in all courses over all categories.
?I also would like to highlight that in most of my teaching, I was able to achieve these high course evaluations within one or two semesters of teaching the course. A notable exception is in 02-604 (Fundamentals of Bioinformatics), in which I needed four or five years to figure out precisely how to deliver a fully flipped technical course to master’s students so that they would not only learn the material but enjoy the experience. I am proud that these evaluations are now in the 4.9 range as well, and it was worth taking a more challenging path to success.
?As I look toward the future, I want to find ways to innovate in the classroom beyond course evaluations. In my MBA, I have learned a great deal about how to improve both the structure and delivery of presentations for different audiences, and I relish the opportunity to apply what I have learned and further improve my teaching.
?I also am forever growing my teaching presence via open online education projects at scale, and a central theme of my work as a professor is in continuing to find ways in which best practices in online and offline education can inform each other. I have noticed in developing Programming for Lovers that improving my camera skills and understanding what strategies work for streamers have equipped me with not only a full arsenal of generation Z slang, but more confident in-class delivery and an understanding of current learner preferences. As our world gets increasingly more automated every day, these measures become even more critical for ensuring that our teaching remains human.
Student at James Logan High School - Interested in Computational Biology/Bioinformatics
4 周That's me!!
Pathways to Computational Biology | Figure One Lab
1 个月Such a good article, thank you for putting into words what I have been thinking about. Active learning and discovery learning are so central to a computational biologist’s experience, so learning how to learn in that way in college is invaluable.
Wow! There is so much goodness packed in here, I may need to read it a few times to absorb it all. Thanks for sharing your insights into effectively running flipped classrooms. I would love to learn more about the professional skills course; I think it could be helpful for our work at Rainier Scholars. One strategy I’ve found useful is to craft projects that the students can imbue their personalities into. It makes it more fun and relevant to them, and therefore more engaging. I saw multiple examples of you doing this in your pre-college program, so I assume it’s a part of your teaching philosophy. But might be good to call out for others who are trying to make engaging curriculum.