I'm a lecturer in the Stanford CS department. I'm teaching Stanford CS106A Winter and Spring this year.
Here is Nick's Python Reference we're using for CS106A.
Curent research: extend online code practice technology to build a CS106A with code exercises woven throughout lecture. The online-code-practice format extends nicely to let people outside Stanford use the materials. Also working on CS101 at Stanford, and in MOOC form: CS101 Online Class.
The Unofficial U2F FAQ - for fun I've written an FAQ about U2F security log-in tokens which are a neat little technology.
Classes I taught most recently:
- Mozilla Persona A/B Test -- A neat little example of an A/B UI test
- How a Hard Drive Works -- video showing a taken-apart hard drive working. Did you ever wonder what those sounds were when you hit the Save menu?
- Mr. Histogram free program to make histograms (of interest to teachers)
- Radiation and Geiger Counter Experiments
Radiation and Geiger Counters in the home
MrGeiger software and USB connection
- IntroComputing.org -- draft of CS101 materials for re-use by teachers at large. Used for cs4hs 2012 at Stanford. This includes text and exercises, not the videos.
- LEDs Without a Resistor Experiment -- a world gone mad!
- cs101-class.org -- I've re-worked my Stanford CS101 live class into an online form with videos and live exercises and everything on Coursera. This is an introductory CS course intended for people with zero prior compuer experience.
- New class at Stanford: CS101 -- CS101 teaches the essential ideas of Computer Science for a zero-prior-experience audience. CS101 has a "lab" feel, using small live coding exercises every day in class to teach the material. All of the CS101 materials are web-enabled, and the hope is to scale it up to use in other environments. CS101 is pilot for the national Computing Principles research program, experimenting with ways to reach a larger audience for computer science fundamentals.
- Android Programming Class -- quick introduction to the basics of android programming
- Python and programming-langauge materials for CS107:
- I'm very pleased to announce
Google's Python Class by myself, produced courtesy of Google. This is a complete online class
on basic Python
with about 8 hours of lecture paired up with 5 real programming assignments complete with data files, solutions,
and written support materials, and it's all free and Creative Commons licensed. Check it out!
- codingbat.com is my main part-time
project these days -- an online code-practice tool, where you can play
with little sections of code in the browser, now in both Java and Python
(used to be known as JavaBat).
Ok smarties, see if you can solve the
Java makeBricks() problem in 1
try (not counting compile errors of course)
(or python make_bricks).
The xyzMiddle problem is kind
of fun. There's tons of problems there, spanning a huge range in difficulty.
- Other projects:
- The World's Most Geeky Geocache (and video) --
a ridiculous hardware hacking project using the arduino microcontroller to make a geocache. You
can go visit this project on campus.
Local Devices -- program to hunt your local network for devices with
web interfaces like routers, web cameras, and tivos. I just banged out this code in a
day to solve a problem I had, but it works great.
- To help waste time playing the greatest board game ever invented, Settlers of Catan,
here's a free settlers dice application that rolls the dice for you and graphs it all
- An analysis of the dice odds in Settlers, for those who are truly addicted to the game
- Here's the Mortgage Maker Mac app
I wrote years ago that does the math for mortgage
- CS108 "Object Oriented
Systems" which is all about
applying Java and OOP to large projects
"Internet Technologies" which is a
programmer's tour of the combination of tcp/ip,
sockets, HTTP, HTML, CGI -- hasn't been taught for a few years.
- The Nifty Assignments
archive. Run as part of the ACM CSE, this is a neat library
of great assignments gathered from instructors all over.
Each year, there's a Nifty Assignments session I run at
the SIGCSE conference. Applications etc. are done in the Summer.
- Theora Soccer codec comparision --
concrete comparison of the open theora video codec vs. mpeg-4.
Also a chance to play with Html-5 video tag.
- The Greatest
Pointer Recursion Problem of All Time
- The CS Library project
which edits together CS education materials. There are some
extremely popular documents here on linked lists, binary trees, etc..
- The Binky Pointer Video
the infamous Claymation animated short about pointers.
- JavaDoc Fast
are you tired of hunting through Java Docs the lame old way? Try my super
Stanford Phone: (650) 725-4727
Office: Gates 190 -- first floor in the South facing "B" wing.
Back in the day, I lived in the Big Happy Home in Menlo Park, and now all that is left is ...
Spring Fling - Dairy King - Booted
I've put in some more 108 type quotes now that I'm teaching it for the umpteenth time.
"Committees can criticize, but they cannot create."
(Ogilvy on Advertising)
"Sleep optional but not recommended."
"Logic is a system whereby one may go wrong with confidence."
"We don't have time to stop for gas--
we're already late."
-Old software project planning proverb via Mike Cleron
"Experience is what you get when you didn't get what you wanted."
"Plan to throw one away."
- Fred Brooks
"The two most important tools an architect has are the eraser in the drawing room and the sledge hammer on the construction site."
- Frank Lloyd Wright
"Hardware is just software that's hard to edit."
"This time for sure."
- Common phrase among computer programmers and used-car salespeople.