Grading philosophy follows from teaching philosophy.
Non-programming courses and assignments (essays, written assignments, problem-solving, etc.) grading standards will be detailed within the courses and assignments. In general, you can expect grading to be based on logic, accuracy, and adherence to specifications. Good writing practice, style, grammar, spelling, and organization will also apply. You will be held to competent college-level writing standards. Handwritten, poorly organized, or sloppy work will not be accepted. Cell phone photos of work, images, or diagrams will not be accepted.
Programming grading will be based on the following breakdown of factors:
Code Quality Explained: Program grading is holistic and will typically be 100, 95, 90, 85, etc. based on the following:
Administrative Correctness Explained: Administrative correctness is all or nothing. Any of the following will result in a zero for this category, which is 25% of your grade. This means that if you violate any of the requirements below, you will lose 25% of your grade right off the bat. This is a significant penalty, and it is designed to encourage you to pay attention to detail and follow instructions carefully.
Just because it runs doesn’t mean it earns a good grade. Your grade reflects modularity, architecture, style, clarity/elegance, sound practices, robustness, correctness, and adherence to instructions. “It works” by itself is worth little. “It works and is well-designed, maintainable, and built to standard” is what earns high marks.
You are not training to produce code that merely functions. You are training to write clean, maintainable, professional software—and to think with the discipline of an engineer and computer scientist.
An academic analogy: Imagine you are in a research writing class. You are told to
research a topic and write an essay about it. You are instructed it has to be 5,000 words or
more, and you are given specific guidelines on how to format, cite, and submit it
(e.g. typed, double-spaced, 1" margins, table of contents, citations, etc.).
Imagine you write that essay, and you very accurately explain the topic, but you have
spelling errors, grammar errors, run-on sentences, inconsistent and poor formatting,
you only wrote 1,800 words, and you submit it handwritten on 50 bar napkins.
Despite the fact you may have very accurately described the topic, your assignment will fail, and you
should expect it to. You would not be able to credibly argue; "But I did the research and wrote the essay!"
Obviously the point of such an assignment in a research writing class is not to simply to explain the topic,
but rather to learn and demonstrate proper research writing techniques and discipline.
That is how you need to think of learning to program. You are not just learning programming. You are learning computer science, engineering, computational thinking, logic, and discipline. The programming itself is simply a demonstration of those concepts. In the age of AI, it is more important than ever to learn the underlying concepts and discipline, and to be able to apply them in a way that is correct, maintainable, and professional.
"It works" is worth nothing.
It works and it is done right is worth everything.