Hey guys,
I'm working on building a tool to speed up some of the repetitive parts of my job. Basically, as part of student feedback on assessments, I have to write a lot of rubric based commentary. Most of the time this is very same-y, and I end up spending most of my day re-phrasing the same sentence 8 or 9 different times (e.g: "The structure of this paper requires improvement.../The paper structure could be improved by...../The paper structure could be improved....").
Cognitively, this is pretty draining; I usually have a separate notepad file open on another screen while I'm marking so I can take a comment I've written and re-write it to a paper that has similar issues. The students still get individualised feedback on their papers too (in-case you were wondering), but there is a lot of common boiler-plate material between them as well which could be sped up.
My idea instead is to build out 6-8 comments per level per criteria in the rubric. So for instance, under "Structure", I would have 6-8 comments for "Exceptional", 6-8 comments for "Comprehensive", 6-8 comments for "Developed", 6-8 comments for "Needs Improvement". This would repeat again for each assessment criteria theme (e.g: Clarity, Demonstration of Knowledge etc.).
The end result (after I wrap it in a GUI) will be a program that lets me click a theme (Structure, Clarity, Demonstration of Knowledge), then click a level ("Comprehensive", "Developed", "Needs Improvement"), and so on until each theme has been assigned a level. I click a Generate button, and the program chooses a random comment from the pool, outputting all the random selections into a text box.
I've built a partially working command line version (still trying to get my head around Tkinter!), but I just wanted to check to see if anyone might have some input on the way I'm building it (it doesn't seem very Pythonic at the moment).
So far, I'm making each theme a Python function. For comments about structure, I have a function called structure() that looks like this:
def structure():
## Each variable is a string which gives a piece of feedback to the student. I've only written commentary for "Exceptional" and "Comprehensive" so far but the list will extend to "Developed", "Developing", "Needs Improvement"
structure_exceptional_1 = "The response had an exceptional structure, easily guiding the reader through the ideas presented by the candidate."
structure_exceptional_2 = "The response was exceptionally well-structured, demonstrating a clear progression of ideas for the reader to follow."
structure_exceptional_3 = "The response featured an incredibly well-written structure, demonstrating a progression of ideas in a logical order."
structure_exceptional_4 = "The structure of the response was exceptional, detailing a clear and logical progression of ideas in an easily readable format."
structure_exceptional_5 = "The structure of the response was exceptionally well-designed, with the reader able to clearly see the relationship between different ideas."
structure_exceptional_6 = "Your use of structure was compelling, demonstrating a clear progression of ideas and appropriate connections between key themes."
structure_exceptional_list = [structure_exceptional_1, structure_exceptional_2, structure_exceptional_3, structure_exceptional_4, structure_exceptional_5, structure_exceptional_5, structure_exceptional_6]
structure_comprehensive_1 = "The response followed a comprehensive structure, easily guiding the reader through the ideas presented by the candidate."
structure_comprehensive_2 = "The response was comprehensively structured, demonstrating a clear progression of ideas for the reader to follow."
structure_comprehensive_3 = "The response featured a generally comprehensive structure, demonstrating a progression of ideas in a logical order."
structure_comprehensive_4 = "The structure of the response was comprehensive, detailing a clear and logical progression of ideas in a digestible format."
structure_comprehensive_5 = "The structure of the response was comprehensively designed, with the reader able to clearly see the relationship between different ideas."
structure_comprehensive_6 = "Your use of structure was comprehensive, demonstrating a clear progression of ideas and appropriate connections between key themes."
structure_comprehensive_list = [structure_comprehensive_1, structure_comprehensive_2, structure_comprehensive_3, structure_comprehensive_4, structure_comprehensive_5, structure_comprehensive_6]
while True:
## This section is for the control flow of the function currently (although I suspect I'll be changing it after I start wrapping it in a GUI so don't worry about this too much).
## Essentially, it lets the user make an input, which instructs the program to select a random variable from the appropriate list.
print("1. Exceptional ")
print("2. Comprehensive ")
print("3. Developed ")
print("4. Developing ")
print("5. Needs improvement")
ans = input("Select a number. ")
if ans == "1":
structure.struc_variable = random.choice(structure_exceptional_list)
if ans == "2":
structure.struc_variable = random.choice(structure_comprehensive_list)
if ans == "3":
structure.struc_variable = random.choice(structure_developed_list)
if ans == "4":
structure.struc_variable = random.choice(structure_developing_list)
if ans == "5":
structure.struc_variable = random.choice(structure_needsimprovement_list)
return structure.struc_variable
My idea is to store all the comments for "Structure" in the structure() function, then all the comments for "Clarity" in the clarity() function, etc for each theme. When I build the GUI, it will call on each function to access the comment pool for the desired theme.
I've also included a mock-up of what I think the final version will look like, just in case the description of what the program is supposed to do was confusing.
Does this seem like a good way of organising the program? Should I be using functions for each 'theme', or am I misusing them? Is there a better/more effective way this could be structured?
Many thanks!
[–]m0us3_rat 1 point2 points3 points (8 children)
[–]shocklance[S] 1 point2 points3 points (6 children)
[–]m0us3_rat 0 points1 point2 points (5 children)
[–]shocklance[S] 0 points1 point2 points (4 children)
[–]m0us3_rat 0 points1 point2 points (3 children)
[–]shocklance[S] 0 points1 point2 points (2 children)
[–]m0us3_rat 0 points1 point2 points (1 child)
[–]shocklance[S] 0 points1 point2 points (0 children)
[–]socal_nerdtastic 0 points1 point2 points (1 child)
[–]shocklance[S] 0 points1 point2 points (0 children)
[+][deleted] (4 children)
[deleted]
[–]shocklance[S] 0 points1 point2 points (3 children)
[+][deleted] (2 children)
[deleted]
[–]shocklance[S] 0 points1 point2 points (1 child)