CS106X: Programming Abstractions in C++

Winter 2018

Announcements:

Week of March 18th

[March 18st] The awesome Hemanth and your equally awesome section leaders judt finished grading your Week 10 exams, and
you can visit GradeScope to see how things went. I've updated the Handouts
page with PDFs of the original exam and the solution handout,
which contains not only my own answers, but the criteria we used to grade.

Week of February 26th

[March 1st] Tomorrow's lecture will be co-led by two Stanford professors: Gill Bejerano
and Mykel Kochenderfer. Professor Bejerano works at the intersection of computer science, bioinformatics,
and medicine, and Mykel Kochenderfer (who is a professor in Aero/Astro with strong ties to the CS department) develops algorithms, numerical methods,
and artificial intelligence techniques to solves problems in air traffic control, self-driving cars, and unmanned spacecraft.

[February 28th] Midterm II will take place March 12th at 1:30 PM, in 200-305.

Week of February 19th

[February 22nd] I have two Stanford CS professors coming to speak tomorrow about their own research.
Michael Bernstein (who was a Stanford undergrad and CS106 section leader some 15 years ago) will
speak about his HCI research about trolling
and how to motivate people to behave better online. Next up: Phil Levis, who
will speak about his interest in distributed graphical systems. I've included
links to two relevant papers, though each professor will speak more broadly about their work and de-emphasize the complexities of
HCI and systems research that require more advanced study.

[February 21st] I've decided to move the second midterm from Friday, March 9th to Monday, March 12th.
We'll still hold the exam during our normal lecture time, but I'm pressing it back a day to better mesh with the due date of the
final assignment. It also grants me the opportunity to invite a few more professors to give guest lectures on the 9th,
since Friday seems to be the best day for most professors to come and speak.

Week of February 12th

[February 15th] I received an email from Phil Levis (who will very likely come in to guest lecture one of these
next few Fridays), and he said this: "Quinn Dunki is visiting Stanford this Friday to give the inaugural lab64 talk on
engineering and making. Pat Hanrahan came across her blog when developing CS107E and looking for relevant materials; we were both
awestruck at her projects. For example, she decided that since Steve Wozniak had designed the original Apple in his garage, she
could too, and spent the next four years building a fully operational computer, named Veronica, from scratch. The CS107E keyboard
assignment, for example, is based on her blog post about how to hack a USB keyboard to revert to PS/2 mode. She’s giving a talk
about making at 4PM on Friday in Packard 101. I recommend you all attend!"

[February 12th] As I mentioned in lecture today, I'm extending the deadline for Assignment 5 until Friday at 11:59pm.
And to be fair to those who could have met the original Wednesday deadline and submitted quality work, if you submit by Wednesday
and get at least a √+ in both grading categories, I will bump both your functionality and style grades up by one
bucket (e.g. √+ -> +, + -> ++).

Week of February 5th

[February 5th] I received an email about a panel next Tuesday, February 13th, from
noon until 1:30pm, and I was asked to pass information about it along to my students.
The panel will focus on the use of technology to hold governments accountable for their actions
for human rights violations and war crimes. More information (and a request to RSVP) can be found
right here.

Week of January 29th

[February 3rd] I've gone ahead and posted two optional problems: one that requires fluency in
breadth first search, and a second
that requires fluency with recursive backtracking and memoization.
The first two students to solve the first problem and the first two students to solve the second problem will be invited
to join the section leaders and me for dinner out in Palo Alto somewhere hip and yummy. Understand, of course, that these
are completely optional.

[February 3rd] Justin Johnson gave an awesome lecture on deep learning and style transfer yesterday, and he's graciously shared
his lecture slides, which can be viewed right here.

[February 1st] I'm delighted to confirm that Justin Johnson, a Stanford CS PhD student working for CS Professor
Fei-Fei Li, will be giving a talk tomorrow at 1:30pm in our normal lecture room. His talk concerns this amazing
application of deep learning to infer structure from one image, apply it to a second, and rerender that second image
in the style of the first. Restated, work he's done can help repaint a Keith Haring as Chagall or Picasso might have.
Justin is interviewing for professorships right how, but he's making the time to come through tomorrow to present
his work, and to present it in such a way that current CS106X students will be able to understand it.

[February 1st] Girls Teaching Girls to Code is a program where
Stanford women teach and inspire Bay Area high school girls to explore Computer Science and Engineering.
Students learn coding basics, build exciting projects, and develop strong relationships with mentors in the field.
Their sixth annual Code Camp is slated for April 21st, 2018, and they're are currently accepting
applications for Stanford women to be mentors for Code Camp, where they will be working in small groups to
lead exploratory workshops on topics including NLP, web design, graphics, and robotics. They are holding an
information session on Friday, February 2nd from 5:00pm-6:00pm at the Women's Community
Center (with boba!), where you can learn more about it.

Week of January 22nd

Assignment 2 is out and due this Wednesday. I decided before the course even began to make all
assignments due at 11:59pm (instead of 5:00pm as it's been in previous quarters), and published
the wrong time on the Assignment 2 handout that was distributed in class last Wednesday.
(I've since updated the PDF online.)

Because you're all taking CS106X right now, you're all qualified to be section leaders for
CS106A next quarter. If you're at all interested in section leading, check out this
information page and the
application form.
Little known fact: Lecturer Jerry was a section leader in 1994 and 1995.

Note that this Friday, we'll shift gears a big and bring in a guest lecturer - this week it'll
be Professor Mehran Sahami - to speak about some of his prior research, and to the extent possible
he'll frame as much of his research in terms of the types of material you're learning right now.

Beginning this Wednesday night (after I've had the opportunity to mention this in lecture), we'll
be moving all evening office hours to Lathrop Tech Lounge. Several students have mentioned the LaIR
is too chaotic a place to meet up, and Lathrop Tech Lounge is in comparison relatively chill.

Finally! CS106X Wonder Student Victor Lin was the first student to submit a custom grammar file, which
parodies a movie called The Room, which is widely recognizes as one of the worst movies ever made.
You can download his grammar file by clicking right here.

Week of January 8th

If you're here, I assume you're taking (or at least considering) CS106X
this quarter. I'm more or less set to fire up on Monday, January 8th
at 1:30pm, and look forward to meeting all of you and having a great quarter together!

Between now and then, do a few things for little ol' me:

Register for the course on Axess if you haven't already.
I'm expecting there to be about 40 students in the class this quarter, but I'd like an accurate enrollment
figure sooner than later so that I can hire additional section leaders if necessary.

Hop over to Piazza and sign up for the class forum as soon
as you've committed to taking the class. We'll be relying on Piazza for structured questions where students,
section leaders, and I can all formally collaborate to make sure your questions about all things CS106X are answered.

Install the development environment as soon as possible, so that you can get started on Assignment 1 as soon
as it's published on Wednesday. Visit the CS106X Software
page and install QT Creator. The installation process takes upwards of 90 minutes, although some 85 of those
minutes is just spent waiting for files to be downloaded and copied to your hard drive.

Finally, confirm that you're able to take each of my two midterms without drama. The first midterm
is scheduled for Friday, February 9th from 1:30-2:50PM, and the second is scheduled for
Friday, March 9thMonday, March 12th from 1:30-2:50PM. I don't require lecture attendance, but my strong preference
is that you take the midterm during the normally scheduled times. If you can't, please email me as soon as
possible.

Course Description

Intensive version of 106B for students with a strong programming
background interested in a rigorous treatment of the topics at an
accelerated pace. Additional advanced material and more challenging
projects. Where possible, assignments will be based on CS department
research.