Maxwell Levatich

Home | Curriculum Vitae | Teaching | Research | Personal | Software Projects

Teaching philosophy

In my teaching, I am always looking for methods of engaging surface or "strategic" learners, as distinguished from "deep" learners by Marton and Säljö [0] and later applied to college education by Bain [1]. I recognize a former version of myself in the strategic learner - optimizing one's time and studies with the intent to obtain high grades while minimizing effort, at the potential expense of a deeper understanding.

Many Computer Science classrooms are well-suited to strategic learning. Programming assignments and projects are completed asynchronously. For flexiblity and accommodation, classes frequently offer lecture recordings (in many cases, a student can pass without ever attending lecture at all). To the extent that there is a trend away from in-person exams, it is for good reason - an exam poorly assesses the patience, resourcefulness, and large-scale design and critical thinking skills that a computer scientist needs to succeed in the real world. To assess students primarily by their performance on timed exams is to assess the wrong learning objectives.

But while deep learners will appreciate being assessed on appropriate learning objectives, strategic learners may find themselves opting-in to a shallower experience. This concern has become even more pressing as AI coding assistants make it easier for strategic learners to produce convincing and correct assignments without having spent the necessary time engaging with the core concepts being assessed. As educators, if we do nothing in the face of these developments, then our in-person teaching effort is no more useful to students than a free asynchronous online course, an option that has become available in almost every conceivable subject in the past decade.

But I believe deeply in the value of in-person, collaborative learning, so I am always pursuing ways to authentically engage strategic learners in active learning. In my Fall 2025 course, Parallel Functional Programming, I use a unique blend of live-coding exercises and short, low-stress, in-person quizzes to entice students into the classroom learning environment without causing anxiety or assessing the wrong learning objectives.

[0] Marton, F., & Säljö, R. (1976). On qualitative differences in learning: I—Outcome and process. British journal of educational psychology, 46(1), 4-11.

[1] Bain, K. (2004). What the best college teachers do. Harvard University Press.

Experience

2026

Instructor
ENGI 1006: Introduction to Computing for Engineers and Applied Scientists, Columbia University (Spring).

2025

Instructor
COMS 4995: Parallel Functional Programming, Columbia University (Fall).

2023

Head Teaching Assistant
ENGI 1006: Introduction to Computing for Engineers and Applied Scientists, Columbia University (Fall).

2021

Teaching Assistant
COMS 4995: Parallel Functional Programming, Columbia University (Fall).

Teaching Assistant
COMS 4115: Programming Languages and Translators, Columbia University (Fall).

2020

Head Teaching Assistant
CS 112: Introduction to Computer Programming, Yale University (Spring).

2019

Head Teaching Assistant
CS 50: Introduction to Computer Science, Yale University, Harvard University (Fall).

Teaching Assistant
CS 112: Introduction to Computer Programming, Yale University (Spring).

2018

Teaching Assistant
CS 50: Introduction to Computer Science, Yale University, Harvard University (Fall).

Teaching Assistant
CS 112: Introduction to Computer Programming, Yale University (Spring).

2017

Teaching Assistant
CS 50: Introduction to Computer Science, Yale University, Harvard University (Fall).

Selected teaching samples

My first experience teaching monads in Haskell for COMS 4995 - Part 1


Part 2


Student feedback and evaluations

Understanding and acting upon student feedback is one of the most direct and important avenues for growth as a teacher. I look forward to reviewing student responses to my upcoming midterm course evaluation for Parallel Functional Programming. As a Columbia TA, I have received glowing evaluations for each of the three courses I have staffed. Linked are complete evaluations for:

ENGI 1006: Introduction to Computing for Engineers and Applied Scientists

COMS 4115: Programming Languages and Translators

COMS 4995: Parallel Functional Programming

Aggregated, over 85% of students rated my overall quality, knowledgeability, and approachability as a TA as either "Very Good" or "Excellent".

Selected student comments:

"Max is the most patient and amazing TA ever. At the start of every recitation, he would ask us which particular topic we wanted to focus on...If we don't understand it in a certain way, he'll use another way to elucidate the concept...no matter what questions we ask or how many. Once, when we had to move out of the classroom because another class was using it, he gladly brought us to another corner to help us...He genuinely loves teaching."
"[Max] is one of the best TAs I have had so far. Very patient in address students' academic challenges. Highly knowledgeable of class material."
"Max explained things in a very clear and effective way."
"Very nice and approachable TA."
"Truth be told, I never went to a recitation, but...I'm sure he's excellent."

Certifications and awards

I'm proud to have earned the Advanced Track certification (the highest possible) from Columbia CTL's Teaching Development Program for "sustained teaching development in graduate school."

I was one of 3 TA's in a staff of 32 for Yale's offering of CS50 to receive the inaugural SCAZ award (named in good humor after Professor Brian Scasselati) for "superior committment and zeal" in fulfilling my many TA responsibilities.


Last modified 10/10/2025