ECE 4/599: Modern Memory Systems

(Please first read the formal syllabus on Canvas.)

This is an undergraduate/graduate level, research-intensive course in computer systems, with a focus on techniques and technologies that enable today’s high-performance memory systems.

Communication

We will use Discord for course communication, and GitHub for online paper and lesson discussions. You can find the Discord server sign-up link in a Canvas announcement.

Class Sessions

Check the schedule for each day of class. Class sections will typically (though not always) involve a first part where I lecture, and a second part where you present papers and we all discuss them.

You are expected to do the relevant readings before class so that everyone can participate.

Work You’ll Be Doing

Paper Reading & Discussion

Most of our in-class time will be spent discussing research papers. When we read a paper, you will need to participate in online and in person.

If you are the paper leader

Everyone must be a paper leader at least once.

If you are in the presentation group

Everyone must take on each of these roles at least once.

Everyone

Participate in the online and in-class discussions. Once the paper leader has created the discussion thread, give your thoughts on the paper. This does not need to be long, just a few senetences is okay. You can also respond to others’ posts, and this counts as well.

Research Project

You will do a systems implementation research project that will involve a significant amount of systems building and coding. This can be any open-ended and open-source project you choose that is related to memory systems. This could involve OS, compiler, hardware, and programming language work. The final product is a blog post, your code, and a presentation.

You can either work individually or in groups with up to 2-3 people.

Proposal

You must first submit a project proposal. This is due on Friday, January 17 (at the end of week two). I will post a list of project ideas soon, though you are free to come up with your own ideas. Open a GitHub issue answering these questions:

You should also list the GitHub usernames of everyone in the group.

After you submit the PR on GitHub, submit its URL to the “Project Proposal” assignment on Canvas. I will give feedback on GitHub on the project.

Implementation

Create a plan for implementing the different parts of your system. Large systems will always have to be broken down into smaller pieces. Build the skeleton code first, then work from there.

Evaluation

In your evaluation, think about:

You can look to SIGPLAN’s empirical evaluation guidelines for hints on how to do this well.

Final Report

For the final report, you’ll summarize your project’s outcomes, findings, and results in the form of a post on the course blog. Your writeup should answer these questions in detail:

You are welcome to optionally include a video to go along with your blog post.

To submit your report, open a pull request in the course’s GitHub repository to add your post to the blog. In your PR description, please include “closes #N” where N is the issue number for your proposal. The repository’s README relevant has instructions.