Kevin Lin

Creating effective, equitable, accessible CS education.

he/him Schedule a meeting Availability

Please wait, the meeting host will let you in soon

A look back at the 2020 through 2021 academic year.

Specifications grading policies

How to get your LMS to work with your grading policies, not against them.

CS Education for the Socially-Just Worlds We Need

The Case for Justice-Centered Approaches to CS in Higher Education

Centering Identity and Culture in Critical Computing

How do we wrestle with critical questions and justice in our racialized classrooms?


A seamless, community-centered active learning classroom in ohyay!

Comparative data structures

Designing autograder-free programming assignments for rightful presence.

Do Abstractions Have Politics?

Toward a More Critical Algorithm Analysis

Implementation of Mastery Grading Toward Rightful Presence

Moving a step closer to justice-centered CS education.

Flipped classroom remote teaching

How we run class in my remote, introductory programming course.

Programming a Better Future

How computer scientists can undo the social dilemma.

Learning from errors

Self-regulation and metacognition in algorithm design.

Restorying Computing

Developing a critical computing theory.

Nifty Web Apps

Build a web app for any programming assignment.

Grading for equity

On the question of programming as art versus science.

Text Classifier

Implementing a decision tree data type for text classification.

A new ethos for computer science

A look back at the 2019 through 2020 academic year.

Evidence-based and equity-based computing education

An introduction to four areas of evidence-based and equity-based teaching.

End-user programming

When it's really not about the turtles all the way down.

Course reflections

Online learning in CSE 143: Computer Programming II.

Programming the world

Design principles for the future of computing instruction.

From peer instruction to POGIL

Improving equity in CS education with guided lecture notes.

Data structures course transformation

Design principles for the intersection of theoretical and practical CS.

Office hours as a tool of oppression

A critical review of power and pedagogy in large-scale office hours.

Toward robust CS education

Equitable CS education in higher-ed: a 2-year retrospective on teaching to groups.

Contraction Hierarchies

Parallelism for efficient real-world route searching.

Just the Class

A Jekyll template for course websites.

You're spamming the autograder

A lesson in user-testing, expectations management, and course integration.

Sending mixed messages

Do as I say, not as I do.

On GPS Syndrome

The code is never the focal point.

Microeconomics of the faculty job search

An institution's most important resource is its people.

A Connector Course for Pre-service CS Teacher Development

Bootstrapping pre-service CS teacher training with CS0.

A Berkeley View of Teaching CS at Scale

The road to 27,000 student enrollments per year, and what lies ahead.

Formative feedback in intro CS

Deploying in-class paper quizzes: from 40 to 400 to 1,400.

Teaching faculty job search

A five year, non-traditional path into academia.

Near-Peer Student Mentors

Creating scalable learning experiences in large lecture courses.

Subgoals, Problem Solving Phases, and Sources of Knowledge

A complex mangle.

The medium is the message

Understanding what a computer is, and what it can do.

Teaching to groups

Advice for leading sections, and other thoughts from shadowing undergrad TAs.

How to Learn CS

High-level learning techniques for how to succeed in CS 1 courses like CS 61A.