Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Introduce (human readable) course titles in addition to course IDs #1795

Open
jeflem opened this issue Jun 28, 2023 · 1 comment · May be fixed by #1797
Open

Introduce (human readable) course titles in addition to course IDs #1795

jeflem opened this issue Jun 28, 2023 · 1 comment · May be fixed by #1797

Comments

@jeflem
Copy link

jeflem commented Jun 28, 2023

Courses in nbgrader have the course_id property with several limitations (at least URL safe if used with JupyterHub). Would be great to have an additional property course_title. At the moment course list extension and assignment list extension show course_id to users (instructors and students). Showing a course_title would allow for whitespace, special characters, Unicode aso. in GUI.

Concrete use case: We (a small team at a university) are working on LMS integration of JupyterHub and nbgrader based on LTI. Coming to JupyterHub from the LMS our scripts and tools automatically sync course structures and enrolement lists from LMS to nbgrader. At the moment we have to convert LMS course titles to nbgrader course IDs losing information (if the LMS title is in Chinese, generating an equivalent nbgrader ID is almost impossible). Having identical titles in LMS and nbgrader would improve user experience and acceptance of the system.

Some details/ideas on how to implement this:

  • If running multiple formgrader services on a JupyterHub, one might add something like
    c.NbGrader.course_titles = {
        'course_1': 'Mathematics I for Engineers',
        'course_2': 'Mathematics II for Engineers'
    }
    
    to global nbgrader config file.
  • If running with a local formgrader (no JupyterHub), then
    c.CourseDirectory.course_id = 'testcourse'
    c.CourseDirectory.course_title = 'My Test Course'
    
    in the user's nbgrader config file would be reasonable.
  • The course list server extenion's formgraders API endpoint returns a list of course dicts. Each dict would get an additional item course_title based on above config values.
  • The course list labextension (and also nbextension) then use course_title instead of course_id from the API endpoint's dicts.

I've implemented above ideas and it works quite well. Similar should be possible for assignment list extension (not implemented yet).

If next to me there are other people looking for better course titles in nbgrader, I could make a PR. But not sure whether there are better ideas how to implement such a feature than mine.

@analyticray
Copy link

Looks great. I think it deserves a PR for now.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants