Before becoming a lecturer at Stanford, I:
- Received a Bachelor’s Degree in Electrical and Computer Engineering, The Johns Hopkins University
- Have been a U.S. Naval Officer in the Cryptology / Information Warfare Community (currently a Commander (O5) in the Reserves, and Commanding Officer of NR Navy Information Operations Command, HI-Tacoma, Washington)
- Sailed out of San Diego on the USS CLEVELAND (LPD-7) and USS PELELIU (LHA-5), stopping in Hawaii, Singapore, Malaysia (Panang), Thailand (Phuket), Indonesia (Bali), Oman (Muscat), Bahrain, United Arab Emirates (Abu Dhabi and Dubai), Kuwait, and Australia (Bunbury, Darwin, and Sydney)
- Lived for two years in Gerringong, Australia with the Navy Personal Exchange Program
- Sailed as crew in the Sydney to Hobart ocean sailboat race
- Received a Master’s in Education from Harvard University, in secondary school teaching
- Traveled and wrote for Let’s Go Ireland, 2003
- Taught physics and computer science at Brookline High School (2002-04, 2005-08) in Brookline, MA and Pacific Collegiate School (2004-05) in Santa Cruz, CA
- Was head sailing instructor at Kollegewidgwok Sailing Club, in Blue Hill Maine (summer 2003)
- Wrote a shareware program called iWebSites
- Ran in the Boston Marathon (2007) and the Marine Corps Marathon(2007) and competed in the (crazy) FirmMan Half-Ironman Triathlon(2007).
I received my PhD in Computer Engineering from the University of Virginia, where I:
- Studied VLSI, Solid State Devices, Probability and Stochastic Systems, Embedded Computing, Compilers, Operating Systems, Computer Architecture, Computer Networking, and Parallel Computing, and Heterogeneous Computing.
- Wrote a little Java Applet to demonstrate how a Kogge-Stone adder works.
- Designed, with Marisabel Guevara, designed a Fault Tolerant, Real-Time Reconfigurable Adder.
- Wrote a bunch of papers.
- Updated the Wikipedia page on Kogge-Stone Adders
- Presented a poster on Contention-Aware Scheduling of Parallel Code for Heterogeneous Systems in HotPar 2010.
- Worked at AMD during the summer of 2010, which culminated in a paper in GPGPU-4 titled Analyzing Program Flow within a Many-Kernel OpenCL Application.
- Taught 4th and 5th grade students parallel programming. Luther Tychonievich and I created a new programming language (EcoSim), and we had a blast teaching the students about parallel programming concepts.
- Taught 7th and 8th grade students how to write fundamental programs in Python, Scheme, Java and C.
- Taught CS/ECE 3330, Computer Architecture, Fall 2011.
- Ran in the Charlottesville 10-Miler (2008, 2009, 2010) and the Charlottesville Marathon (2010).
After getting my PhD, I
- Spent a year in Djibouti, Africa as the Information Operations Chief for the Combined Joint Task Force, Horn of Africa.
- Was the Commanding Officer of NR Navy Information Operations Command, Tacoma, WA.
- Was a lecturer at Tufts University in the computer science department, where I taught Introduction to Computer Science, Data Structures, Advanced Computer Architecture, and Wearable Devices.
- Hacked my Espresso Machine onto the Internet, first with a Raspberry Pi and later with a WeMos ESP8266 and a custom PCB I designed and fabricated from OSH Park.
- Created a printer from a 1960s Smith Corona Typewriter.
At Stanford, I
- Have taught many courses in the introductory CS curriculum, including CS106A, CS106B, CS106X, CS107, CS107e, CS110, CS208e, and CS298.
- Have facilitated many “Birds of a Feather” presentations at SIGCSE on teaching track faculty.
- Have co-written a paper with Chris Piech on BlueBook, a computerized testing program that we have used before and since the COVID-19 outbreak.
- Have written a book, titled, Your First Year Teaching Computer Science, which is geared towards new CS instructors who are just joining the community.
- Have worked (Summer 2019, and part-time since then) at Facebook as a software engineer in the Artificial Intelligence Infrastructure group.
- Created another typewriter printer project with an IBM Wheelwriter typewriter, which involved a lot of reverse-engineering of electronic protocols.