Archive for the ‘Teaching’ Category

Android Software Development Workshop

Posted on the June 4th, 2009 under Android,Talks,Teaching by

In June of 2009, I traveled with a delegation of MIT professors to visit Quanta Corporation in Taiwan.   My job was to deliver a presentation about Google’s Android as a software development platform.

Having been an avid developer for the Android platform from its very early days, and having demonstrated a lot of enthusiasm for Google’s Android mobile platform,  I was recommended for this job by Professor Hal Abelson.

The trip to Taiwan with the delegation of ten or so Computer Science professors from CSAIL , and a handful of other graduate students, was an amazing experience.  I was impressed by whatever parts of Quanta’s main campus I was able to see, as well as the organization and hospitality of our hosts.

Since then, Quanta has showed off an Android-based Smartbook, and I can only hope that some parts of my workshop were useful in its fruition.  Regardless, I think the slide deck came together well, and I am happy to share it with you.

Take a look at the workshop slides below.

Android Lecture 1

Android Lecture 2

Android Lecture 3

View Fullscreen

CS101: Introduction to Computer Science

Posted on the May 15th, 2001 under Teaching by

In the Spring semester of 2001, I lectured an introductory course in Computer Science at Boston University.  The class was a part of BU’s “Core Curriculum,” meaning that students from all majors may choose to take this class to fulfill the science requirement.   The class size was about 80 people, with a healthy representation of students in social sciences, communication, and art.  Another section of this class was also taught during this semester by Tom Florio, one of my graduate student friends from the CS department.

I wish I still had the course website with all the materials I prepared for the class, but I no longer have them and will have to make do with an overview.  I appreciated the freedom to develop my our curriculum and homework assignments.  It included:  history and overview of “modern” computing architectures, computer hardware and software, advanced Microsoft Office techniques, computer networks and the Internet architecture, website design and HTML, algorithms and programs, and programming in Tcl.  The last part, Tcl programming, was a rather tough nut to crack for some in the class with no prior software development experience, but for some people it was a rather eye-opening experience.

Teaching fellow: Computer Networks

Posted on the March 10th, 2000 under Teaching by

I welcomed this opportunity to help teach my favorite subject.  As most teaching assistant-type jobs, this was mostly behind-the-scenes, but I did hold semiweekly office hours and help many students, and was happy to fill in for Prof. Byers for a few lectures (lectured about CIDR as I recall).

One notable thing I did here had to do with grading the final project, which was an application-level implementation of a  TCP-like reliable stream protocol. We provided the code for the receiver and the protocol specification; the students had to create the code for the sender.  The protocols were then used by a client/server application, and packets were sent through a simulated network with various kinds of problems: various patterns of packet loss and reordering.

Evaluation of the project submissions was tremendously difficult, because of the wild differences in implementation and wide ranges of troubles in the submitted code. So I wrote an extensive protocol verifier and project evaluator, which was then tested to be rock-solid correct and even able to handle infinite loops and segfaults in the programs being evaluated. Then I let it loose on the directory of student submissions — and voila, two days later the students received auto-generated reports with grades and test breakdowns, and I got an auto-generated spreadsheet with the numbers. It was awesome.

Teaching fellow: Computer Graphics

Posted on the March 11th, 1998 under Teaching by

I guess I did well enough as a student in the Computer Graphics course to be asked to help teach it next year.  Responsibilities consisted of designing fair and objective grading criteria and then applying them while actually grading the students’ programming assignments.