picture of Michael Spear Michael Spear [CV]

Associate Professor
Computer Science and Engineering, Lehigh University
(610) 758-3285
spear@cse.lehigh.edu

Overview

I teach courses in two broad areas. The first is low-level computer systems topics, such as Operating Systems, Computer Architecture, and Programming Languages/Techniques (particularly parallel programming). At the undergraduate level, these courses typically involve a textbook (Tanenbaum's Operating Systems; Bryant and O'Hallaron's CS:APP; Herlihy and Shavit's Art of Multiprocessor Programming; McCool, Robison, and Reinders Structured Parallel Programming). The parallelism course employs six projects, involving C++/TBB for parallelism topics and java.util.concurrent for the concurrency topics. The OS and Architecture courses emphasize programming ability, along with concepts that are evaluated through a series of exams. At the graduate level, my operating systems course emphasizes reading and analyzing research papers (2-4 papers per week), along with low-level systems programming.

The second area in which I teach is mobile computing. Here, my focus is on the Anrdoid platform, with an introductory project in mobile gaming for first year (undeclared) engineering students, and a capstone-style course for seniors in advanced mobile application development. Source code for the undergraduate mobile gaming project is available here

Courses

Below is a listing of courses I have taught, or expect to be teaching in the near future.

  • CSE202 — Computer Architecture and Organization — Spring 2015, Spring 2014, Spring 2013
  • CSE350 — Special Topics in Computer Systems — Spring 2014
  • CSE375/CSE475 — Parallel Computing — Fall 2013, Fall 2011, Spring 2010
  • ENGR5/ENGR98 — Introduction to Engineering Practice (Computer Science / Computer Engineering Project) — Fall 2014, Fall 2013, Fall 2012, Fall 2011
  • CSE303 — Operating Systems — Fall 2012
  • CSE403 — Advanced Operating Systems — Spring 2012, Spring 2011
  • CSE398 — Xtreme Projects: Mobile Programming — Spring 2012
  • CSE398 — Large-Scale Software Development — Spring 2014
  • CSE201 — Computer Architecture — Fall 2009, Fall 2010

Unfortunately, most of the materials for these courses are only available through CourseSite. Please contact me if you seek additional information about syllabus, projects, or other aspects of these courses.

I have also supervised a number of undergraduate independent study courses, as well as several senior projects in Computer Science and Computer Engineering. Please contact me if you are interested in working together.