Talks
- Perspectives on Programming (PDF)
- Talking to the Machine (PDF — 2006 version, PDF — 2007 version)
- Slides on Quantum Programming: Postscript, PDF
- Introduction to Abstraction, Design Patterns, and Types. Powerpoint slides.
- Here are the slides of a talk entitled Computer Science, Logic, and Religion (Islam) I gave at the Science and Spirit Association.
Indiana University Courses
- Introductory Courses:
- C211/A591: Introduction to Computer Science (Fall 2000, Fall 2004, Fall 2005, Fall 2012)
- H211: Introduction to Computer Science – Honors ( Fall 2000, Fall 2002,Fall 2016, Fall 2017, Fall 2018)
- C212/A592: Introduction to Software Systems ( Fall 2006, Spring 2007,Fall 2007, Spring 2008, Fall 2008, Fall 2009, Spring 2010 )
- H241: Discrete Mathematics – Honors (Spring 2014, Fall 2015, Spring 2016)
- C311/A596: Programming Languages (Fall 2002)
- C343/A594: Data Structures (Spring 2015, Spring 2019, Spring 2020)
- H343: Data Structures – Honors (Fall 2015)
- Upper Division Undergraduate / First Year Graduate Courses
- P423/523: Compilers (Spring 2006)
- B461: Database Concepts (Fall 2019).
- B490: Advanced Functional Programming (Fall 2010)
- B490: Quantum Programming (Spring 2020)
- Graduate Courses:
- B522: Programming Language Foundations ( Spring 2001, Spring 2002,Spring 2003, Spring 2005, Fall 2008, Spring 2011, Spring 2012, Spring 2013, Spring 2014, Spring 2017, Spring 2018)
- B599: Teaching in Computer Science ( Fall 2007, Fall 2008))
- B622: Programming Language Type Systems (Spring 2003)
- Reading group on types and concurrency (Fall 2004)
- B629: Topics in Programming Languages: Semantics/Security of Web Services (Spring 2005)
- B629: Topics in Programming Languages: Reversible and Quantum Computing (Fall 2005, Fall 2006, Spring 2011)
- B629: Topics in Programming Languages: Dependently typed programming in Agda (Fall 2012)
- B629: Topics in Programming Languages: Homotopy Type Theory (Fall 2013, Spring 2016)
University of Oregon Courses
- Introductory Courses:
- CIS 210: Introduction to Computer Science I (Fall 1996)
- CIS 211: Introduction to Computer Science II ( Winter 1998, Spring 1999, Spring 2000)
- I have developed the first version of the test used by incoming students for self-evaluation.
- Upper Division Undergraduate / First Year Graduate Courses
- CIS 410/510: Hardware Specification and Verification (Fall 1997)
- CIS 410/510: The Java Virtual Machine (Spring 1998)
- CIS 425: Programming Languages (Fall 1999)
- CIS 461/561: Introduction to Compilers ( Winter 1996, Winter 1997, Fall 1998)
- Graduate Courses and seminars:
- CIS 607: Category Theory (Spring 1997)
- CIS 607: Denotational Semantics (Fall 1998)
- CIS 607: Computability and Complexity from a Programming Perspective(Winter 1998)
- CIS 607: Continuation-Passing Style; Logic (Fall 1999)
- CIS 607: Topics in Programming Languages (Spring 1999)
- CIS 624: Semantics of Programming Languages ( Spring 1996, Spring 1997, Spring 1998, Spring 1999, Spring 2000)