Skip to content

Assignments

What is an assignment?

An assignment is a graded programming task that you would like your students to complete. All assignments are automatically graded using standard unit testing libraries within their respective languages. The auto graded assignments are meant to handle simple one file applications as well as complex, multiple file, and multi-dependency projects. You have the ability to directly test student's functions, CLI applications, web apps and api's, as well as class programmatically. At the moment, Java and Python are the supported languages we have available for testing. An assignment contains three components:

1) The assignment description:

  • the textual explanation of the problem set you'd like your students to solve.

2) The unit tests:

  • A unit test is code that tests other code. Unit tests are developed using unit test libraries. Junit is used for Java assignments and Python's built-in unittest framework is used for Python assignments. Since you get to write your own unit tests, you have complete control over the messaging that is displayed to your students. Learn how to create effective unit tests.
  • When programmatically testing functions and classes, the auto grader will automatically refactor your student's submitted code to conform with your code prior to testing.

3) The students submissions:

  • This is the code that the student submits and is tested. Students may submit just the assignment files, or their entire project. The auto grader system will handle the refactoring of their code so that the student's code can be tested by your code. Applications that are called through a command line, interfaces, traditional functions, and classes may be tested. After the submission is made, the student is provided with results that they can review in order to understand what needs to be improved before their next submission. Learn how to review your student's submissions here

Since all submitted assignments are automatically graded, this gives you the opportunity to easily offer the ability for resubmissions from your students, even after the due date. This would result in zero additional work required for you or your TA's. Create a custom grading formula for resubmissions.

The importance of auto grading

"If at first you don't succeed; call it version 1.0 and start working on version 2.0"

~ Programmer's Proverb

Auto grading is key because it allows your students to learn and grow at their own pace. As instructors, we understand that not all of our students learn at the same pace. Although due dates are helpful to stay on track sometimes, it doesn't always click for a student until they've encountered the same challenge several more times. With auto-graded assignments, you can still follow your deadlines while simultaneously allowing your students to make multiple submissions after the due date for partial credit. You can create an iterative learning environment where your students are recognized based on their merit and persistence rather than their momentary correctness.

"We do not learn for school, but for life"

~ Seneca the Younger

You may be thinking to yourself, "Why do I need an auto-grader when my TA's and I can do the grading on our own?". To answer that question, the amount of time your students would have to wait for the feedback may be detrimental to their learning. If a student has to wait even just a few hours for a correction to their code, they will most likely forget their original thought process, which will prohibit them from learning from their mistakes. We have to remember that feedback in the real world comes much faster. We recognize that our students will be entering the modern programming workforce, and most, if not all of them, will follow some sort of agile/iterative development process in their professional careers. So why do we teach them in a waterfall modality? We have to teach for the real world, not just strictly for academics.