Last Updated: 2016-12-13 Tue 19:56

Christopher Kauffman: Samples of CS Teaching Materials

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 211: Object-Oriented Programming

A second course on programming for CS majors and some other engineering disciplines. This course is preceded by CS 112: Introduction to Computer Programming which is taught in Python. It is meant to introduce the Java language, quickly review procedural programming techniques and cover object-oriented principles such as information hiding, inheritance, dynamic dispatch, exception handling, interface abstraction, and generics. It also touches on basic algorithm complexity for searching and sorting and introduces some basic data structures.

Syllabus

Java Jeopardy

The attached ZIP file contains a Java source file and a data file. Compile and run with the commands

> javac JavaJeopardy.java 
> java JavaJeopardy final.dat

It will display a GUI Java board which is used in class to facilitate a review game. Students are provided the code and data file after class to guide their review prior to midterms and finals.

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


Author: Chris Kauffman (kauffman@cs.gmu.edu)
Date: 2016-12-13 Tue 19:56