All assignments are due at 8:00 PM on the due date. There is a late penalty of 10% per-day for up to a maximum of 2 days. All assignments will be posted at least 2 weeks prior to its due date. We will have a mix of both written and programming assignments. All assignments will be posted on this page.
All assignments should be submitted using Canvas.
|
|
Release |
Due Date |
|
Programming Exercises
[Extra Credit & Optional]
|
21-Jan |
1/29, 2/5, and 2/12 |
|
HW1 |
21-Jan |
5-Feb
|
|
HW2 |
29-Jan |
19-Feb
|
|
HW3 |
5-Feb |
26-Feb
|
|
HW4 |
19-Feb |
12-Mar
|
|
HW5 |
24-Mar |
16-Apr
|
|
|
|
|
|
Term Project |
TP-D1 |
5-Feb
|
|
|
TP-D2 |
26-Mar
|
|
|
TP-D3 |
7-May
|
|
HW-Extra Credit
[Optional]
|
2-Apr |
23-Apr |
|
Generative AI Use and Consequences
Use of AI tools such as ChatGPT, Claude, Github Co-Pilot, and/or their ilk to write or “improve” your code or written work at *any* stage is prohibited. Turning in code or an essay written by generative AI tools will be treated as turning in work created by someone else, namely an act of plagiarism and/or cheating.
Ultimately, you will get out of the class what you put in. Simply copying and pasting code from generative AI tools is neither ethical nor does it contribute to your learning experience. There are multiple reasons why these generative AI tools are detrimental to your learning experience:
- They rob you of the ability to think and learn the concepts for yourself. Solving problems is an essential step to gaining a solid understanding of the material.
- You will struggle with the in-classroom quizzes and exams where you will not have access to these tools.
- While we acknowledge that these tools are likely to become an important part of a software engineer's workflow in the future, you are much more likely to use these tools in an effective manner if you already have expertise in the relevant technical topics. Developing such expertise requires putting in the effort to learn these topics without the assistance of these tools.
- These tools are prone to generating imperfect or even incorrect solutions, so trusting them blindly can lead to bad consequences.
|
|
Programming Exercises: A set of programming exercises in C and C++
The objective of this assignment is to help you hone your programming skills in C and C++. This programming exercise is Optional & Extra Credit. There are 15 programming exercises, and each accounts for 0.1 points of extra-credit towards your cumulative course grade. In total, this assignment will account for 1.5 points in extra-credit towards your final course grade. The assignments are due in batches as outlined in the due dates on Canvas.
Additional details are available here.
Release date: January 21
Due:
- C01 through C06 (i.e. 6 programming exercises) are due on Wednesday, January 29th, @ 8:00 pm MT
- C07 through C12 (i.e. 6 programming exercises) are due on Wednesday, February 5th, @ 8:00 pm MT
- C++13, C++14, and C++15 (i.e. 3 programming exercises) are due on Wednesday, February 12th, @ 8:00 pm M
Assignment 1: Memory Allocations/deallocations and Avoiding Resource Leaks
The objective of this assignment is a simple refresher on memory allocations and deallocations using C while avoiding resource leaks. This assignment will account for 5 points towards your final course grade. Additional details are available here.
The skeleton files are available here.
Some helpful Infospaces videos for this assignment:
Release date: Jan 21
Due date: 5 Feb
Assignment 2: Fork(), exec(), and wait() System Calls
The objective of this assignment is to get you to use the fork(), exec(), and wait() system calls on Unix. This assignment will account for 5 points towards your final course grade. Additional details are available here.
Some helpful Infospaces videos for this assignment:
https://infospaces.cs.colostate.edu/watch.php?id=277
https://infospaces.cs.colostate.edu/watch.php?id=276
Release date: Jan 29
Due date: 19 Feb
Assignment 3: InterProcess Communications using Shared Memory and Pipes
The objective of this assignment is to get you to be comfortable with Shared Memory and Pipes for Inter Process Communications on Unix. This assignment will account for 5 points towards your final course grade. Additional details are available here.
Some helpful Infospaces videos for this assignment:
Pipes in C: https://infospaces.cs.colostate.edu/watch.php?id=279.
Shared Memory in C: https://infospaces.cs.colostate.edu/watch.php?id=280
Release date: 5-Feb
Due date: 26 Feb
Assignment 4: Concurrency Control Using Threads
This is an assignment on concurreny control using Threads to solve the producer-consumer problem with a bounded buffer. This assignment will account for 10 points towards your final course grade. Additional details are available here.
Release date: 19 Feb
Due date: 12 Mar
Assignment 5: CPU Scheduling Algorithms
The objective of this assignment is to get you comfortable with different CPU scheduling algorithms. You will be implementing multiple scheduling algorithms some with support for preemption while tracking measures of scheduling effectiveness.
Additional details are available here.
A C++ Makefile is available here, feel free to remove compile flags or use gcc if you're compiling a C project.
If your project has more than just a Schedule.cc file, you will need to adjust the Makefile to link them together.
Included here is a testing input file of processes.
For this testing file, you should be getting the following output:
--- FCFS --- Average Turnaround Time: 1098.400 Average Waiting Time: 1075.100 Throughput: 0.043
--- SJFP --- Average Turnaround Time: 692.190 Average Waiting Time: 668.890 Throughput: 0.043
--- Priority --- Average Turnaround Time: 1036.090 Average Waiting Time: 1012.790 Throughput: 0.043
Note: Your Priority and SJFP output *might* vary slightly due to how you're breaking ties between equal priorities and remaining burst times respectively.
You should be building a Gantt chart on paper with simple examples (~5 processes), doing the math by hand, then verifying that your code produces the same results before you try to run your code on 100+ process inputs.
Here's an easy sample input for FCFS to verify by hand:
1,0,3,5 2,2,4,2 3,3,1,3 4,8,3,4 5,10,4,1
You should be getting this output:
--- FCFS --- Average Turnaround Time: 4.200 Average Waiting Time: 1.200 Throughput: 0.333
--- SJFP --- Average Turnaround Time: 3.600 Average Waiting Time: 0.600 Throughput: 0.333
--- Priority --- Average Turnaround Time: 5.400 Average Waiting Time: 2.400 Throughput: 0.333
Release Date: 24 Mar
Due Date: 16 Apr
Term Project:Experimentations with the Raspberry Pi
The term project component of the course requires you to leverage the Raspberry Pi. The project involves multiple deliverables to ensure that you are making sustained progress on your term project throughout the semester. The term project will account for 10 points towards your final course grade. Additional details about this term project are available here.
Due dates:
TP-D1 due 2/5/2025 [1 point]
TP-D2 due 3/26/2025 [2 points]
TP-D3 due 5/7/2025 [7 points]
Extra Credit: Resource & Activity Profiling For a Process
This assignment targets resource and activity profiling for processes. This assignment will contribute 2 points towards your overall course grade. You should attempt this extra credit assignment ONLY after you have successfully wrapped up HW5 (which accounts for 10% of your course grade) and are looking for a challenge. Additional details are available here.
A couple of helpful Infospaces videos have been created for this assignment:
File I/O video: https://infospaces.cs.colostate.edu/watch.php?id=295
Page Faults video: https://infospaces.cs.colostate.edu/watch.php?id=298
|