2 README
This course is an accelerated introduction to college-level computer science. Our Anticipated Frequent Questions explains how you get into the course.
In this course, we’ll be using a programming language called Pyret, in which we will practice functional programming. (We don’t assume you know anything about either, and will teach you both from scratch.) We will actually use only a tiny sliver of Pyret, not exposing you—much as we’d love to!—to its many powerful features, because this isn’t a course about Pyret. Rather, it’s a course about software construction, which means: being able to design programs, and being able to translate designs into implementations. Designing software means making wise choices about data structures, algorithms, and program organization. Implementing means more than just writing code: it means making wise decisions about systems and interfaces.
Beating the Averages, Paul Graham
Teach Yourself Programming in Ten Years, Peter Norvig
How to Become a Hacker, Eric Raymond
The Peril of JavaSchools, Joel Spolsky
Scheming is Believing, Steve Yegge
Spartan doesn’t mean we won’t have fun! We will write pithy little programs as well as significant projects, and we’ll see how all these things can be done using just simple concepts. By engaging with this broad range of topics, you’ll get to understand the essence of important ideas of computer science.