Skip navigation.

Teaching

Winter 2012: Introduction to Computer Organization (COMP 2691)

I will be teaching COMP 2691 "Introduction to Computer
Organization" in Winter Quarter. This course is required for
majors in the BS degree program.

The course description lists the topics: Assembly language
programming - simple operations, addressing modes, looping,
arrays, subprograms, logic design-multiplexers,
decoders/encoders, flip-flops, counters, shifters, sequential
network design.

The class will meet 10 - 11:50 on Monday and Wednesday.

Fall 2011: COMP 1771 - Introduction to Computer Science, Honors

This course is part of the Introduction to Computer Science track intended for students with prior exposure to programming through AP courses or other activities. It is roughly equivalent to a combination of COMP 1671 and COMP 1672 and can be substituted for COMP 1672 in prerequisites. This course covers basic programming in Java, object oriented (OO) programming, exceptions, streams and file I/O, recursion, generics and basic data structures and algorithms.

The course website is available through DU's Blackboard System: http://blackboard.du.edu for students enrolled in the class.

Spring 2011: COMP 3701/4701: Topics in Computer Science: Secure Software

Many security problems in software are born when software developers
make poor implementation decisions or unwittingly introduce bugs in
their code. In this course, we will cover many of the classical flaws
in systems that can lead to security problems, including: buffer
overruns, format string problems, overflows, exception issues, race
conditions, etc. We will also cover some webapp-specific topics such
as SQL injection attacks, and cross-site scripting (XSS) attacks.

We will use the book "24 Deadly Sins of Software Security: Programming
Flaws and How to Fix Them" by Howard, LeBlanc, and Viega as the basis
for the course and will look at code and example programs implemented
in the major programming languages.

Classes will be a mix of lecture, in-class exercises and homeworks
will be focused around implementing attacks on flawed code.

The class will meet Monday / Wednesday, 10:00 - 11:50 AM.

Winter 2011: COMP 2691 Introduction to Computer Organization

I will be teaching COMP 2691 "Introduction to Computer
Organization" in Winter Quarter. This course is required for
majors in the BS degree program.

The course description lists the topics: Assembly language
programming - simple operations, addressing modes, looping,
arrays, subprograms, logic design-multiplexers,
decoders/encoders, flip-flops, counters, shifters, sequential
network design.

The class will meet 9 - 10:50 on Monday and Wednesday.

Winter 2011: Advanced Topics in Distributed Systems

Note: This course is being taught at Lockheed-Martin Corporation and is not available to on-campus students.

Ever wonder how BitTorrent, Gmail, or Chord work? Have a burning
desire to deploy your software across the globe using PlanetLab? If
so, this course if for you!

The course will cover major topics in distributed systems including:
system architectures, processes, communication, naming,
synchronization, consistency and replication, fault tolerance, and
security. We will read articles about many real systems, and
implement select parts of their functionality.

Classes will be a mix of lecture, in-class exercises and programming
assignments.

Email me with questions: Matt Rutherford

Spring 2010: Special Topics in Software Engineering: Resource Constrained Systems

Number: COMP 4705
Title: Special Topics in Software Engineering: Resource Constrained Systems
Meeting time: Thursday, 5 PM - 8:40 PM
Textbook: Real Time UML, Third Edition, by Bruce Powel Douglass ISBN-10: 0321160762, ISBN-13: 978-0321160768

In this course we will study software engineering techniques that are applicable to resource constrained systems. "Resource constrained systems" is a catch-all phrase for systems ranging from simple embedded micro-controller systems, real-time systems, some general-purpose software systems operating in unique environments (e.g., Linux systems on robots and unmanned vehicles), and some modern platforms like iPhone and Android. For the platforms considered, we will discuss the hardware at a high level, focusing on how the hardware manifests in the software, and any specific software considerations that must be made for the hardware platform. We will then discuss the software stack that is available, and study techniques for performing requirements analysis and specification, high- and low-level design, implementation and testing. The reading will be a mix of textbook chapters and some scholarly articles. The assignments will be focused on creative uses of the techniques we discuss in class.

Note: This course is only available to Lockheed-Martin off campus students.

Winter 2010: Special Topics in Distributed and Networked Systems

This course will cover major topics in distributed systems engineering including: system architectures, processes, communication, naming, synchronization, consistency and replication, fault tolerance, and security. We will also look at examples of distributed object-based systems, distributed file systems, distributed web-based systems and distributed coordination-based systems. Classes will be a mix of lecture, in-class exercises, and student presentations.

The course website is available through DU's Blackboard System: http://blackboard.du.edu for students enrolled in the class.

Note: This course is only available to Northrop-Grumman off-site students.

Fall 2009: Introduction to Computer Science, Honors

This course is part of the Introduction to Computer Science track intended for students with prior exposure to programming through AP courses or other activities. It is roughly equivalent to a combination of COMP 1671 and COMP 1672 and can be substituted for COMP 1672 in prerequisites. This course covers basic programming in Java, object oriented (OO) programming, exceptions, streams and file I/O, recursion, generics and basic data structures and algorithms.

The course website is available through DU's Blackboard System: http://blackboard.du.edu for students enrolled in the class.

Spring 2009: Topics in Distributed Systems Engineering

Course Description:

This course will cover major topics in distributed systems engineering including: system architectures, processes, communication, naming, synchronization, consistency and replication, fault tolerance, and security. We will also look at examples of distributed object-based systems, distributed file systems, distributed web-based systems and distributed coordination-based systems. Classes will be a mix of lecture, in-class exercises, and student presentations.

Reading Assignments: The weekly course reading assignments will include chapters from the textbook and several short academic papers about distributed systems related to the topics of the week.

Homework Assignments: Each week, students can choose one of two homework assignments: programming or non-programming. The programming assignments will involve the implementation of simple systems and parts of systems in their language / platform of choice. Non-programming assignments will have more writing, research and non-programming problems to work.

Student Presentations: Each week (except the first), there will be several student presentations centered around the academic papers assigned for reading. For each presentation, students will be asked to prepare a handful of slides, discuss the major features of the systems being described and relate them to the course topics.

Please see the class web site for more information:

http://mjrutherford.org/teaching/2009/spring/COMP4704

Winter 2009: Advanced Software Engineering: Software Testing

This course will provide in-depth coverage of the major topics in software testing. The emphasis will be on the hands-on software testing activity: how to go about executing a software system to uncover faults in the underlying implementation and gain confidence in the quality of the end product. We will discuss all aspects of test adequacy criteria (used to determine when a set of test cases is "good enough"), both white-box and black-box. Test oracles may also be covered. There will be some discussion of how software testing fits in to a broader software quality effort. The class will culminate in a project, the subject of which will be some software that you work on or have an interest in testing.

Please see the class web page for more information:

http://mjrutherford.org/teaching/2009/winter/COMP3705

Fall 2008: Special Topics in Systems: Distributed Stream Processing

This is a research seminar in systems centered around implementing a distributed video conferencing system using a SOA-like architecture and GPU programming. Students and faculty will be reading and presenting research papers related to the project and students will work in teams to design, implement and test a distributed video conferencing system.

Specific topics that will be covered:

* Multistream Pipelines
* Service Oriented Architecture and the Enterprise Message Bus
* CUDA (GPU) Programming
* Real-time Data Streaming
* Distributed System Design
* Testing and Evaluating Distributed Systems

Please see the class web pages for more information:

http://grothoff.org/christian/teaching/2008/4704/

Fall 2008: Introduction to Computer Science, Honors

This course is part of the Introduction to Computer Science track intended for students with prior exposure to programming through AP courses or other activities. It is roughly equivalent to a combination of COMP 1671 and COMP 1672 and can be substituted for COMP 1672 in prerequisites. This course covers basic programming in Java, object oriented (OO) programming, exceptions, streams and file I/O, recursion, generics and basic data structures and algorithms.

Please see the course web page for more information:

http://mjrutherford.org/teaching/2008/fall/COMP1771/