Screenshot of a list of faculty and TA for 6.192. It's only Arvind and me, respectively.

Is this list going to get any longer?

I recently accepted a position to TA for Constructive Computer Architecture (6.192) for Spring 2024.1 It would be my first semester as an MEng, so I’ll be expected to submit a thesis proposal by May as part of the MEng thesis component of the degree.

It’s typical for people who have their MEng funded partially or fully by RAships to align their thesis with the research they conduct for funding. Those types of projects often fit into the typical framework of incremental research, like pieces of projects that more senior researchers are directing. I think it’s generally the case that the MEng thesis follows the RA research, rather than vice-versa.

Since I’m not reliant on RA funding2, I have more flexibility on my choice of MEng project. That doesn’t mean I should just do anything, but I feel like I should take advantage of that flexibility to do a project that might not conventionally be funded given researchers’ budgets. Some people in my position take the chance to execute on a passion project.

And, because I’ll be taking quite a few classes throughout my MEng (at least 5 out of the 6 maximum3), I think it’s especially important that I find a thesis topic that I’d like to spend a significant amount of time on. The high amount of coursework I’ll have means I will have plenty of opportunity for career-relevant learning and I’ll need to ration my energy. It’ll be easier to muster up my remaining energy for an MEng project that I’m excited about.

The degree includes 12 units of thesis work per semester as an MEng, so spending three semesters would mean about 14 hours x 12 units x 3 semesters ≈ 500 hours of work. You could build quite an impressive project with 500 hours of work, between design, building, documenting, and testing. I’d like to spend that time on something I can be proud of.

One type of MEng project I find very attractive is the kind that is practical and has immediate pedagogical benefits. One prime example is Adam Hartz’s MEng project, which was CAT-SOOP, a learning management system that, a decade later, is now used by almost 20 MIT EECS classes4. Another example is Katy Kem’s project, Laboratory Assignments for Teaching Introductory Signal Processing Concepts, which is exactly the title and has use for teaching. The Usable Programming Group has a series of projects on programming education, several of which continue to be used in offerings of 6.102.

These are amazing projects that amplify the efforts of students. And most of them were built by and for MIT students, who (as we are all told) are the future. I think I’d like to do that sort of thing for my MEng project.

Preliminary Idea

A couple months ago, I wrote a Bluespec extension for VS Code. It’s being used by many current students in 6.191 as part of their code editing setup since almost every lab assignment in the class uses Minispec, which I cover with my extension. I like to think it’s being used by a few researchers as well. Next semester, I have no doubt that students will be coming into 6.192 with my extension already installed.

My current idea for an MEng project is to add fuller support for Bluespec in code editors by implementing the Language Server Protocol (LSP) for Bluespec. The idea is that adding this support will drastically increase the productivity of Bluespec students, researchers, and if or when they exist, those in industry.

My plan is to add all the typical bells and whistles from a modern language in a code editor, but eventually add more Bluespec-specific and hardware-specific functionality like annotations for scheduling, ports, or state-change. Already, many programming languages support the LSP, and it’s a growing expectation for modern programming languages. Just because the hardware industry is a little behind the times doesn’t mean we have to be.

I can slot these into my VS Code extension, but the LSP can be used by other editors like vim/neovim, Emacs, Atom5, and many others. I still anticipate most programmers in 2023 to be using VS Code. I don’t see another editor dethroning it for the near future, but the appearance of editor-agnosticism is a pleasant property of the LSP. If ever the mandate shifts, the new editor can still use the LSP.

One worry about the project is that it’s kind of a bet on Bluespec. Will it take off or not? The hardware industry seems kind of ossified around Verilog, SystemVerilog, and in some places VHDL, even despite the existence of shiny new HDLs like SpinalHDL and Chisel.

While I don’t know if Bluespec is the future, I do know that Bluespec is the present (at least at MIT). 6.191 was redesigned to use Minispec only a few years ago. 6.192, I hope, will stick around for as long as there is someone interested in teaching synthesizable computer architecture.

And I’m certain there is zero way Bluespec is taking off without the sort of mature programming language support that the LSP provides. And I’m not sure anyone but me is going to implement that LSP. I’m cautiously optimistic, but I think MIT can be a fount for Bluespec, especially if we continue to teach it consistently. So maybe it is a bet on Bluespec.

It’s more than likely that I will graduate and never use Bluespec again, but I don’t think it’s any more tragic than most MEng projects. At least my project would continue to be used as long as Bluespec and Minispec are used for classes and research. It feels more impactful (certainly more based) than most MEng theses.

Probably the biggest cost for the project is that the skills I’ll be gaining will be more pertinent to software development or programming languages than to computer architecture or hardware design. I think there’s value in being a generally well-rounded engineer, and I hope that the things I learn from TAing for 6.192 and taking all my other classes will cover any weak spots.

The Alternative

While I don’t currently rely on RA funding from a computer architecture lab, I could still select a project that has more direct relevance to the sort of work that I’d like to do. Something I was looking at when I was doing my processor project was the Riscy-OOO project led by Sizhuo Zhang. It’s a sophisticated multicore out-of-order processor written in Bluespec, and a worthy base for other projects.

Most of the people who worked on the Riscy-OOO project are no longer at MIT, but there have been some recent MEng projects that used it for research. My 6.192 TA last year wrote his MEng thesis on adding secure shared memory to the processor as a continuation of the MI6 project. Doing something similar would probably require me to self-lead to a similar degree as with an LSP project, but with the reward of gaining more practice with hardware design and computer architecture (albeit with the cost of using shoddy existing Bluespec infrastructure).

The rub is that if I focus my attention on a more explicitly hardware-related project, then the infrastructure would probably never be built. But I know that a project like implementing the LSP would make Bluespec projects, especially for large code-bases like Riscy-OOO or even the 6.192 class projects, much more tractable for the next person. The lack of editing infrastructure is a significant barrier to productivity for all users of Bluespec, whether student or researcher.

The infrastructure is something best done sooner rather than later. And if not by me, then who? Not to make myself out like a saint, but I feel like I’m in the exact right spot to implement the LSP, as someone who already wrote a basic VS Code extension for Bluespec and who is about to gain access to a bunch of potential test users in the form of 6.192 (and maybe 6.191) students, already accustomed to modern features from their other classes. It seems like exactly the thing a long-term-thinking TA at MIT should do.

Frankly, my impression is that most MEng projects don’t really have much direct relevance to the students’ future careers. I’d be proud enough leaving a project of value to the MIT and Bluespec communities. I’d just need to use my other experiences to get a job in hardware.

  1. Last semester it was two instructors and two TAs. Not sure how we’ll make it with one instructor and one TA. Maybe someone else will come aboard. 

  2. It’s still kind of up in the air how I’ll find funding for Fall 2024. 6.192 is typically only offered in the spring. I’ll probably either attempt to TA for 6.191 or seek RA funding from Arvind or one of his colleagues. I’m hoping that my project will be seen as worth it, or I’ll help more directly with theirs. 

  3. Some students took their graduate level classes or math electives during undergrad. I didn’t originally plan on MEnging when I was planning my undergrad classes, so I need to take all 4 of my AAGSes and 1 more math elective. 

  4. Of course it helps that Adam was a lecturer for one of the biggest classes in the school for almost as many years. 

  5. Whoever is still using Atom in 2023