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
javabat.com
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
http://cslibrary.stanford.edu/
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.
Languages
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
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.
Tetris
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
nick.parlante@cs.stanford.edu