Peer Assessment
- Please submit an individual peer assessment for the group labs/projects you have done in the course by Wednesday, Dec 5th, 11:59pm.
- Format and instructions
- Submission instructions: Use the lab label as "lab4" while submitting the document.
Lab 3: DeFiler: A Simple File System in Java
- Design document due on Monday, 12th November at 11:59PM.
- Final submission along with revised design document due on
Friday, 30th November Monday, 3rd December at 11:59PM.
- Handout with instructions
- Source code files
- High level design of the DeFiler
- Group size: We recommend working with groups of size two for this lab. You can use piazza to search for a partner.
- Submission instructions: Use the lab label as "lab3a" while submitting design document (only the filled README with design details that goes under the
implementation section) and "lab3b" when submitting the
final version.
Lab 2: Multi-threaded programming in Java
- Due date: Friday, 26th October at 11:59PM.
- Handout with instructions
- The
concurrency page also has some practice problems, and
solutions for some of the problems which you may find useful for this lab.
You might also find the tutorial on Java concurrency to be useful reference.
- Group size: We recommend working with groups of size two for this lab. You can use piazza to search for a partner.
- Submission instructions: Use the lab label as "lab2" while submitting this lab.
Lab 1b: Implementing a shell
Lab 1a: Heap manager
- Due date: Friday, 14th September at 11:59PM.
- Handout with instructions
- Source code files
-
The section on dynamic
memory management from CS:APP
textbook will be useful.
The segment from the CS:APP textbook provides some background on heap managers
and the challenges they face, how they are used, and their interaction with the
operating system kernel. It discusses the problem of memory fragmentation and
some techniques for minimizing fragmentation and achieving good memory
utilization. Your heap manager should be designed to use memory efficiently.
- Some material on the C language is available on the resources page.
The goal of the lab is really to understand heap manager issues, rather than
C programming per se. (But learning some C is part of it.)
- Getting started: Copy the source code files into a directory,
cd into that directory, and type "make". Read the handout. Modify the code as directed in
the handout. Type "make" again. Test by running the test programs.
(Just type the name of the program preceded by "./".) Repeat.
You can debug/execute all the test cases by running "make debug" and "make test".
- Submission instructions: Use the lab label as "lab1a" while submitting this lab.
How to submit?
You will submit through website at: https://www.cs.duke.edu/csed/websubmit
using the course label as "compsci210". You should then choose the appropriate
lab label provided in the lab handout. You can submit the files multiple times
before the deadline and we will treat the latest submission as the final
submission for grading.
Generic note
This note applies to all labs in this class.
We all know that there are various fragments of code available on the web that
are relevant to the lab assignment(s). You are not prohibited from looking at
material on the web. We believe that we have provided you with enough to start
with that it will not benefit you to import source code from anywhere else.
The point of the lab is to learn, and we want to make it easy for you to learn!
When you hand in the lab, we expect that your code
is your own. If you incorporate source code from some external
source, you must add a comment indicating the imported code and the source of
that code. Most importantly you should be able to explain any part of your
code in detail, and why you chose to do it that way and not some other way. If
you encounter code from some external source that diminishes your opportunity
to learn by doing the lab, please inform us (we may not be aware of it).