Computer Systems Programming

ECE454, Fall 2025
University of Toronto
Instructors: Ashvin Goel, Ding Yuan

    Computer Systems Programming

ECE454 Lab 3 FAQ


Q: Is this lab competitve?

A: For this lab, your grade is only based on your own code's performance.


Q: Is the starter code a fully working implementation?

A: Yes. You can run the driver program with the starter code. The implementation uses an implicit list, similar to a doubly linked list. However, similar to Lab 2, its performance is poor.


Q: What are the main goals for this lab?

A: We expect you to optimize your code for memory utilization (40%) and speed (60%).


Q: What are the main requirements for this lab?

A: See the Programming Rules section of the lab handout.


Q: What is the format of the ".rep" tracefiles?

A: Each tracefile has 4 header lines, followed by allocation and free requests.

Line 1: suggested heap size (unused)
Line 2: total number of ids for allocations
Line 3: total number of allocation/reallocation/free requests
Line 4: weight for this trace (unused)

Line 5 onwards has allocation/reallocation/free requests. Each request is one of the following:

a index size // allocation, unique alloc id, byte size of allocation request
r index size // reallocation, alloc id corresponding to previous alloc/realloc,
// byte size of reallocation request
f index: // free, allocation id corresponding to previous alloc/realloc


Q: What is the exact requirement for using static/global variables?

A: The total size of all defined global and static scalar variables and compound data structures should be minimal. This space should be used for a minimal amount of metadata to bootstrap your memory allocator rather than for data storage. Generally, the global and static variables should not exceed 1KB.


Q: Do we know the upper bound of each allocation request?

A: No.


Q: Do we have to write mm_check?

A: You do not have to write mm_check.


Q: Any tips?


Q: How is the marking done?

A: We provide you a local automarker (the mdriver program) to test your code. This marker and its inputs are the same as the remote autormarker. Its performance should be similar to the automarker. However, your final grade is based on our remote automaker.