English | Site Directory

Google Code University

CS Resources

Listed below are a set of resources to support CS teaching. This is not meant to be a comprehensive list, but instead a list of innovative resources that CS students, faculty and instructors might find useful.

Discrete Mathematics

Introductory Programming

Data Structures and Algorithms

Operating Systems, Concurrency

  • JS/UIX - A UN*X-like OS for standard web-browsers, written entirely in JavaScript (no plug-ins used). It comprises a virtual machine, shell, virtual file-system, process-management, and brings its own terminal with screen- and keyboard-mapping.
  • Simulators for Teaching Computer Science - Java-implemented simulators to illustrate processor scheduling, producer consumer synchronization, starving philosophers, fork-pipe, disk head scheduling, address translation and concurrent I/O
  • Nachos - An educational operating system simulator.
  • Xinu A small preemptive multi-threaded operating system for teaching advanced programming concepts such as Concurrent Processing, I/O, IPC and Client-Server Interaction.
  • Resources to support teaching of concurrent programming.

Distributed Systems

  • DAJ - An interactive, visual aid for studying distributed algorithms.

Automata and Formal Languages

Web Security

  • WebGoat - A deliberately insecure J2EE web application maintained by OWASP designed to teach web application security lessons. In each lesson, users must demonstrate their understanding of a security issue by exploiting a real vulnerability in the WebGoat application. For example, in one of the lessons the user must use SQL injection to steal fake credit card numbers. The application is a realistic teaching environment, providing users with hints and code to further explain the lesson.

Computer Graphics