Contents

What Do Great Software Developers Know?

The key to delivering a successful software project is to hire top notch programmers. So, how do we educate top notch programmers?

To start, we wish to find out what excellent developers know and to make this information known. The second step is to think about tools and languages that embody new programming ideas and support important idioms and programming practices. The study of tools and languages itself helps sharpen software development skills and may itself be developed into a means of educating programmers.

In this course, students will get a chance to hear from leaders in the industry and to interact with them. Topics discussed in the course include latest security hacks, reverse engineering, scripting language design, programming tools for finding errors, large operating system development, open-source software, large-scale web applications, etc. Papers may be handed out before or after talks, and students will have a chance to discuss what they learn among themselves as well.

As a final project, students will research a software programming aspect of their choice. Select final reports will be included in a new on-line resource on programming.

Recent Website Updates

  • (May 30): Added writeups for Seth Hallem
  • (May 29): Posted information for Rob Pike's talk

Current List of Speakers

Schedule Summary

Specific dates for many speakers are still being arranged. Listed here are confirmed speaker dates. This list will be updated as more dates are finalized.

Date Speaker Topic
April 4 Monica and Martin Class Overview
April 9 Alex Sotirov (Writeup) security exploits
April 11 Junfeng Yang (Writeup) automatic bug-finding
April 16 Saman Amarasinghe (Writeup) defending against security exploits
April 18 Luiz André Barroso (Writeup) watts, power, and multi-processing
April 23 Class discussion
April 25 Mike Burrows (Writeup) concurrency
April 30 Greg Kroah-Hartman (Writeup) How open-source software breaks all the rules you learned in college
May 2 Bertrand Serlet "I'll talk about some of the fundamental aspects of designing large computing systems (like Apple's Mac OS X)."
May 7 Amitabh Srivastava (Writeup) Beyond Algorithms: Developing Software at Scale
May 14 Joshua Schachter (Writeup) TBA
May 16 David Heinemeier Hansson (Writeup) TBA (scripting)
May 21 Jeff Dean (Writeup) Lessons from Building Large Scale Systems
May 23 Seth Hallem (Writeup) How do we start to attack the problem of broken software?
May 30 Thomas Sha Are we any closer to answering the question, "how to design for the Web?
June 4 Rob Pike History of the Sawzall project (with lessons about real-world software development).


NOTE: Make sure to check the Readings and Speaker Information page for biographic information for individual speakers and reading materials related to specific talks and lectures.

Course Logistics

Staff

The best way to contact the course staff is by email: cs343-spr0607-staff [at] lists.stanford.edu

Time and Location

  • Mondays and Wednesdays 11:00am-12:15pm, April 4th-June 6th, 2007
  • Location: Gates Room B12

Mailing Lists

All students officially enrolled in the course through Axess will automatically be included on the cs343-spr0607-students [at] lists.stanford.edu mailing list. Those not enrolled in the class can receive class announcements by subscribing to the cs343-spr0607-guests mailing list.

Class Newsgroup

There is a class newsgroup, su.class.cs343, that can be used by members of the class to converse with each other. All course announcements will be put on to the class website. The news group is a good place to ask questions of other students, etc.

Class Materials

Last modified June 16, 2007 8:40 pm / Skin by Kevin Hughes
MediaWiki