Machine Problem Policies
CS 340 is a junior-level course and, for many people who take it, the very last heavly-programming focused course. MPs in this course are challenging, multi-part progrmaming 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.
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.
Office 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.
We will not walk you through your MP in office hours. The only walk-through provided will be part of the MP Overview Session.
The best question is one you can generalize and ask on the course CampusWire or Discord. This will not only help you out, but will help all your peers who end up with the same issue as you. If you have a question about what to do, the online forums are the best place to ask these questions.
We WILL NOT help you find your error – we WILL help you solve your known error. Before attending office hours, you need to debug your code to understand what is causing your code to crash or fail. You MUST already have a debugger working to get help with code. Without a debugger, we will NOT help with code. (Seriously, a debugger is a magical tool that is going to spot errors we will never spot.)
Always remember that we are all on the same team and we are all here to help each other out and these policies are to make you a more independent programmer. CS 340 will be the very last lower-level programming class you take. The upper-level classes have almost zero support to help with programming. You need to know independent programming skills to advance to be successful in the upper-level coursework.
In general, we will provide a lot of 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:
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.
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.
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 just 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).