Teaching

Computer science, taught hands-on

I teach mainly in computer systems: computer organization, operating systems, networks, and security. I am also passionate about interdisciplinary courses on computers and society.

This semester

Fall 2026

Approach

Since joining Bucknell in 2003, I have taught 24 different courses and created or significantly revamped 14 of them. They include core and elective courses in computer science as well as interdisciplinary courses: Integrated Perspectives (UNIV 200), a Foundation Seminar (FOUN 098), and three international editions of ENGR 290.

My teaching philosophy is based on student-centric pedagogies: rather than lecture at students, I prefer to create opportunities for them to grapple directly with the material we study.

In my teaching, I seize every opportunity to explore the intersection of applied ethics, moral philosophy, sci-fi literature, and international education. Three of my courses have been taught “on the road” as ENGR 290 Engineering in a Global and Societal Context: in Brazil (2010), Italy (2015), and Italy and France (2024).

Most taught

Semesters in which each course appeared, Fall 2003 to Fall 2026. Labs and individual studies not counted.

Operating Systems Design17
Life, Computers, and Everything7
Computer Organization6
Computer Networks6
Research Methods5
Computers and Society4
Computer and Network Security4
Computer Systems3
All semesters
2026–27

Fall 2026

2025–26

Fall 2025

Spring 2026

2024–25

Fall 2024

Spring 2025

2023–24

Fall 2023 · sabbatical

  • CSCI 278-03Individual Study in Computer Science

Spring 2024

2022–23

Fall 2022

Spring 2023

2021–22

Fall 2021

2020–21

Fall 2020

  • CSCI 315-01Operating Systems Design
2019–20

Fall 2019

  • CSCI 315-02Operating Systems Design

Spring 2020

  • CSCI 245-01Life, Computers, and Everything
  • UNIV 200-10Time/Machine
2018–19

Fall 2018

  • CSCI 315-01Operating Systems Design

Spring 2019

  • CSCI 245-01Life, Computers, and Everything
  • UNIV 200-10Time/Machine
2017–18

Fall 2017 · sabbatical

  • No courses

Spring 2018

  • CSCI 245-01Life, Computers, and Everything
  • CSCI 240-01/02Computers and Society (2 sections)
  • CSCI 206L-61/62Computer Organization and Programming Lab
2016–17

Fall 2016

  • CSCI 315-01/02Operating Systems Design (2 sections)
  • CSCI 315L-60/61Operating Systems Design Lab

Spring 2017

  • CSCI 245-01Life, Computers, and Everything
  • CSCI 378-01Individual Study in Computer Science
  • UNIV 200-10Time/Machine
2015–16

Fall 2015

  • CSCI 315-01/02Operating Systems Design (2 sections)
  • CSCI 315L-60/61Operating Systems Design Lab

Spring 2016

  • CSCI 245-01Life, Computers, and Everything
  • UNIV 200-08Flights of Computing Fancy
2014–15

Fall 2014

  • CSCI 315-01/02Operating Systems Design (2 sections)
  • CSCI 315L-61Operating Systems Design Lab
  • CSCI 475Senior Design I
  • CSCI 378-03Individual Study

Spring 2015

  • CSCI 206Computer Organization and Programming
  • CSCI 206LComputer Organization and Programming Lab
  • CSCI 476Senior Design II
  • CSCI 378Individual Study
2013–14

Fall 2013

  • CSCI 315-01Operating Systems Design
  • CSCI 315L-60/61Operating Systems Design Lab
  • CSCI 475Senior Design I

Spring 2014

  • CSCI 206Computer Organization and Programming
  • CSCI 206LComputer Organization and Programming Lab
  • CSCI 476Senior Design II
2012–13

Fall 2012

  • CSCI 362Computer and Network Security
  • CSCI 475Senior Design I
  • CSCI 378Independent Study: Simulation

Spring 2013

  • CSCI 315-01/02Operating Systems Design (2 sections)
  • CSCI 315L-60Operating Systems Design Lab
  • CSCI 476Senior Design II
  • CSCI 378Independent Study: Simulation
  • CSCI 376Honors Thesis
2011–12

Fall 2011

  • CSCI 206Computer Organization and Programming
  • CSCI 206LComputer Organization and Programming Lab

Spring 2012

  • CSCI 315-01Operating Systems Design
  • CSCI 315L-60/61Operating Systems Design Lab
  • CSCI 363Computer Networks
  • CSCI 363L-60Computer Networks Lab
  • CSCI 378Independent Study
2010–11

Fall 2010 · sabbatical

  • No courses

Spring 2011

  • CSCI 315Operating Systems Design
  • CSCI 315LOperating Systems Design Lab
  • CSCI 362Computer and Network Security
2009–10

Fall 2009

  • CSCI 475Senior Design I
  • ENGR 100Exploring Engineering

Spring 2010

  • CSCI 476Senior Design II
  • CSCI 363Computer Networks
  • CSCI 363LComputer Networks Lab
2008–09

Fall 2008

  • CSCI 362Computer and Network Security
  • ENGR 100Exploring Engineering

Spring 2009

  • ENGR 139Technical Written and Oral Communication
  • CSCI 363Computer Networks
  • CSCI 363LComputer Networks Lab
2007–08

Fall 2007

  • CSCI 362Computer and Network Security
  • CSCI 203Introduction to Computer Science I
  • CSCI 203LIntroduction to Computer Science I Lab

Spring 2008

  • CSCI 363Computer Networks
  • CSCI 363LComputer Networks Lab
  • CSCI 240Computers and Society
  • CSCI 203LIntroduction to Computer Science I Lab
2006–07

Fall 2006 · leave

  • No courses

Spring 2007

  • CSCI 206Computer Organization and Programming
  • CSCI 206LComputer Organization and Programming Lab
  • CSCI 363Computer Networks
  • CSCI 363LComputer Networks Lab
2005–06

Fall 2005

  • CSCI 203Introduction to Computer Science I
  • CSCI 203LIntroduction to Computer Science I Lab
  • CSCI 206Computer Organization and Programming
  • CSCI 206LComputer Organization and Programming Lab

Spring 2006

  • CSCI 240Computers and Society
  • CSCI 379Fundamentals of Computer Security
2004–05

Fall 2004

  • CSCI 204Introduction to Computer Science II (lab)
  • CSCI 311Data Structures
  • CSCI 379Fundamentals of Computer Security

Spring 2005

  • CSCI 203Introduction to Computer Science I
  • CSCI 363Computer Networks
  • CSCI 363LComputer Networks Lab
2003–04

Fall 2003

  • CSCI 204Introduction to Computer Science II
  • CSCI 311Data Structures

Spring 2004

  • CSCI 315Operating Systems
  • CSCI 203Introduction to Computer Science I (lab)
  • CSCI 379Fundamentals of Computer Security
Dartmouth
  • CS 37Computer Architecture, summers 2001 and 2002