presnick / runestoneserver Goto Github PK
View Code? Open in Web Editor NEWThis project forked from runestoneinteractive/runestoneserver
Interactive books for computer science
Home Page: http://interactivepython.org
License: Other
This project forked from runestoneinteractive/runestoneserver
Interactive books for computer science
Home Page: http://interactivepython.org
License: Other
Have a field for max points/problem, and have it show in student progress page if they got full credit
(Any other defaults on assignments like this could be related, though separate issues)
Here are the features I'm planning on building for a student profile. Please add to this list or help me prioritize
Some people have trouble marking as completed.
Some exercises have the same acid ~ meaning students are losing code or have the code show up in the wrong problem.
We might want to change the builder routine to check if acid has already been used
example:
https://programsinformationpeople.org/runestone/static/pip/Selection/selection.html#q1
and
https://programsinformationpeople.org/runestone/static/pip/Files/files.html#q1
(pip as default?)
Splits string on commas and takes last element regardless, rather than dealing with a CSV properly. This breaks all comments in mass-upload that include commas and requires manual fixing.
(I will fix this, since I fix-broke it initially, but anyway it should be fixed eventually.)
Have cursor start in the grade box instead of the comment box
former students who become IAs for SI 106 affect score measures of spread (not a lot, but every data point adds something) -- should be able to e.g. if student not in instructional_staff or something
We will soon have a new "practice" feature that presents a review question to the student based on a spaced repetition algorithm.
An instructor should be able to assign practice as a graded (or non-graded) activity. This could just be an extra section of an assignment. It should specify the starting date and ending date, the number of practice questions required to get credit for a day, the number of days required to get full credit, and the points.
Grading would be to count the number of days where the required number of questions were attempted, divide by the max days to get percentage of full credit and pro-rate the total points by that percentage completed.
Students can only have one logged-in window opened (same for instructors). If they click a link from the textbook to another part of the textbook, they can't save code in the new open window, but they expect to be able to. Cookies?
Nick: I think you're currently disallowing students to be in multiple sections. But I think you'll need to allow that, so that they can be in the main lecture section as well as in a discussion section.
Here's how the assignment deadline system works:
First, create the sections, one for each discussion and one for the main lecture, and add students to the main lecture and to one fo the discussions.
Then, (taken from ajax.py)
# ## check if there is a deadline for this exercise, and if it has passed
# INSTRUCTIONS:
#1. Decide a prefix to use for all the graded actex exercises for a week.
# For example, name the exercises week2_1, week2_2, week2_3, etc.
#2. Insert a row in the table pipactex_deadline, using the runeston/appadmin web interface. Fill
# in with the prefix. For example, week2. Or reading3.
# a. Fill in the "deadline" field.
# b. Pick the section it applies to.
# Note: for readings, you'll have to insert a separate row for each section
Releasing grades is not strictly a binary -- if grades are computed and released, and then changed and computed, they must be released againf or students to see any new grade change or comment. Flag should disappear when student can no longer see the most recent updates.
and document
Still want to add new code runs to the history, and show history for this page load, but when the page is loaded, should start with no history.
File reading is slightly different in grading interface than in problem sets. An extra blank line somewhere?
We noticed that the last file line wasn't getting 'seen' at all (not in the .readlines() generated list, etc) in the grading interface, probably related to this.
I don't think we need to go all the way to auto-load, but maybe there's a way to change the color of the box (accessible color...) or put some flag if there's previously saved content to avoid accidental overwriting that isn't too expensive. Something I'd like to look into, might decrease initial confusion
Students can sometimes access the problem set answers from Fall 2014, the pip2 session.
We need better usage documentation on top of developer documentation, so it's easier to hand this SI 106 system at least off to new people without knowledge stored only in people's brains.
Incl. clearing up of confusing terminology in interface and setup instructions.
Add compute/release/other buttons where it makes sense to -- there are places you want to click things and can't, and it'd be great if they were fixed (but not high priority)
Can you do something similar for the assessments that you did for the assignments, so I can see them grouped by chapter?
I wanted to log this idea before it completely slipped my/Jackie's mind(s).
We were thinking it would be fun for students to allow them access to their own db.useinfo data, which we would return in JSON format.
I know we are planning to wrap this into a visualization on a student's progress page, but I thought this might be a fun secondary use to allow.
Please add thoughts below.
Now that we are starting to have student's submit work - where is the auto-grader?
Does code for this exist already? Are we going to implement this?
When looking at problem based view, many grades (scores) are displayed as None - this isn't the same for each row - so -- something is werid
Students find bugs/break cases all the time, I would like some unit tests for more of these. This comes after a lot of this other stuff in priority but I'd really like to do it. Someday I'll find this time.
How students examples are shown in assignments is really screwy. The "Grade" button show/hides a div (and is completely unusable).
The "Grade" button should launch a modal window.
Students could use ability to revert to their last saved code when they type new things and save over what they had before
I think this is an ok piece of code -- I don't know if we want to bring it back to bmiller.
I do think having sections for courses is a good contribution. I think it can be integrated and ignored for most parts of the system. So I think this is a solid contribution -- but it might be nice to rework the form code for editing and creating sections, and find a nicer spot for this code to live (currently on instructor's page; might be better on the progress page).
Previous interface: list of all activecode IDs.
Our interface: create assignments with grade types; assignments have problems; click grade to assemble all the problem grades into an assignment grade; use type and checkmark types; mass grading with CSV input;
I like our grading interface better than the original. I think it would be nice to keep this and merge it back.
The only 'feature' that we don't support is ad hoc grading of problems (not assignments). Currently, you grade all the problems for one assignment. I think we could easily build an interface where an instructor can search for a problem ID and grade according to that.
I'd like to add some more controls to grading, like removing assignments for students, or changing the droppable assignments for assignment types...
I think this a super useful piece of feedback for students. I would be nice to have some metrics for them to see where they are progressing.
Would be great to have a page where all students grades or current activity is listed -- this doesn't really exist. This exists in the list_assessments part of the existing interface, but I think we could do better by adding simple statistics to the top of the grades page.
What we have is just an index to the students and the assignments; would be nice to show students' grades there, and perhaps stats about the problem sets. Could also be a way to get feedback on what students have done before class.
I made a sphinx widgety thing that does reading responses correctly. It also does things such as loading user responses, and updating the interface for logged in users or not. Never made it into pip, but could be incorporated now.
I'd like to change how skulpt loads through out runestone ~ but maybe this is a contribution I should make directly back to BMiller ~ I know that how it currently loads and displays data to users using the textbook drove students crazy. This is not implemented yet.
The system should use user_ids to bind assignments to other things -- web2py makes doing data migrations a pain in the arse -- if we could figure out a sane way to move the data over, then I think this would be useful -- maybe adding a new column in db.code for user_id. Data migration of existing data may be hard.
In https://programsinformationpeople.org/runestone/static/pip/Functions/functions2.html,
func2-3, correct answer is just c, which is handled correctly, except when you click "Check me", and it colors c,d in green.
When an expression evaluates to a value, including when a function returns a value, there are three things that might happen to the value:
-- show it to the user (print)
-- use it as part of a more complex expression
-- save it for later use, either by assigning to a variable, or adding to a data structure like a list or a dictionary.
Print just shows things to the user. Return makes it available for one of the other two uses.
scores on problems and problem code themselves are currently part of the same model, should be separated so grades can be more easily computed/wiped/changed
that said, need revert possibility along with that + some other flagged-or-something way of telling when someone has changed something if a deadline is re-opened, e.g. W15 grading amnesty in the first two weeks. (other things that would come up as a result of this?)
overall: big deal; includes dangerous potential of data loss
tied to an easier backup capability??
Assignment names depend on what? Problem names within assignments depend on what? (For accurate links, etc. Should at least document which must be the same for efficiency before they are required to be the same in the database (more potential to mess something up in development)
In assignments/doAssignment:
Handle readings assignments analogous to questions:
I'm thinking of getting paver to manage a table of active code IDs. I'm not 100% sure if paver will do this ~ but I think it might...
the rational for this would be to:
thoughts?
Add two columns to grades table in models/grouped_assignments.py
a. lis_result_sourcedid # guid for the student x assignment cell in the Canvas gradebook
b. lis_outcome_url # web service endpoint where you send signed xml messages to insert into gradebook; guid above will be one parameter you send in that xml; the actual grade and comment will be others
Change controllers/lti.py to
a. accept query parameters indicating deep link to the assignment page
i. find (or insert) the assignment object
ii. copy lis_result_source_did and lis_outcome_url into correct record (probably create it) of grades table.
iii. redirect at end to the deep link
When you save a grade, use the lis_outcome_url to send it to Canvas, appropriately signed; same key and secret currently used in lti.py for authentication (Get csev to help with this)
-- Write a python modeled on the php function at https://github.com/tsugiproject/tsugi-php/blob/03972d765bd7a27b3b0c87ed9a931dde415e89fa/src/Util/LTI.php#L491
-- signing modeled on https://github.com/tsugiproject/tsugi-php/blob/03972d765bd7a27b3b0c87ed9a931dde415e89fa/src/Util/LTI.php#L387
Construct the URLs in canvas inside the assignments tool. Submission type = External Tool.
-- For example https://106w18.learningpython.today/runestone/lti?assignment_id=foo
-- lis_result_source_did will be sent automatically, lis_outcome_url also.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.