Course Project


Students can work in groups. But once groups are formed, collaboration is only allowed within the group. More specifically, inter-group collaboration is prohibited. Each group can have no more than 3 people.


  • Mid-term report/presentation (40%): Formal survey of the technology with no less than 5 pages (format: 12-point font size on single-spaced 8.5" x 11” pages)
  • Group with good mid-term report will be given an opportunity to do presentation in class. And in-class presentation will be awarded with bonus grades (extra 30%)
  • Final report (20%): Formal survey of the technology and project design \& implementation, no less than 10 pages (the same format to mid-term report).
  • Final program/demo (40%): Demo needs to allow other people to reproduce your results.


Week Schedule
Week 1-4 form group and choose topic
Week 8 mid-term report
Week 13 final report/demo

Topics (Tentative)

Choose just one of the following topics.

x86-64 ISA

  • Page table and page-fault: intercept and analyze page-fault [link]
  • Return-oriented programming (ROP): formulate a working ROP attack [link]
  • Program data-dependency analysis

ISA extensions

  • SGX: understand SGX/CLS, write user-land code [link]
  • AVX: understand AVX/SIMD, write data-parallel program that demonstrates perf speedup [link].
  • Other ideas: TrustZone by ARM[link], MPX [link]

Cloud interface

  • Amazon AWS: set up AWS services in cloud and write a client program to interact cloud, [link]

Proposing a new topic

Alternatively, you can propose a project of your own interest. If you take this option, you have to:

  1. Write a full-fledged project proposal, of at least two full pages (in the same format to mid-term report, see above), detailed in its relavence to "computer architecture," and why it is a cutting-edge technology.
  2. Submit a hello-world program and demonstrate its working. This is to prevent you from choosing unrealistic topics, such as "studying quantum computer", that in near future there will be no real system allowing you to implement any working code on it.