On this page:
Software Development

Software Development

Software Development

From the first day of the semester forward we expect students (you) to visit this page once per 24 hours.

“To be any kind of professional means being willing to tell the client a truth he doesn’t want to hear.” – Holman W. Jenkins, Jr.

“I’m still friends with folks I worked with decades ago, many who would beat me up in meetings, ripping apart my arguments with what seemed like an ice pick. Still, they made me better.” – Andy Kessler

“It is on the syllabus.”


Tuesday, September 27th, 2022 9:08:29pm

Section MF-915

    Presenters: Jose Manzur, David Yan

    Head Reader: Akshay Dupuguntla

    Assistant Reader: Jamie Lin

    Secretary: Alec Norrie


    Presenters: Garrett Michiels, Ross Curcio

    Head Reader: Nuocheng Wang

    Assistant Reader: Kyle Ednie

    Secretary: Luke Po

Section MF-1030

    Presenters: Max Leroux, Xun Xu

    Head Reader: Caroline Zhu

    Assistant Reader: Jason Cheung

    Secretary: Jacob Monticello


    Presenters: Vedant Rautela, Carlos Gimeno

    Head Reader: Diego Valdivia Cox

    Assistant Reader: Zach O'Brien

    Secretary: Qishen Pang

Section BL-1030

    Presenters: Kelli Therrien, Ty Marshall

    Head Reader: Dylan Burati

    Assistant Reader: Jaron Cui

    Secretary: Jack Whitten


    Presenters: Can Ivit, Luka Jovanovic

    Head Reader: Thomas Mactaggart

    Assistant Reader: Charles Williams

    Secretary: Lillianna Gund

Section BL-135

    Presenters: Dylan Huang, Brian Gay

    Head Reader: Hussain Khalil

    Assistant Reader: David Mitre

    Secretary: Simar Gursimar


    Presenters: Chengyi Kuang, Zekai Shen

    Head Reader: Jason Jn Baptiste

    Assistant Reader: Logan Morneault

    Secretary: Shashwat Patel


Tuesday, September 27th, 2022 10:03:47am

Someone asked me yesterday how I learned to write (in English, as an immigrant). My answer addressed the “negative feedback” part of an improvement cycle, not the “positive energy” part.

Reading literature and books on writing is the essence of the second half of my answer. Reading good literature helps you understand writing somewhat; see Hemingway’s description of his torturous procedures of writing individual paragraphs (in his Paris novels).

Reading books on writing is a good start, which is why I list Strunk and White on the Readings page. An alternative is

Bugs in Writing

which, as the title suggests, originates in computer science. Which books are helpful depends on your situation and goals.


Saturday, September 24th, 2022 6:55:31pm

The transformation of textual information into internal data is known as parsing, a technical problem that spawned an entire research area. Parsing is so complex, it should never be used in an introductory course but to this day, many such courses assign programs that read text, analyze it, and react to it—without proper support. Proper coverage is offered in Compilers and Theory, and these two course will help you design parsing programs systematically.

At first glance, JSON is a simple notation for writing down information in terms of Booleans, Strings, Numbers, arrays of JSON expressions, and objects of JSON expressions. But, as it turns out, turning JSON information into internal data is a minefield; indeed, no two JSON parsers seem to accept the same, non-simple JSON inputs.

You should keep this fact in mind for your upcoming co-op and future employment.

In case you need an example of the problems that such complexity – due to simple-looking notation – can cause, read up on how JSON reading can bring down Windows.


Friday, September 23rd, 2022 9:12:53am

A Diversion On Wednesday I briefly addressed the difference between arbitrarily large and infinite in my section—mentioning transfinite ordinals such as ω and ε0 (which is used to prove the theoretical totality of a Java-like type system).

In response Ben pointed me to a fun video that explains this idea at an intuitive level. Enjoy!


Monday, September 19th, 2022 8:00:00am

Please read Egoless Programming. It is the only required reading text this semester.


Thursday, September 15th, 2022 6:43:54am

A student came to my office hours last night with questions about the teaching philosophy behind the course and the core curriculum. For anyone who’s interested in this question on how to design a core programming curriculum, please visit

Developing Developers


Tuesday, September 13th, 2022 6:01:40pm

B — The Very Basics explicitly requests that you deliver solutions on the master branch of your git repository. Only 16 out of 70 of Sam’s “reports” followed these instructions. If this were a company and Sam a manager with 70 “reports,” this would simply be unacceptable.

Sam asked me not to deduct points. He worked around this problem.


Tuesday, August 9th, 2022 2:19:59pm

Welcome to Software Development Fall 2022.

See Abstract for a concise course description.

The quote at the top of the page characterizes how the instructors will lead this course as professionals. They firmly embrace the idea that if you pay a lot of money for education, the instructors have an obligation to deliver as much value as possible. The course is an intensive experience.

If you choose to take the course, familiarize yourself with the web site as quickly as possible. For the first couple of weeks, TAHBPL will grow every couple of days; after that, Project Milestones will evolve every week. Any out-of-the-ordinary changes will be announced on this front page.

Since most of you are too young to remember the massive crashes of the tech industry that your instructors have experienced, here is a collection of recent headlines.


Every year the course comes with a different theme song, usually from someone who recently died. (Yes your lead instructor is that old.) Well, Tom Petty died some years back but the song’s title is still a good theme.

I won't back down I Won’t Back Down.

Alternatively, watch a tribute version from Fenway Park.