Advanced Computer Architecture -- CS 350c -- Laboratory and Homework Assignments


Homework will generally be assigned every week on Tuesday, and it is due nine days later on Thursday at the beginning of class. Of course, you may bring finished homework to class; otherwise, you must get it to the class TA before the due date and time. Remember, late homework is not accepted, but the two lowest homework grades will be dropped. Assignments will appear here as the semester progresses. Please show your work -- partial credit cannot be awarded if just an incorrect answer is given. Homework will generally be submitted on Canvas, but if a homework is turned in to the TA, it must have a cover sheet attached to the front. Only write the information requested on this cover sheet; do not include your Taxpayer ID number.

You may discuss the homework questions with your peers, but the end product that you turn in should be your own work. We want you to learn with and from your peers, but each of you is responsible for your own work.

Homework Assignments

  • Homework Assignment 1. Given: January 17, 2017, Due: January 26, 2017.

  • Homework Assignment 2. Given: January 24, 2017, Due: February 2, 2017.

  • Homework Assignment 3. Given: January 31, 2017, Due: February 9, 2017.

  • Homework Assignment 4. Given: February 7, 2017, Due: February 16, 2017.

    Test data

    Script used to generate test data

  • Homework Assignment 5. Given: February 14, 2017, Due: February 23, 2017.

  • Homework Assignment 6. Given: February 23, 2017, Due: March 9, 2017.

  • Homework Assignment 7. Given: March 21, 2017, Due: March 30, 2017.

  • Homework Assignment 8. Given: April 11, 2017, Due: April 20, 2017.

  • Homework Assignment 9. Given: April 18, 2017, Due: April 27, 2017.

    Below is a link to our y86 assembler (specification). There are some files that this code references, but those details are not needed to get the "feel" of a simple assembler. Note, I may update this file from time-to-time. Why? As student ask me questions, I may include additional comments to make this assembler outline more useful.

    Y86-64 Assembler


    Below is a link containing two example y86 assembler programs.

    Y86-64 Assembler Examples


    Below is a link containing a Lisp-based version of the y86 simulator.

    Y86-64 Simulator


    Below is a link to the test programs (edited and annotated by us) submitted by you, the students.

    Y86-64 Test Programs

    Test programs

    Laboratory Assignments

    The heart of this course is the laboratory assignments. Working through the labs is where the real learning is most likely to occur. There will be four laboratories. Each laboratory is meant to expose some new concept and then solidify a student's understanding.

    Laboratory 0 involves a more involved look at the memory mountain code that you may have been introduced to in CS429. A 3-D representation of the performance of some x86 memory system can be seen on the front of the "Computer Systems, A Programmer's Perspective" book by Randal E. Bryant and David O'Hallaron, Prentice Hall Publisher. We will explore memory-system responsiveness by running code on x86-based computers, either UTCS Linux systems or on your personal laptops.

  • Laboratory 0:

    The files for the laboratory can be found in a "tar" archive. The instructions, which are also included in the "tar" archive, may be downloaded directly (PDF). Given: Thursday, January 19, 2017, Due: February 2, 2017, by noon. If you'd like some extra credit for the course (amount TBD), please submit a 1-2 paragraph explanation of why the assembly code produced by the files ending in "O2.s" prints only 0s for the memory mountain table, while the files ending in "O1.s" produce meaningful output. Both sets of files were compiled on Ben's Mac running Mac OS X el Capitan, with LLVM version 7.3.0.


  • Laboratory 1:

    The files for the laboratory can be found in a "tar" archive. The instructions, which are also included in the "tar" archive, may be downloaded directly (PDF). Given: Tuesday, February 7, 2017, Due: Tuesday, February 28, 2017, by 10:00 am.

  • Laboratory 2:

    The file for the Laboratory 2 can be found in a PDF file. Given: Thursday, March 7, 2017, Due: Tuesday, April 4, 2017, by 10:00 am.

    Here are some test datasets: test10.txt test100.txt test1000.txt

  • Laboratory 3:

    The files for the laboratory can be found in a "tar" archive. The instructions, which are also included in the "tar" archive, may be downloaded directly (PDF). Given: Thursday, April 18, 2017, Due: Thursday, May 4, 2017, by 9:30 am. Note: this laboratory may not be turned in late!

    Return to CS350c course homepage.