I've been mulling this over for several hours, and have looked at a tangentially related question here. That question was about making a task more challenging for a "more confident" learner. I have what I call "hacker versions" of programming tasks in code, such as producing a GUI version of RPSLS rather than the CLI style we do initially in class. There were no extra points.

Here, I was wondering can I/ should I have a "simplified" assignment that would be "easier" and be weighted "downwards".

The class have previously completed a use case (table and diagram) for accessing a course on Coursera, so they had to identify a range of use-cases, including identifying 'extend' and 'include' cases.

I teach a course (introductory) in software architecture at roughly the level of first year in third level. The outline for the assessment (1 of 8 summative assessments) states "Derive a test case from a provided use case". Examples in class were the "classic" ATM test-case, as well as a vending machine and an e-payment site.

At the same time, in another module (code) we used the doctest module (Python) with the testmod() function to check test cases in the docstring. enter image description here

I created a simple use-case diagram for submitting an assignment on Moodle. There are a number of test cases that this prompts. I am/was considering another (perhaps simpler) use case based around the type of code we did in class and this prompts several types of exceptions and even an alternate flow. I wrote some code here as an example of what I am considering.

The test-case template would have to be completed by the learner to show that they have considered all the possible problems that can arise... for example, a negative int should raise a ValueError, using two strings should raise a TypeError and so on.

I did a sample test-table in class based on a area_circle(rad) function, and so I was thinking this might be an option for the "less confident" (as described on CS50 pset2 referenced in the first link) but as I think about it more, if the learner completes this then they achieve the learning outcome, and I should NOT have it weighted to be of less worth than one which could be considered more difficult.

Now, after all this, I am inclined towards giving both options to the class, with no differentiation between points, but I still wonder:

1) Should I offer both options?

2) Is there ever a case for creating an assessment with "less worth" to allow a learner achieve some marks, or if the "lesser" task demonstrates that they meet a learning outcome, is this unfair?

Has anyone done something like this (easier version with less points)

I know I could have been more succinct in my question, but appreciate any feedback you can give. Thank you.


4 Answers 4


I didn't go through all the details, but can share an experience. I once taught a database course to a bunch of good students. The course covered lots of things such as relational theory as well as the internal structure of the data in such a database system.

For one assignment I gave the students a choice, either a simple one or a rather harder one. The harder one was to implement B+ trees if I remember correctly.

The easier one had something to do with hash maps or such.

The instructions were that you could choose which, but if you'd already in your life built a hash map then you would find the easy one boring and the other would be interesting. A surprising number actually did the harder assignment.

They were weighted and graded the same. There was no benefit to the harder one other than learning.

But the students were eager to learn and that made it possible.

But I'd recommend against a system in which only low grades could be earned from a simpler assignment. I think that is psychologically damaging. Like deciding to fail before you even start.

  • $\begingroup$ "a system in which only low grades could be earned from a simpler assignment. I think that is psychologically damaging." It also teaches the wrong philosophy. Developers should always strive for the simplest solution that covers the needed cases. Any developer who takes on additional complexity for no other reason than showing off is a problematic developer who needs to be told to tone it down (note: in a professional context - not an educational one) $\endgroup$
    – Flater
    Nov 5, 2019 at 11:36

My larger assignments are often tiered. There is a minimal expectation of the work to be done and for this a student can earn about 85% of the total score--right in the middle of the "B" range. I provide a menu of extras they can add to earn the remaining points--and even exceed 100%. Often the students and I will collaborate to come up with the menu of extras.

For example, a recent assignment involved asking the user for a ZIP/Postal code, fetching the current weather conditions from an online weather service, and then displaying the temperature, city name, and wind speed.

Extras included:

  • Toggle units between metric and imperial. Kelvin, too, if they wish. Must use methods to do the conversion.
  • Display wind speed in smoots per day. Again, use a method to do the conversion.
  • Display an icon showing the current conditions. Learn how to map conditions onto an icon filename.
  • Display the forecast for the next few days. Use an array to hold the data.
  • Change the fonts, background color, button appearance.
  • etc..

All the extras have to be documented so I (the grader) know what features to look for.

I haven't had any pushback from the students. Sometimes life gets in the way and they only have time to complete the minimal assignment. But everyone has an opportunity to earn the extra points because many of the extras are really easy to implement.

Providing students some extras to implement gives them more creative control over their projects. I can't begin to count the number of times other students got excited over seeing what others did. "How did you get the background color to change based on the temperature?" "How did you get it to look up your location automatically?" It gets them talking to each other and, inevitably, learning takes place.

Tiering assignments puts the score they receive squarely on their shoulders. I think this is where some students get upset; they don't want to be responsible for their own grade. Be up-front with them: tell them they get to decide what their grade will be. Tell them this gives them an opportunity to complete the assignment even if they can't do all of it. Tell them an "A" on an assignment is reserved for students who go above and beyond the minimal requirements. Then make it relatively easy to go "above and beyond."

  • $\begingroup$ I like this. You can get a reasonably good grade by understanding the crucial core of the class, and an excellent grade by doing the extras. It's fair, practical, and transparent to the students. It also allows them to make smart decisions, like implementing the minimum functionality first instead of having to decide right at the start between the simple and ambitious project. In that sense, I think this solution is "safer" than Buffy's. $\endgroup$
    – ObscureOwl
    Dec 10, 2019 at 9:41

Ooh, I have experience with this one!

I tried once giving a huge lab with lower scores for progressively simplified versions (to allow for students with lower abilities to still complete the lab), and it backfired tremendously. There was a lot of anger, and students did far worse than they should have by opting into inappropriately high versions. It was a consistent phenomenon, and matches up with the psychological understanding that we are more afraid to lose than we are happy about gaining.

And thinking about it now, their anger makes total sense. We should grade a student on their work, here and now, in our class. The fact that other people exist who find that work simple should not mean that high grades are intrinsically out of reach. We are penalizing people not for their efforts in the class, but for the existence of other people.

That was several years ago. Since then, I have used tiered assignments many more times, but under a different scheme: I award a laughably small amount of extra credit for the harder version (typically 2 to 3 points out of 100), and still allow for a grade of 100 on the low version. After all, the higher version only exists to make sure I am not wasting the time of the more advanced students. There are always students who take the harder versions under this scheme.

Many students are motivated to learn, and don't want to do assignments without any challenge to them at all. The small reward is simply a token of encouragement to assure the student that you really do want them to try and stretch themselves, and that is really often enough.


At least give it a bonus. In the “real world,” things get more “rewarded” if they are more user-friendly. More people use things that have lower barriers to entry to use. I’m just a student and I have TA’d once, but all my classes that have offered doing harder things (Hopcroft minimization on a partially built NFA and DFA graph generator, for example, or using user input on an assembly language assignment) have offered them for bonus points.

  • $\begingroup$ I disagree that elective additional complexity should be rewarded. It teaches the opposite of what you want developers to strive for. Good solutions minimize complexity. I'm not saying there aren't cases where the complex solution actually is better, but students are going to take underlying philosophies to heart subconsciously, and you should only ask them to add complexity when it is warranted by the requirements. $\endgroup$
    – Flater
    Nov 5, 2019 at 11:39

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.