Machine Projects

1 MPs

  1. Final Project – partial description, work in progress

2 Programming Environment

You’ll use VSCode in a POSIX-compatible environment for MPs in this course. Please see the article in the Illinois CS Systems Encyclopedia for how to set this up on your computer.

For some MPs you’ll also use a virtual machine. See our secure page for information about your assigned VM.

3 Submission via git

MPs will be submitted on and tested using github. See the github page for instructions on how to set this up.

4 MP Policies

CS 340 is a junior-level course and, for many people who take it, the very last heavily-programming focused course. MPs in this course are challenging, multi-part programming problems where you will work with system concepts and gain a deeper understand of the systems you use every day (while improving your skill as a programmer!). The best way for you to understand how a system works is to build the system yourself.

To be clear, what we are interested in is the learning gained and demonstrated by your correctly completing the MPs using the resources we provide. Code that does what the MP asks for but which was not created by you or was created using resources that fundamentally change what your development process looks like bypass the intent and purpose of the MP and are considered cheating.

4.1 Collaboration

In Computer Science, most work is done independently as you work on a part of a larger system or product. In industry and research, you are often one of several people working on different components of a project and have others to collaborate and talk with about the project. However, it is on you to finish your project!

It is expected that you solve and type 100% of your code yourself. I like to think of programming as solving a maze: if you are giving someone a detailed list of turn right, turn left, turn right they are no longer solving the maze. However, if you tell them that you may have need a flashlight, be prepared then they are still exploring the maze on their own. As it applies to programming, you can tell them fseek is helpful for the MP but don’t give the class exact place to use it or the exact way to use it.

4.2 Tutoring Hours Policy

If you are in CS 340, you know how to program and read technical documentation! These are two of the most important skills in all of Computer Science to learn and you will use them in CS 340.

4.3 Grading Policy

In general, we will provide many test cases for you. We attempt to make the test cases robust and a great tool to help you solve the puzzles. We use automated grading to grade most of your MPs and we do not attempt to make these test cases robust against attacks.

We intend for your automated grade to be your recorded grade on the MP. However, there are a few exceptions:

  1. If you accidentally defeat the test cases (ex: an incorrect value happened to pass the test cases, but it was achieved by an attempt to solve the problem), your grade may be adjusted to reflect the true correctness of your code. You should not just rely on the green bar to know your code is working.

  2. If we completely miss testing a key component of the MP (hopefully this never happens), we may provide additional test cases after the MP is released. We’ll provide them as early as possible if we have to do this.

  3. If your purposefully defeat the test cases (ex: comment everything out, hard-coding specific return values that score 100% on the tests without doing the puzzle), this is a violation of my trust in you. You will get a zero on the MP, it’s a violation of academic integrity, and all of your MPs will be manually graded for complete correctness to the specification instead of using automated tests (you DO NOT want this).

If a project (such as the final project) includes a live interactive component, that components grade relies on your being present and participating in the interaction. Any exceptions to this must be arranged with the course instuctor in advance.