The following applies to all programming classes. Non-programming classes will be given class specific guidelines.
Programming and computer science in general are very challenging subjects for most students. Programming requires an above average time commitment compared to many other endeavors. Grading takes this into account and you are expected to rise to this challenge to learn to be a professional programmer.
All programming courses are taught with a similar philosophy to what you can expect on-the-job. On-the-job, there are many things which have nothing to do with code but will determine whether your code is accepted into the codebase. Similarly, these concepts will be mirrored in the academic environment and determine whether or not your code is accepted for grading. If any of the following requirements are violated, your code will not be accepted for grading, and you will receive an automatic zero. On-the-job, if you break these rules often enough, you will be fired, regardless of your code quality. In programming courses, if you break these rules often enough, and you will fail, regardless of your code quality. Remember, you are not learning simply to code, you are also learning to be a professional programmer, and that title carries with it a lot more than simply coding.
Just because it works, does not mean you get a good grade. All of the following count (and will be explained during assignments): Modularity, Architecture, Style, Elegance, Good Practice, Robustness, and Accuracy. The simple statement, "it works" is worth nothing. The statement "it works and is programmed with good practice, elegance, good architecture, style, modularity, robustness, accuracy, and according to instructions" is worth EVERYTHING.
You programs must run in a command prompt environment on Linux (Python, C/C++) or in Chrome on Linux (web programming). Failure to run on Linux will be rejected. See FAQs for why.
You are not simply learning to write programs that "work." You are learning proper programming technique, proper architecture, good programming practice, and how to write maintainable code, as well as discipline, logic, and how to think like an engineer and a computer scientist.
An academic analogy: Imagine you are in a writing class. You are told to write a story about
your last vacation, it has to be 2,000 words or more, and you are given specific guidelines
on how to format your story and submit it (e.g. typed, double-spaced, 1" margins, etc.).
Imagine you write that story, and you very accurately describe your vacation, but you have
spelling errors, grammar errors, run-on sentences, inconsistent and poor formatting,
you only wrote 800 words, and you submit it handwritten on the back of 270 bubble gum wrappers.
Despite the fact you accurately described your vacation, your assignment will fail, and you
should expect it to. You would not be able to credibly argue; "But I wrote about what I did
on vacation!" Obviously the point of such an assignment in a writing class is not to explain your
vacation, but rather to learn and demonstrate proper writing techniques and discipline.
That is how you need to think of learning to program. You are not learning programming. You are learning computer science, engineering, computational thinking, logic, and mental discipline. The programming itself is simply a demonstration of those concepts.
A real-world analogy: Suppose you order a ham sandwich at a restaurant and you want it with mustard on wheat bread. Then you get a ham sandwich with mayonnaise on white bread. When you complain and the waiter says, "Hey, it's a ham sandwich! You got what you ordered! I ate one just like that yesterday and it worked for me!" Would you accept that answer? Probably not. Why? Because the waiter did not adhere to your specifications. The fact that you got a version of a ham sandwich which "worked" for someone else is worthless to you because it's not the version you specified. It might be the most perfect, beautiful ham sandwich with mayonnaise on white bread in the Universe, but it's worth exactly ZERO to you because it did not adhere to your specifications.
It works" is worth nothing."It works and it's done right" is worth everything.