Stanford CS Education Library

This online library collects education CS material from Stanford courses and distributes them for free. Update 2006 For learning code concepts (Java strings, loops, arrays, ...), check out Nick's experimental server, where you can type in little code puzzles and get immediate feedback. If you think the CS Education Library is useful, please link to it at

Pointers and Memory

Binky Pointer Video picture from video A silly but memorable 3 minute animated video demonstrating the basic structure, techniques, and pitfalls of using pointers. There are separate versions of the video for C, Java, C++, Pascal, and Ada. There is also a more traditional companion text (below) that goes with the video, and a brief history of how the video was made.
Pointer Basics The companion text for the Binky video. Presents the same concepts and examples as the video, and includes study questions with solutions. Code is presented in C, Java, C++ and Pascal.
Pointers and Memory A 31 page explanation of everything you ever wanted to know about pointers and memory. Can be used as an introduction, or as review for people who mostly understand pointers. Mostly uses C, with some discussion of C++ and Java. The early sections introduce basic pointer concepts, while the later sections discuss more advanced topics such as reference pointers and dynamic arrays.

Lists and Trees

Linked List Basics A 26 page introduction to the techniques and code for building linked lists in C. Includes basic examples and sample problems with solutions. Provides a basic understanding of linked lists and pointer code.
Linked List Problems A quick review of linked list basics followed by 18 linked list problems with solutions. The problems range from beginner, to intermediate, to advanced -- an excellent source of pointer algorithm problems.
Binary Trees A 27 page introduction to binary trees. Introduces the basic concepts of binary trees, and then works through a series of practice problems with solution code in C/C++ and Java. Binary trees have an elegant recursive structure, so they make a good introduction to recursive pointer algorithms.
The Great Tree List Recursion Problem One of the neatest pointer/recursion problems you will ever see. This is an advanced problem that uses linked lists, binary trees, and recursion. Includes solution code in Java and C.


Essential Perl A quick 23 page introduction to the main features of the Perl language. Handy as an introduction or a quick reference.
Essential C A relatively quick, 45 page discussion of most of the practical aspects of programming in C. Explains types, variables, operators, functions, control constructs, arrays, pointers, strings, array/pointer trickery, and the standard library functions. The coverage is complete, but quick, so it is most appropriate for someone with some programming experience. (revised 4/2003)


Unix Programming Tools A 16 page introduction to the most common Unix tools and their usage in the compile-link-debug process. Introduces gcc, make, gdb, emacs, and the shell. There should be enough information here to allow someone with a little Unix experience to build and debug.


Stanford Tetris Project Complete programming materials for a tetris assignment, including a game playing AI. A runnable version is included, along with sufficient materials for people to attempt the project. Presented at the Nifty Assignments Panel at SIG-CSE 2001

Beta Materials

Much of the current materials existed earlier in rough form as handouts for Stanford CS courses. You can dig through some of those "rough" materials yourself at... Please send your comments to