October 8th, 2008
- I came across some old Powerpoint slides that you may find useful. This one works through a memory trace like those I did early last week. And this one works through the implementation of a generic stack container, which I more or less covered this past Monday during lecture.
September 24th, 2008
- A few announcements that were sent out in an email today: Discussion sections are officially Fridays at 4:15 p.m., and will always be held in Gates B03. The first discussion section will be this Friday, September 26th. We'll discuss Unix to the extent that you're able to get started on Assignment 1, which goes out today. All discussion sections, including this Friday's, are filmed and available online. Our TAs will begin holding office hours this Sunday evening in the Terman Computing Cluster. The actual office hour roster is still being determined, but once we've finalized them, we'll update the CS107 web site to include link to an office hours page (the one currently there is outdated, so you can ignore it until you hear from me again.) We typically have office hours during the evenings, Sunday through Thursday. Assignments, at least for the first half of the quarter, will be due on Wednesday evenings. Your first assignment goes out today, and is due a week from this evening. The assignment is more about learning Unix than it is about C or C++, so expect to struggle not so much with the programming problem, but with Unix itself. Again, we'll cover the basics of Unix development during this Friday's discussion section. Some SCPD students have been asking about assignment submission and exams. All students--both remote and on-campus--submit their programs electronically from one of the on-campus UNIX machines. Most students connect to one of the Stanford machines (pod.stanford.edu, myth.stanford.edu, bramble.stanford.edu, etc.) using a command called ssh to code and ultimately submit a working solution. SCPD students aren't required to come to campus for the exams, but it's recommended if at all possible. Those unable to take the exam on site are able to take the exam remotely and email me the completed exam when done. I'll provide more detail as the midterm approaches.
September 20th, 2008
- Welcome to CS107!!! There's not much to do between now and Monday morning, except to get psyched for an awesome quarter of programming languages and coding. I expect that all of you have taken either CS106B/X, or you've taught yourself enough C++ that things like pointers, linked lists, hashing, binary trees, function pointers, and dynamic memory allocation are all familiar. We spend the first four weeks discussing the C programming language and how it's as close to assembly language programming as you can get without dealing with exposed hardware. Once you've come to understand the memory model backing all C programs, we spend time learning other higher-level languages to see how larger abstractions are supported and how it insulates us from anything even remotely hardware-related. At the very least we'll study C++, Scheme, and Python. We'll view C++ as a born-again C, where the implementation of C was extended to support object orientation, templates, and pass-by-references. We'll treat Scheme as a compact, higher-order language that emphasizes functional programming, recursion, and abstraction. And we study Python as an example of a modern, interpreted, object-oriented language that's wildly popular in the Web 2.0 community and beyond. One thing to note: The midterm is scheduled for Wednesday, October 29th at 7:00 p.m., and the final exam is Thursday, December 11th at 8:30 a.m. Because I schedule the midterm outside of class, I don't have a problem if you need to take the exam at some other time, except that I require that you take the exam sometime on Tuesday night or Wednesday during the day. However, as of this quarter, the CS department has adopted the policy that we do not offer alternate final exams, so all on-campus students need to take the final exam on December 11th at 8:30 a.m.
Handouts
- 01 CS107 Course Information
- 02 CS107 Course Syllabus
- 03 Introducing The STL
- 04 Assignment 1: RSG
- 05 Unix Basics
- 06 Computer Architecture
- 07 Arrays: The Full Story
- 08 Unix Development
- 09 Assignment 2: Six Degrees
- 10 Section Handout [Solution]
- 11 Assignment 3: vector
- 12 Computer Architecture: Take I
- 13 Section Handout [Solution]
- 14 Simple Code Generation
Assignment FAQs
CS107 Resources
Tutorials from the TAs
- Matt Spitz's Remote UNIX Tutorial [Mac/PC]
- Aman's Assorted Anecdotes and Advice
- Aman's purify Tutorial
CS107 From Past Quarters
Other Resources