May 15th, 2008
- Hey there, CS107ers! Graded midterms are now available, and they're all sitting in a box right outside my Gates 192 office. SCPD student exams are being mailed back, and you should expect to see them sometime on Friday or Monday, depending on how far you are from sunny California.
- The average on the exam was 29 out of 40, as was the median. That's a little bit below the 80% I normally shoot for, so the raw scores will be curved up so that the median maps to an 80, and the highest grade (39.5/40) is mapped to a 100.
April 29rd, 2008
- Two things!
- First: I promised to post the Powerpoint slides I used during last Wednesday's lecture to illustrate how recursive function call and return works at the assembly code level. Here are those slides. Feel free to send us email if you have any questions.
-
Second: A coworker of mine at Facebook is giving a technology talk
this Friday, May 2nd, at noon in Hewlett 201. I saw the same talk
this past January, just after I started working there, and I remember
thinking that it would be a fantastic talk for CS107 students.
If you come on Friday, we'll not only feed you pizza and
beersoda, but you'll also see how Facebook manages to store billions of photos for its users, and grants super quick access to each and every one of them. I promise, promise, promise you'll understand why it's possible to write such a system only after you've mastered all things malloc and memmove. Promize! Here's the flyer. Please RSVP by visiting http://acm.stanford.edu so we know how much pizza to order.
April 23rd, 2008
- Gooooood morning, everyone!
- Just this week, we're going to hold a second discussion section on Friday. Ryan Park will be leading a discussion section in Skilling 191 from 2:15 until 3:05. I understand the time may not work all that well for some of you, but it's being videotaped and posted to the SCPD web site just like lectures and the normal discussion sections are.
- Why are we having a section section? I'm concerned that next Tuesday's discussion section will come too late in the assignment cycle for it to be of much use to you on Assignment 4. You'll benefit from seeing examples where you store dynamically allocated C strings inside these vectors and hashsets you've been building for Assignment 3, because that's easily what makes Assignment 4 (which goes out today) one of the more challenging assignments of the quarter.
April 12th, 2008
- I came across some old Powerpoint slides that you may find useful. This one works through a memory trace like one I did earlier this week. And this one works through an implementation of a generic stack container, which I'll be working through during all of Monday's lecture. Download them and give them a whirl if you'd like.
April 9th, 2008
- Hey there, CS107 folk!
- Assignment 1 falls due this coming Sunday at midnight. Now that we've held our UNIX discussion section, you have enough information to move forward and crank out Assignment 1 code. I'll say it again that Assignment 1 doesn't require you write very much code at all. It's more about getting acclimated to the UNIX environment and pressing through the struggles you face when adapting to a new programming environment. Our CS107 TAs are in Sweet Hall tonight, tomorrow night, and again on Sunday night to answer all of your UNIX questions.
- Assignment 2 is your first real programming assignment, and it leverages off of all the memory tricks we're learning in lecture right now. After today's lecture, you'll be outfitted to tackle Assignment 2, which is a good amount of codingin line with the amount of code required of a final CS106B assignment. Assignment 2 is due next Thursday evening just before midnight, and I'll make it a point to hand out all new assignments on a Wednesday and make them due the following Thursday evening, at least until the May 7th midterm.
- SCPD students! If you get a moment, please send me an email and introduce yourself, so I know you're out there.
April 2nd, 2008
- Welcome to CS107!!! There's not much to do between now and 11 a.m., 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++ and Scheme. 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. And we'll treat Scheme as a compact, higher-order language that emphasizes recursion and abstraction. There's not much to worry about yet, though we already know the final exam is Monday, June 9th at 8:30 a.m. For those holding a conflict with that, you can instead take the exam at 3:30 p.m. that same day. And if absolutely necessary, you can take the final exam remotely at 8:30 a.m. and fax it back in by noon. The takeaway point here is that all CS107 students take my final exam the same day. I'm a very flexible person when it comes to deadlines, but I'm inflexible on this one thing.
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 Computer Architecture: Take II
- 14 Section Handout [Solution]
- 15 Computer Architecture: Take III
- 16 Computer Architecture: Take IV
- 17 Assignment 4: RSS News Feed Aggregation
- 18 Section Handout [Solution]
- 19 Assignment 5: Raw Memory [Solution]
- 20 Section Handout [Solution]
- 21 CS107 Practice Midterm [Solution]
- 22 Thread Package Docs
- 23 Concurrency Examples
- 24 Section Handout [Solution]
- 25 CS107 Midterm [Solution]
- 26 More Concurrency
- 27 Assignment 6: RSS News Feed: Take II
- 28 Section Handout [Solution]
- 29 Introduction to Scheme
- 30 Scheme Functions
Assignment FAQs
CS107 Resources
Tutorials from the TAs
- Matt Spitz's Remote Desktop Tutorial
- Aman's Assorted Anecdotes and Advice
- Aman Kumar's purify Tutorial
CS107 From Past Quarters
Other Resources