Coder Social home page Coder Social logo

presnick / runestoneserver Goto Github PK

View Code? Open in Web Editor NEW

This project forked from runestoneinteractive/runestoneserver

26.0 26.0 46.0 171.5 MB

Interactive books for computer science

Home Page: http://interactivepython.org

License: Other

CSS 2.28% JavaScript 7.87% Python 15.40% HTML 8.16% Shell 0.06% Dockerfile 0.04% C 0.51% Java 0.92% C++ 64.78%

runestoneserver's People

Contributors

aerenchyma avatar ascholerchemeketa avatar bisterj avatar bjones1 avatar bnmnetp avatar bnmtest avatar bryar-frank avatar conzty01 avatar cortesj avatar davidranum avatar ericsonga avatar flysaiah avatar gardhi01 avatar hangde01 avatar hewner avatar imanyz avatar isaacdontjelindell avatar ivipul avatar mcoirad avatar millro04 avatar nickdotreid avatar pearcej avatar presnick avatar qasema avatar runestonetest avatar sahi1l avatar thendo-rambane avatar victornorman avatar vqum avatar vsoch avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

runestoneserver's Issues

Max points per problem

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)

Requirements for Student Profile

Here are the features I'm planning on building for a student profile. Please add to this list or help me prioritize

  1. List of assessment questions answered
  2. List of recent active code saves
  3. List of assignments completed and grades
  4. Last login (?)
  5. Condensed user profile (picture, contact information, section)

Bulk upload for comments really brittle

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

Flag for instructional staff as member of course

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

Practice as component of assignments

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.

Only one logged in window at a time

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?

Allow multiple sections to make the deadlines system work

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

Flags for assignment release

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.

File reading difference in grading interface vs psets

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.

Mark text-enter fields where content has been saved

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

Documentation!

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.

Pick a question to present

  1. Add a top-bar menu item titled "Practice".
    a. (wait for response from Brad on how to do that.)
  2. When the user clicks on "Practice", open a page with:
    a. a suggested chapter/subchapter to practice
    b. a tree picker that lets the user pick one chapter/subchapter, borrowing the tree picker widget used in the admin interface for creating assignments.

Add useful buttons

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)

Create API for students

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.

Auto Grader

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?

Bug in New Grader

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

Unit test cases

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.

Add modal pop-up for grade section

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.

Add a revert possibility

Students could use ability to revert to their last saved code when they type new things and save over what they had before

What to merge back to Master

Student Biography

I think this is an ok piece of code -- I don't know if we want to bring it back to bmiller.

Sections Code

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

Grading Assignment Interface

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

Student Progress Page

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.

All Progress Page

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.

Reading Response Widget

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.

User IDs vs Usernames

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 functions2.rst, explain difference between return and print

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.

Separate scores and code data

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

Need to document dependencies of names

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)

show grades for readings on student page once grades are released

In assignments/doAssignment:

Handle readings assignments analogous to questions:

  • create a query readings_scores to get the student's scores on the readings (maybe have it also record the actual number of activities completed when grading?)
  • fix readings query to also get the points and the number of activities required (and the number of potential activities would be nice, but not currently stored in the DB)
  • use the chapter and subchapter fields to generate the link to the url; showing the number of required activities, number of points possible, and student's points.
  • get rid of all the existing stuff for showing whether the student started reading the chapter.

Creating a table for active code

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:

  • make it really easy to add active coding exercises to assignments
  • make it so we can cache question text and auto grader test assertions

thoughts?

Make Gradeable deep links into Runestone from Canvas

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

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

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

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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.