This page lists all of the classes (in reverse chronological order) that I have taught at CU Boulder since my arrival in Fall 1998.

In general, I have taught the following classes:

CSCI 3308: Software Methods and Tools

This class provides instruction on basic software techniques and tools to give a student a firm foundation in software engineering. Topics include Fred Brooks' The Mythical Man Month, the Unix Shell, Shell Programming, Pattern Matching, Installation and Deployment, Build Management, Versioning, Testing, Debugging, Profiling, and XML/XSLT.

CSCI 4448/5448: Object-Oriented Analysis and Design (new number for Fall 2009)

This class covers object-oriented analysis and design. Topics include requirements and design techniques, objects, classes, UML, design patterns, and object-oriented design methods.

CSCI 4448/6448: Object-Oriented Analysis and Design (prior to Fall 2009) 

This class covers object-oriented analysis and design. Topics include requirements and design techniques, objects, classes, UML, design patterns, and object-oriented design methods.

CSCI 4830/7000: Data Engineering

This course investigates the software engineering issues involved with creating data-intensive software systems. It examines how to support the entire data life cycle including collection, storage, analysis, reporting, and visualization and what tools and techniques are available for each of these stages. Students help create some of the content for this class by spiking on various technologies (either individually or in teams) and reporting back on what they learned to the class as a whole. Students work in teams to develop a prototype system that can support the entire data life cycle for a self-selected application domain.

CSCI 5828: Foundations of Software Engineering

This class covers a wide range of software engineering topics, focusing on formal software engineering techniques and the theoretical foundations for the software engineering field. A few lectures will also deal with “hot topics”. The course assumes that the student has had an introductory course in software engineering, although a brief review of the field is presented at the beginning of the class.

CSCI 7818: Topics in Software Engineering

These seminars cover a wide range of software engineering topics:

According to the numbers below, I have taught roughly 797 undergraduates and 877 graduate students since 1998.

Spring 2018

  • CSCI 5828: Foundations of Software Engineering

Fall 2016

  • CSCI 5828: Foundations of Software Engineering

Fall 2015

  • CSCI 5828: Foundations of Software Engineering

Summer 2015: CAETE Library

  • CSCI 5828: Foundations of Software Engineering (2 graduate students)
  • CSCI 5448: Object-Oriented Analysis and Design (7 graduate students)

Spring 2015

  • CSCI 4830/7000: Data Engineering (26 undergraduates, 11 graduate students)
  • CSCI 5448: Object-Oriented Analysis and Design (5 graduate students)

Fall 2014

  • CSCI 5828: Foundations of Software Engineering (46 graduate students)

Fall 2012

  • CSCI 4448/5448: Object-Oriented Analysis and Design (48 undergraduates, 50 graduate students)

Spring 2012

  • CSCI 5828: Foundations of Software Engineering (49 graduate students)

Fall 2011

  • CSCI 4448/5448: Object-Oriented Analysis and Design (53 undergraduates, 40 graduate students)

Spring 2011

  • CSCI 4448/5448: Object-Oriented Analysis and Design (55 undergraduates, 39 graduate students)

Summer 2010: CAETE Library

  • CSCI 4448/5448: Object-Oriented Analysis and Design (4 graduate students)

Spring 2010

  • CSCI 5828: Foundations of Software Engineering (32 graduate students)

Fall 2009

  • CSCI 4448/5448: Object-Oriented Analysis and Design (42 undergraduates, 32 graduate students)

Spring 2009

  • CSCI 5828: Foundations of Software Engineering (35 graduate students)

Fall 2008

  • CSCI 4448/6448: Object-Oriented Analysis and Design (30 undergraduates, 16 graduate students)
  • CSCI 7818: Web Services (3 undergraduates, 11 graduate students)

Spring 2008

  • CSCI 5828: Foundations of Software Engineering (34 graduate students)

Fall 2007

  • CSCI 4448/6448: Object-Oriented Analysis and Design (31 undergraduates, 23 graduate students)

Spring 2007

  • CSCI 5828: Foundations of Software Engineering (40 graduate students)

Fall 2006

  • CSCI 3308: Software Methods and Tools (38 undergraduates)
  • CSCI 7818: Web Services (2 undergraduates; 8 graduate students)

Spring 2006

  • On sabbatical leave... did not teach at CU
  • At Aarhus, I co-taught (with Niels Olof Bouvin) a class on Hypertext to approximately 40 undergrads and I also taught a seminar on Web services to a group of 9 graduate students.

Fall 2005

  • On sabbatical leave... did not teach

Spring 2005

  • CSCI 4448/6448: Object Oriented Analysis and Design (28 undergradutes and 38 graduate students)

Fall 2004

  • CSCI 3308: Software Methods and Tools (37 Undergraduates)

Spring 2004

  • Took parental leave... did not teach

Fall 2003

  • CSCI 3308: Software Methods and Tools (59 Undergraduates)

Spring 2003

  • CSCI 6448: Object Oriented Analysis and Design (43 Graduate Students)

Fall 2002

  • CSCI 3308: Software Methods and Tools (78 Undergraduates)

Spring 2002

  • CSCI 6448: Object Oriented Analysis and Design (46 Graduate Students)

Fall 2001

  • CSCI 3308: Software Methods and Tools (81 Undergraduates)
  • CSCI 7818: Topics in Software Engineering: Web Technologies (15 Graduate Students)

Spring 2001

Fall 2000

  • CSCI 3308: Software Methods and Tools (51 Undergraduates)
  • CSCI 7818: Topics in Software Engineering: XML Techniques, Tools, Standards (12 Graduate Students)

Spring 2000

  • CSCI 5828: Foundations of Software Engineering (48 Graduate Students)

Fall 1999

  • CSCI 7818: Topics in Software Engineering: Open Hypermedia (9 Graduate Students)

Spring 1999

  • CSCI 5828: Foundations of Software Engineering (68 Graduate Students)

Fall 1998

  • CSCI 6448: Object Oriented Analysis and Design (47 Graduate Students)

Winter 1998

  • Introduction to Software Engineering at UC Irvine (94 Undergraduates)