Fall 2020

This past summer I taught CS106A, the introductory programming course at Stanford. I always love teaching in the summer because Stanford admits a number of high school students into their summer program, and many of them take the introductory courses. I often miss teaching high school students, and it is great to have their energy during the summer courses (this is despite the fact that courses have been online due to COVID-19 these past few quarters).

In the Fall, I taught CS106B with the incredible Julie Zelenski, and with two outstanding Course Assistants, Nick Bowman and Chase Davis. We also, as always, had a great crew of Section Leaders, as well.

Over the Winter Break, I finished up my book on teaching CS called Your First Year Teaching Computer Science.

Fall 2018 Teaching / Book

During the Fall 2018 Quarter I will be teaching CS 107e, Computer Systems from the Ground Up, and CS 208e, Great Ideas in Computer Science. Please email me directly if you have any questions about either course.

I am in the process of finishing up a book called, Your First Year Teaching Computer Science, which is a guide to teaching computer science for new instructors.

Teaching, Winter 2017

I will be teaching CS-106X at Stanford this quarter. The course is an accelerated follow-on to CS 106a in the Stanford CS curriculum, will be taught in C++, and focuses on basic data structures and programming problem solving techniques.

log bases

I was sitting in on Ben Hescott’s awesome Theory of Computation class today. He was discussing logarithms with the class, and they were discussing the constant-difference between logarithms. Ben wrote down the following on the board:

log_conversion

I’m not the kind of person to remember that (although I might derive it), but I never want to take the time to do that if I’m in the middle of a calculation.

Here’s how I remember this mid-calculation: your calculator only has one (maybe two) log buttons on it, and I never remember which base the button uses. So, the way I use that button is that I just know to always divide by the log of the base I want, no matter what.

If I want to calculate log21024, I just click the log button, then immediately divide by log(2). Even if the base of the log button is 2, it will just divide by log22, which just equals 1, so I might have wasted time, but I know I have the correct answer.

Wearable Devices (COMP 50WD)

This semester, two students from the Senior Capstone course at Tufts (Kate Wasynczuk and Raewyn Duvall) have begun teaching a wearable devices class which has already been a great deal of fun (hopefully for the students, as well!).

The course is geared towards non-engineer CS majors who have zero (or very little) electronics background, and we have designed the course to give the students exposure with basic digital electronics (Ohm’s law, anyone?), Arduino programming, integration with mobile devices (iOS and Android), and PCB design to include fabrication of a PCB with surface mount (!) components.

Yes, this is an ambitious project! Until they bought their course electronics kits (more on that below), most of our students had never used a multimeter or breadboard before, and only a few had done any Arduino programming. However, as Tufts students they are zealous learners, and all have been working hard to learn the concepts.

Our embedded device of choice is the Light Blue Bean, which is a tiny Arduino-compatible Low Energy Bluetooth board with a built in 3-color LED, accelerometer, and temperature sensor. The Bean has a robust SDK for iOS/MacOSX and Android programming, and it is a very nice way for students to start to learn about small devices with lots of capabilities.

The kit we put together for the students has plenty of fun electronic components, and we have a number of other sensors available to the students, as well (including WiFi boards, OLED screens, MP3 player chips, etc.).

I also mentioned surface mount device (SMD) components and PCB design — as far as I know, we are one of very few undergraduate classes in the country that are using SMD components in class, and all of our students have been cautioned to update their eyeglass prescriptions before we get too far into the soldering. In terms of design, we are utilizing the Fritzing breadboard-to-PCB design software, and we have been using OSH Park to fabricate the devices. The students also have access to the Tufts Center for Engineering Education Outreach maker spaces around campus, and the students’ wearables may be housed in fun 3D-printed or laser cut enclosures.

The first half of the course is dedicated to learning the myriad of technologies for wearable devices, and the second half of the course will be dedicated to student-designed wearable projects. The projects must include the use of an Arduino (e.g., the Bean), a PCB with at least one sensor and SMD components, and some sort of input/output device (e.g., screen, iOS device).

We can’t wait to see the final projects!