Labs
Labs help students gain initial familiarity with applying course concepts. Many labs are focused on specific skills needed for the assignments.
Expand for Lab Schedule
Room: SRYE 4013
- Monday
- 12:30pm (D207 & D208)
- Wednesday
- 2:30pm (D201 & D202)
- 3:30pm (D203 & D204)
- 4:30pm (D205 & D206)
- It is recommended that students attend in-person lab sections for lots of support!
- You are invited to come to any (or more than one) lab section.
- There is no need to attend the section you are enrolled in.
- There is no need to attend any lab sections: there is no attendance taken.
- You can complete the lab on your own time or own computer if you like.
- Time suggestions are given here to guide students who are working on the lab during lab times. However, the entire lab must be completed by everyone for marks.
- Lab 2 and beyond are submitted to CourSys for marking; marked for completion.
Labs
- No Lab (Week of Jan 6)
- No lab this week. Don't show up, we won't be there either!
- Lab 1 (Week of Jan 13) -
getline()
- Lab 2 (Week of Jan 20) - `fork()', 'exec()', 'wait()'
- Preparation Material:
- Lab solution.
- Lab 3 (Week of Jan 27) - Input History
- Preparation Material:
- getline()
- C arrays
- Lab solution.
- Preparation Material:
- Lab 4 (Week of Feb 3) - Heap Memory / Memory Allocation
- Preparation Material:
- Know
sbrk()
function. - Understand memory allocation from notes, see slides.
- C Skills
- Able to create and use structs.
- Able to use pointers: type cast, dereference, pointer arithmetic.
- Know
- Lab solution.
- Preparation Material:
- Lab 5 (Week of Feb 10) - Memory Allocation Algorithms
- Preparation Material:
- Understand memory allocation from notes, see slides.
- Able to work with a C linked-list.
See YouTube Video on Linked List in C
- Lab solution.
- Preparation Material:
- Lab 6 (Week of Feb 24) - Debugging & Asserts
- Preparation Material:
- Able to work with a C linked-list.
See YouTube Video on Linked List in C
- Able to work with a C linked-list.
- Lab solution.
- Preparation Material:
- Lab 7 (Week of Mar 3) - MapReduce
- Preparation Material: Understand MapReduce
- Lab solution.
- Lab 8 (Week of Mar 10) - Threading Activity with uthash
- Preparation Material:
- Read about the
uthash
library. - C Skills
- Able to use structs, arrays, pointers
- Able to compile, run, and debug C programs using CMake.
- Read about the
- Lab solution.
- Preparation Material:
- Lab 9 (Week of Mar 17) - Socket Programming
- Preparation Material:
- Linux socket programming.
- C Skills
- Able to use structs, arrays, pointers
- Able to compile, run, and debug C programs using CMake.
- Lab solution.
- Preparation Material:
- Lab 10 (Week of Mar 24) - Multiple-Client socket programming
- Preparation Material:
- Linux socket programming.
- C Skills
- Able to use structs, arrays, pointers
- Able to compile, run, and debug C programs using CMake.
- Lab solution.
- Preparation Material:
- Lab 11 (Week of Mar 31) - Two Truths and a Lie = Signature Verification
- Read how to verify a message by its signature: OpenSSL Wiki re EVP Signing and Verifying.
- Focus on the section about Asymmetric Key, specifically about Verifying a message digest.
- You should really do this reading! It shows sample code (the first one under Verifying is very helpful)! Read the section, not just the code.
- Good to have some initial familiarity with:
- C Skills
- Able to use files, arrays, pointers.
- Able to compile, run, and debug C programs using CMake.
- Lab solution.
- Read how to verify a message by its signature: OpenSSL Wiki re EVP Signing and Verifying.
- Note: No lab exercise during week of April 7th
- TAs will still be in lab during lab time as normal.