Last Updated: 2022-11-27 Sun 16:38

Christopher Kauffman: Samples of CS Teaching Materials

Table of Contents

UMN CSCI 2021: Machine Architecture and Organization

A sophomore-level course primarily for compute science majors, CSCI 2021 is preceded by the intro programming sequence (CS 1&2) and serves a variety of purposes. It introduces the C programming language and associated machine features such as pointers, memory addresses, and allocation of data in the stack and heap. Bit representations of integers, characters, and floating point numbers is discussed. Assembly programming in x86-64 is discussed in some detail. Processor and memory system internals are discussed and related to program performance. The course ends with some discussion of virtual memory and the linker/loader regime that allows for dynamical linking of programs.

Link to most recent offering: https://www-users.cse.umn.edu/~kauffman/2021/

Syllabus

Lecture Materials

Week Materials Topic
1 Slides Code Introduction, C Basics
2 Slides Code Pointers, Addresses, Allocation
3 Slides Code Binary Data/Ints
6 Slides Code Assembly Language Basics
10 Slides Code Processor Arch, Pipelining
11 Slides Code Memory, Cache-Aware Programming
14 Slides Code Virtual Memory, Paging

Assignments

Labs

Students work on weekly labs starting a 50-minute session led by teaching assistants. They may work in groups, are offered help, and may submit until the next lab. The emphasis is on skills building and practice to prepare for higher-stakes assignments like Projects and Exams.

Projects

Individual, large-scale projects usually lasting 8-13 days. Students apply what they have learned in labs and lecture in a practical setting.

Student Feedback and Evaluations

  • Midterm Feedback Survey Results collected in week 5 after the first exam. This is used to adjust course policies and practices for the remainder of the course.
  • Exit Survey Results are collected at the end of the course and used to adjust future offerings of the course. This survey asks for more tailored feedback than what is asked on the Official University evaluations.
  • Official UMN Student Rating of Teaching (SRTs) are collected at the end of each semester. This the linked doc is a sample from one section of CSCI 2021 offered in Fall 2021.

UMN CSCI 2041: Advanced Programming Principles

A sophomore-level course for computer science majors, CSCI 2041 serves as a 3rd programming course as it follows traditional CS 1/2 courses but introduces a variety of topics useful the modern practitioner. The course is primarily taught in OCaml but has occasionally been offered in Clojure. It is intended to teach about functional programming, type systems, persistent and immutable data, along with introducing the techniques to create new languages such as lexing and parsing. Some offerings cover proof techniques about programs and logic programming as well.

Link to most recent offering: https://www-users.cse.umn.edu/~kauffman/2041/

Syllabus

Lecture Materials

Week Materials Topic
2 Slides Code Basic Syntax and Definitions
3 Slides Code Lists and Recursion
4 Slides Code Tail Recursion
6 Slides Code Map / Reduce / Filter
9 Slides Code Modules and Functors
11 Slides Code Language Processing

Assignments

Labs

Students work on weekly labs starting a 50-minute session led by teaching assistants. They may work in groups, are offered help, and may submit until the next lab. The emphasis is on skills building and practice to prepare for higher-stakes assignments like Projects and Exams.

Programming Assignments

Individual, large-scale coding projects usually lasting 8-13 days. Students apply what they have learned in labs and lecture in a practical setting.

Student Feedback and Evaluations

  • Midterm Feedback Survey Results collected in week 5 after the first exam. This is used to adjust course policies and practices for the remainder of the course.
  • Exit Survey Results are collected at the end of the course and used to adjust future offerings of the course. This survey asks for more tailored feedback than what is asked on the Official University evaluations.
  • Official UMN Student Rating of Teaching (SRTs) are collected at the end of each semester. This the linked doc is a sample from one section of CSCI 2041 offered in Fall 2018.

UMN CSCI 4061: Introduction to Operation Systems

A senior-level course taken by computer science and computer engineering students. The class covers common external facing OS interfaces with UNIX as the primary example. Topics include process management and creation, inter-process communication and coordination, file system basics, linking and INodes, thread creation and management, and a brief introduction to sockets for network programming.

Link to most recent offering: https://www-users.cse.umn.edu/~kauffman/4061/

Syllabus

Lecture Materials

Week Materials Topic
2 Slides Code Programs and Processes
3 Slides Code Processes and Forking
8 Slides Code Signals
10 Slides Code General IPC Facilities
12 Slides Code Threads
14 Slides Code Network Programming

Assignments

Labs

Students work on weekly labs starting a 50-minute session led by teaching assistants. They may work in groups, are offered help, and may submit until the next lab. The emphasis is on skills building and practice to prepare for higher-stakes assignments like Projects and Exams.

Programming Assignments

Individual, large-scale projects usually lasting 8-13 days. Students apply what they have learned in labs and lecture in a practical setting.

Student Feedback and Evaluations

  • Midterm Feedback Survey Results collected in week 5 after the first exam. This is used to adjust course policies and practices for the remainder of the course.
  • Exit Survey Results are collected at the end of the course and used to adjust future offerings of the course. This survey asks for more tailored feedback than what is asked on the Official University evaluations.
  • Official UMN Student Rating of Teaching (SRTs) are collected at the end of each semester. This the linked doc is a sample from one section of CSCI 2021 offered in Fall 2021.

GMU CS 100: Principles of Computing

An introductory course for non-CS majors. Its goals are to educate students about basic computer concepts, programming, and the impacts that computing has had on society. It fulfills the GMU general education outcome for Information Technology.

Syllabus

Student Evaluations

CS 310: Data Structures

A third course in programming which covers basic data structures and algorithms using the Java language. Big-O complexity analysis is introduced early and applied to standard data structures including expandable arrays, linked lists, binary search trees, balanced BSTs such as AVL and Red-Black trees, hash tables, and binary heaps. A stated goal of the course is improve student programming capability on larger-scale programming projects.

Syllabus

Student Evaluations

CS 499: Parallel Computing

A special topics course on parallel computing intended primarily for juniors and seniors. Various aspects of parallel computation are covered including parallel machine architecture, memory issues, algorithm design patterns, and evaluation metrics for parallel programs. Assignments explore the practicalities of programming in distributed memory machines with MPI, shared memory machines with OpenMP and PThreads, and inter-process parallelization with Unix IPC mechanisms.

Syllabus

Lecture Slides

1 Slides Introduction, Course Mechanics
2 Slides Parallel Algorithm Design
3 Slides Distributed Memory Communication Patterns
4 Slides Communication Patterns
6 Slides Evaluation Metrics for Parallel Programs
8 Slides Unix Inter-process communication
9 Slides Shared Memory Architectures

Student Evaluations

GMU Teaching Excellence Portfolio

In the 2016-2017 academic year, I applied for and received George Mason University's Teaching Excellence Award. GMU has over 1,000 faculty members and, with support from my department, I was one of 8 winners of the annual, University-wide award. As part of the application process, I constructed a teaching portfolio with various materials and accounts of my teaching.

The winners of the award each year are listed here: GMU Teaching Excellenc Award Winners

My full portfolio is linked here: GMU Teaching Excellence Portfolio


Author: Chris Kauffman (kauffman@cs.gmu.edu)
Date: 2022-11-27 Sun 16:38