How might I structure an assignment with two "levels"? 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.


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.
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.