Grading Guidelines

Grading philosophy follows from teaching philosophy.


General Grade Meanings

  • A 90 : Exceptional Student has risen above and beyond expectations in all areas and has mastered the course material.
  • B 89-80: Above Average Student has risen above expectations in most areas and has mastered most course material and is above average in all areas.
  • C 79-70: Average Student has completed all work as assigned and demonstrated competency in most areas and met the minimum expected standards.
  • D 69-60: Below Average Student has fallen below expectations in key areas, has not mastered key course material, and does not demonstrate an understanding of the basic material.
  • F 59 : Failure Student has failed to meet most of the minimum standards and has not developed an understanding of most of the material.

Non Programming Grading

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

Programming grading will be based on the following breakdown of factors:

  • Code Quality (50% of your grade): This includes correctness, adherence to specifications, good programming practice, style, modularity, architecture, robustness, elegance, and accuracy. This is the most important category and will be graded holistically based on description below.
  • Administrative Correctness (25% of your grade): Adherence to specifications, instructions, and process. This includes formatting, documentation, project structure, submission process, correct commit process proper commenting, proper commit messages, etc. This is an all or nothing category. You either meet the specifications or you don't. The possible grades in this category are 0 and 25. See below for details.
  • AI Statement and Essay (25% of your grade): Each assignment will require an AI statement and essay. The AI statement is a short, specific statement about how you used AI in the assignment. The essay is a longer, more detailed explanation of how you used AI, what you learned from it, and how it impacted your work. Typically, this will be 5 questions, 5 points each and each question will be all or nothing (i.e. 0 or 5).

Code Quality Explained: Program grading is holistic and will typically be 100, 95, 90, 85, etc. based on the following:

  • 50: No errors detected.
  • 45-49: Your code is excellent and conforms to all instructions/specifications. Any problems are minor and would only require a small “tweak” to achieve 100. A "tweak" is one line, one name, one parameter, etc.
  • 40-44: Your code is above average, conforms to the majority of instructions/specifications. Problems are significant but easily fixable. Fixes would require more than a "tweak" but less than a complete rewrite of any complete section of code. For example, multiple occurrences of using incorrect loops or more than one return per function.
  • 35-39: Your code is average, conforms to most instructions/specifications. Problems are substantial and would require some effort to correct. Fixes would require rewriting whole sections of code, or correcting three or more mistakes, but not a complete rewrite of most of the code.
  • 30-34: Your code is below average, conforms to few instructions/specifications. Problems are substantial, and would likely require a complete rewrite of most of the code.
  • 25-29: Your code is well below average, conforms to few instructions/specifications. Code essentially "runs" and resembles what was requested, but has major flaws. Problems are substantial and will require a majority or complete rewrite of most of the code.
  • 0: Once code quality drops below the previous category it is a 0.

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.

  • Failure to include file comment headers exactly as instructed.
  • Failure to document/comment functions and methods exactly as instructed.
  • Failure to include a proper README or proper .gitignore
  • Failure to produce output exactly as examples or specifications dictate.
  • Incorrectly structured project, including misnamed files, or using directories not specified in the assignment.
  • Failure to submit properly as instructed. This includes all the following:
    • Any stray files in your repo.
    • Submitting zip files not as directed or with stray files/directories.
    • Submitting incorrect links. Use the web URL, not the SSH or .git link.
  • Failure to use your repo properly. This means you must commit often, small, smart.
  • Failure to compile/interpret without warning and/or error for any reason.
  • Failure to run on Linux will be rejected. See FAQs for why.
General Grading Philosophy

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.