Teaching
Courses at Bucknell
Pages for every course and semester are at csci.courses.bucknell.edu; the links below go to each course's most recent page or schedule.
-
Operating Systems Design
The operating system (OS) stands between all user application programs and the limited hardware resources (from CPU time to I/O devices), and therefore is a key component in any computing system. Processes and threads, scheduling, synchronization, memory management and file systems, with hands-on systems programming.
-
Nand to Tetris
Build a complete computer from NAND gates up, through logic, a CPU and assembler, a virtual machine and compiler, and an operating system, then play games on it.
-
Digital Image Processing
Imaging is everywhere! In this course, we will cover broadly the acquisition, processing, and analysis of digital images, covering topics ranging from the human visual system, to image and video compression algorithms, to machine learning and neural nets for automatic image understanding. Using my open DIP in Python book.
-
Applied Machine Learning
The machine learning pipeline on real data: statistics and wrangling, principal components, frequent pattern mining, decision trees and neural networks, ensembles, clustering and regression, ending in a project.
-
Data Structures and Algorithms in Python
Computers are everywhere, and everywhere they are they deal with massive amounts of stuff (read: data)! Data Structures & Algorithms is about the efficient interaction with, and manipulation of, collections of stuff! From arrays and linked lists to stacks, queues, trees, heaps and hash tables, with recursion, sorting, searching and analysis of running time. Using Canning et al.'s textbook.
-
Computer Systems
How programs run on hardware: data representation, the processor, memory and I/O, Unix system programming in C and assembly, and an introduction to operating systems.
-
Computer Science & Engineering Senior Design
Seniors work with industry, community and faculty partners to build software for their clients.
Past courses
Archived course pages, by school. For most courses after 2009, only the course page and schedule were kept, so many links to lectures and assignments inside them no longer work.
George Mason University 2016
- INFS 612 Network Communications W '16
Washington and Lee University 2009–2014
- CS 101 Survey of Computer Science W '12
- CS 111 Fundamentals of Programming I F '13W '13F '11
- CS 112 Fundamentals of Programming II W '11F '10W '10F '09
- CS 210 Computer Organization W '14
- CS 321 Computer Networks W '12
- CS 340 Interactive Computer Graphics W '14W '11
- CS 341 Digital Image Processing W '13W '10
- CS 397 Techniques in Big Data F '14
Claremont McKenna College 2008–2009
University of North Carolina 2005–2007
- COMP 110 Introduction to Programming F '07
- COMP 14 Introduction to Programming S '05
- COMP 235 Images and Vision, guest lecture on contrast enhancement slides
- COMP 254 Image Analysis, guest lecture on Perona-Malik anisotropic diffusion slidesGaussian moviePerona-Malik movie