Table of Contents

Project 1 (due Feb 21)

Analysis: UMass Scheduling Data

The objective of this project is to analyze the real-world scheduling data.

An example exploration or analysis would be to: simulate this data through each of the schedulers you created in labs 2 and 3 and decide for (e.g., average turnaround time) which scheduler is the best on this real-world data.

Try to write 1-1.5 paragraphs about what you tried and how it turned out. If you have experience and what you explore makes sense as a plot, graphs are always appreciated (but not mandatory – this isn’t a viz class).

Writing: Q1: How do we run multiple programs at the same time?

Try to write 1-2 paragraphs on this question as we’ve discussed in class, read in the book, worked on in labs.

What do I turn in?

  1. A zip file (if you have multiple python files to share with me) or just a .py file if you only have one.
  2. A PDF file (strongly preferred over docx) containing your written analysis and writing (Q1).

Any more advice?

I’m still around on our slack channel!

It’s OK to throw out some data.

If you care about turnaround time, you could throw away all cancelled / errored jobs, and the jobs that never finished. Those jobs may be useful to you if you care about response time….

Hint: Parsing DateTime information

start_time = datetime.strptime(row[3], "%Y-%m-%dT%H:%M:%S")
# As number of seconds since 1 Jan 1960.
print(start_time.timestamp())

This project builds on labs:

  • Lab 2: Oracle Schedulers (due Feb 11)
  • Lab 3: MLFQ xor Lottery Ticket Schedulers (due Feb 18)

Project 2 (due March 13)

Code a HashMap of string->string but in C

The objective of this project is to build a non-trivial C application. This application will be a command-line-interface (CLI) to a HashMap. It will store strings as keys and strings as values – users may store numeric keys or values but they need not inform us.

User Interface

I will provide a working main function with bytes_t (from Lab 6) in order to read in these commands (specifically the quoting – thus allowing any content in strings – is tricky.)

> put "hello world" 9
> put "hello\n" "world!\n"
> put "quoted \"message\"" 138
> put "hello world" 19
> get "hello world"
FOUND
19
DONE
> get "hello\n"
FOUND
world!

DONE
> get missing
NOT-FOUND
> size
3
> clear
> get "hello world"
NOT-FOUND

You will be responsible for printing out the values in this manner:

printf("FOUND\n%s\nDONE\n", valueIfFound);

We will explore using this from Python automatically so we will want output that is easy for a program to understand – thus the FOUND and DONE messages.

Writing:

Q1: How do we run multiple programs at the same time?

Try to incorporate feedback from the prior version. Write to your future self, who probably doesn’t care about the specific details of each scheduler.

Q2: What’s the value in the C programming language?

This is in some ways a reflection on our three weeks of learning C. Why would anyone, in 2020, choose to use C? What are the pros and cons?

What do I turn in?

  1. A pdf file to Moodle. Please print-to-pdf; no docx or other.
  2. Finish and leave the code in your ~/p2/ directory on our server: os.jjfoley.me