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:


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!


I received some exciting news last week: Tufts University has offered me a lecturing position in the Computer Science Department, beginning next January.  I am grateful that they kept my name in the hat during my unexpected one-year Navy mobilization to Djibouti, Africa (which will end in October).  Special thanks to Carla Brodley and to the rest of the faculty who had a part to play in that decision.

In other news, along with my regular duties as the CJTF-HOA J39 (Information Operations), I am currently teaching a physical science course for the University of Maryland, University College Europe at Camp Lemonnier, Djibouti.  Videos and slideshows are available here: http://ecosimulation.com/chrisgregg/nsci100/.