CSE 583: Homework Assignments

Fall 2025

Home / announcements | Course syllabus | Reading list |
Schedule | Lecture Notes | Homeworks | Links

Homework 0

Assigned Aug 27, 2025 ; Due Sep 3, 2025:  Note, there is nothing to turn in for this homework, but it is highly recommended that you do it as you need it for Homework 1.

A. Setup and run LLVM on your own "hello world" program. We will be using version 20.1.8. We have 2 Linux servers for the class, eecs583a,eecs583b.eecs.umich.edu. You can either use one of the servers or your own Linux system. For the class servers, you will set up your directory to point to a central LLVM installation and just have your own pass in your local directory. For your own server, you will need to do a full install of LLVM on your system. See http://www.llvm.org for more information and to familiarize yourself with what resources are available. Detailed instructions for both setups are posted on piazza.

B. Skim over the following LLVM documentation,

C. Go through writing a pass tutorial: Writing a Pass. Create your own LLVM pass that can print the names of all basic blocks in the input program. You may want to write a script to run LLVM and your pass efficiently rather than running LLVM manually on the command line. Lastly, try generating the human-readable LLVM bitcode (*.bc) and dump/view the control-flow graph for the input program (see option -dot-cfg).

Homework 1

Assigned Sep 3, 2025 ; Due Sep 15, 2025 (11:59pm Eastern USA)pdf

Implementation template and benchmarks (gzip'd tarball, tar zxvf F25_CSE583_HW1.tgz to extract files): F25_CSE583_HW1.tgz

Homework 2

Assigned Sep 17, 2025; Due Oct 8, 2025 (11:59pm Eastern USA)pdf

Implementation template and benchmarks (gzip'd tarball, tar zxvf F25_CSE583_HW2.tgz to extract files): F25_CSE583_HW2.tgz

Included in the .tgz file are 2 sets of benchmarks: correctness and performance. Correctness benchmarks are designed to help you test and debug your implementation, but are too small to notice any performance change with optimization. Performance benchmarks have high trip count loops to assess performance of your optimization. Some performance improvement should be observed particularly with the Bonus Implementation. See the 2 README files inside each benchmark directory for more info about each of the benchmarks.

Last, slides that go over the implementation template and steps in more detail are provided (see lecture notes/Zoom video from Class 7, Wednesday Sep 17).
Home / announcements | Course syllabus | Reading list |
Schedule | Lecture Notes | Homeworks | Links