Departmental Standards
Company-Wide
eCornell Styleguide & Branding
Cornell University Branding
Writing and Editing Style Guide
Faculty and Expert Naming Conventions in Courses
Cornell School and Unit Names
Tips for Campus Engagements
LSG
Legal Policies
CSG
Updating Wrike Due Dates
Photography Style Guide
eCornell Mini Visual Style Guide
The Pocket Guide to Multimedia Design Thinking (*as It Pertains to Your Job Here)
Creative Services (CSG) Handbook
Administrative
LSG Meeting Recordings and Notes
Sending Faculty Sign-Off Forms in Adobe Sign
Weekly Faculty Status Emails
Animation/Motion Design
Instructional Design
Required Course Elements
The Pocket Guide to Instructional Design Thinking at eCornell
Adding AER to Canvas
Grading
D&D Newsletter
LSG Newsletter (LSGN) - February 2024
LSG Newsletter (LSGN) - March 2022 Edition
LSG Newsletter (LSGN) - December 2023
LSG Newsletter (LSGN) - October 2021 Edition
LSG Newsletter (LSGN) - June 2022 Edition
D&D Newsletter November 2024
LSG Newsletter (LSGN) - August 2022 Edition
LSG Newsletter (LSGN) - June 2023
LSGN Newsletter April 2023
LSG Newsletter (LSGN) - February 2022 Edition
LSG Newsletter (LSGN) - October 2022 Edition
LSGN Newsletter February 2023
LSGN Newsletter March 2023
D&D Newsletter September 2024
LSG Newsletter (LSGN) - August 2023
LSG Newsletter (LSGN) - March 2024
LSG Newsletter (LSGN) - April 2022 Edition
D&D Newsletter - August 2024
LSGN Newsletter January 2023
LSG Newsletter (LSGN) - October 2023 article
LSGN Newsletter (LSGN) - April 2024
LSG Newsletter (LSGN) - November 2021 Edition
D&D Newsletter February 2025
LSG Newsletter (LSGN) - January 2022 Edition
LSGN Newsletter December 2022
D&D Newsletter April 2025
LSG Newsletter (LSGN) - July 2022 Edition
LSG Newsletter (LSGN) - September 2022 Edition
Course Development
Image Uploads for Inline Projects
How to Install the Firefox Canvas Utilities Extension
Revising a Course/ Creating a Redux Version/ Course Updates
Creating a Perma Link With Perma.cc
Course Content Deletion Utility — Removing All Course Content
Course Names
Requesting High Resolution Video Uploads
Technical Talking Points Template
Writing Discussions: Guidelines for IDs
Online Resources in Credit-Bearing Courses
Hiring Actors for an eCornell Project
Marketing
Operations
Tech
Master Course Template Differences (8675309s)
FeedbackFruits Overview
Non-CSG File Uploads
Mentored Learning Conversion Process and Resources
Doc-Based Master Course Template and Standards (8675309-DOC)
Pedagogical Guidelines for Implementing AI-Based Interactives: AER
New Canvas Accounts for Faculty Partners
Coding Master Course Template and Standards (8675309-CODE)
FeedbackFruits Implementation
Practice Quiz Standards
Hero Image
Platform Training
Administrative Systems
ADP
Google Drive
Downloadables Process
Embed a Document from Google Drive
Adding Google Links to Canvas
File Naming and Storage Convention Standards
Google Drive for Desktop Instructions
Storing Documents in Multiple Locations
Wrike
Wrike System Fundamentals
Field Population
1.0 to 2.0 Wrike Project Conversion
Blocking Time Off in Work Schedule (Wrike)
Wrike Custom Field Glossary
Wrike "Custom Item Type" Definitions
How to Create a Private Dashboard in Wrike
Using Timesheets in Wrike
Importing Tasks into a Wrike Project
Wrike Project Delay Causes Definitions
Setting OOO Coverage for Roles in Wrike
How to Change a Project's Item Type in Wrike
Using Search in Wrike
How to Create a Custom Report in Wrike
@ Mentioning Roles in Wrike
Automate Rules
Using Filters in Wrike
Managing Exec Ed Programs in Wrike
External Collaborators
Wrike for External Collaborators: Getting Started
Wrike for External Collaborators: Views
Wrike for External Collaborators: Tasks in Detail
Wrike Updates
New Experience Update in Wrike
Wrike Course Development Template 2.0 - What's New
Wrike - Course Development Template 3.0 Release Notes
Wrike Process Training
Course Development & Delivery Platforms
Canvas
Development
Adding Custom Links to Course Navigation
Adding Comments to PDFs from Canvas Page Links
Setting Module Prerequisites and Requirements in Canvas
Canvas Page Functionality
Create a New Course Shell From 8675309
Using LaTeX in Canvas
Search in Canvas Using API Utilities - Tutorial
Reverting a Page to a Previous Version
Student Groups
Create Different Canvas Pages
Importing Specific Parts of a Canvas Course
Canvas HTML Allowlist/Whitelist
Understanding Canvas Customizations/Stylesheets
Operations
Discussion Page Standards
How to import a CU course containing NEW quizzes
Canvas LMS: NEW Quiz compatibility
Faculty Journal
Course Content Style Guide
Click-To-Reveal Accordions in Canvas
Course Maintenance Issue Resolution Process
Meet the Experts
Codio
Codio Operations
Managing Manually Graded “Reflect and Submit” Codio Exercises
Codio Structure and Grading for Facilitators
Premade Codio Docs for Ops & Facilitators
Codio Remote Feedback Tools for Facilitators
Developers
Development Processes
Creating a New Codio Course
Creating a New Codio Unit
Integrating a Codio Course into Canvas Using LTI 1.1
Embedding a Codio Unit into Canvas
Setting Up the Class Fork
Jasmine Autograde Unit Testing
Setting Up the Class Fork (LTI 1.3)
R Studio - Exclusion List for R Code
Mocha/Selenium Autograding
Starter Packs in Codio
Configuring Partial Point Autograders in Codio
Launch a Jupyter Notebook from VM
AI Extensions
Program-Specific Developer Notes
Codio Functionality
Jupyter Notebooks
Jupyter Notebooks - nbgrader tweaks
Jupyter Notebooks Style Guide
Creating NbGrader Assignments
Adding Extensions to Jupyter Notebooks
Setting up R with Jupyter Notebooks
Change Jupyter Notebook Auto Save Interval
How to Change CSS in Jupyter Notebook
RStudio in Codio
How To Centralize the .codio-menu File to One Location
Codio Fundamentals for LSG
Using the JupyterLab Starter Pack
Using Code Formatters
Using the RStudio Starter Pack
Conda Environments in Codio
Updating Codio Change Log
Codio Basics: Student Support
eC Facilitator Guide to Codio
Migrating to Updated Codio Courses
Qualtrics
Ally
Adobe
Other Integrations
Pendo Overview
How to Add VitalSource eBooks in Canvas
Enabling Zoom/"Live Sessions" in a Course
Pendo Guide Creation
H5P
Modifying Subtitles in H5P Interactive Videos
Embedding H5P Content Into Canvas
Troubleshooting H5P Elements in Canvas
Inserting Kaltura Videos into H5P Interactive Videos
Adding Subtitles to H5P Interactive Videos
S3
BugHerd
Instructional Technologies & Tools Inventory
Canvas API Utilities
Getting started with the MOP Bot
eCornell Platform Architecture
HR & Training Systems
Product Development Processes
Accessibility
What Is Accessibility?
What Is Accessibility?
Accessibility Resources
Accessibility Considerations
Accessibility Support and Assistive Technology
Structural Accessibility
Accessibility Design and Development Best Practices
Accessible Images Using Alt Text and Long Descriptions
Accessible Excel Files
Accessibility and Semantic Headings
Accessible Hyperlinks
Accessible Tables
Creating Accessible Microsoft Files
Mathpix: Accessible STEM
Design and Development General Approach to Accessibility
Integrating Content Authored by a Third Party
Planning for Accessible Tools
Accessibility Considerations for Third Party Tools
Studio Accessibility
Designing for Accessible Canvas Courses
Accessibility: Ongoing Innovations
Course Development
Planning
Development
0. Design
1. Codio Units
1. Non-Video Assets
3. Glossary
4. Canvas Text
4. Tools
4. Tools - Wrike Task Definitions
3. Review And Revise Styled Assets
ID/A to Creative Team Handoff Steps
General Overview of Downloadables Process
Course Project: Draft and Final
Excel Tools: Draft and Final
eCornell LSG HTML Basics
1. Non-Video Assets - Wrike Task Definitions
2. Video
Multifeed Video
2. Video (Standard) - Wrike Task Definitions
Studio Tips
Tips for Remote Video Recording Sessions
Who to Tag for Video Tasks
3. Animation
3. Animation - Wrike Task Definitions
2. Artboard Collab Doc Prep
6b. Motion Design Review and Revise
Who to Tag for Animations Tasks
3. Artboard Collab Process Walkthrough
DRAFT - FrameIO Process Walkthrough
Motion Contractor Guide for IDAs / IDDs
Requesting / Using Stock Imagery (Getty Images and Shutterstock)
3. Ask the Experts
5. On-Demand Conversion
5. Review
5. Review - Wrike Task Definitions
1. Prep Course for Reviews
2. Conduct Student Experience Review
3. Implement Creative Director Edits
3. Implement IDD Edits
3. Implement Student Experience Review Edits
4. CSG - Revise Tools Export 1
5. Conduct Faculty Review
6. Implement Faculty Edits
7. Conduct Technical Review of Course (STEM-only)
Technical Student Experience (Tech SE) Review Process
2. Conduct IDD or Sr ID Review
6. Alpha
6. Alpha - Wrike Task Definitions
Alpha Review Process
Prepare a course for Alpha review
Schedule & Conduct Alpha Triage Meeting
7. QA
7. QA - Wrike Task Definitions
1. Prep Course for QA
2. Copy Edit Captions
2. Copy Edit Course & Files
4. Conduct Content QA of Course
4. Final Creative Review and Export
Adding Chat With Tech Support to Course Navigation
5. Implement QA Edits
Working With Video Captions That Contain Special Characters
Copy Edit Captions in SubPLY
Creating a Course Style and Settings Guide
Copy Editing Content in Frame.io
1. Complete Dev to QA Checklist
Copy Edit Captions in 3Play
Tag a Video for Transcription by 3Play
Course QA Checklists
8. Deployment
8. Deployment - Wrike Task Definitions
1. Finalize Master Version of Course
2. Create & Add Course Transcript (CT) to Course
Replace a Master -M With a Redux Version of the Course
3. Create -T (Training Course) and Associate With Master Blueprint
Canvas Blueprint Course Functionality
Project Management in Wrike
Managing Project Reporting in Wrike
Managing Task Needs/Schedule in Wrike
Adding Tasks
Comments and Communication
Statuses
Updating Task Start and Due Dates
Predecessors
Durations
Rollups
Calculating Project Schedule by Deadline in Wrike
Creating Course Project Plans in Wrike
Setting Custom Capacity for Resources
Customizing Effort in a New Project Plan
Marking Projects Complete in Wrike
How to Set Up Workload Charts to Track Effort in Wrike
For-Credit Considerations
1-Sheet Population
Post-Development
AI Simulations
Program Facilitation & Operational Guidelines
Data Science
Facilitator Resources
Canvas Navigation
Adding Events to the Course Calendar
Navigating Canvas and the Dashboard
How Do I View Previous Courses I Have Taken or Facilitated?
Why Am I Receiving Duplicate Canvas Emails?
How Do I Edit My Canvas Profile?
Send Students a Direct Message on Canvas
Adding Notes to Canvas Gradebook
How Do I Send Students Nudges from the Gradebook?
Overview of 2024 Changes- Course Layout and Structure
How Can I Update My Canvas Notification Preferences?
Ursus Navigation
How Do I Access My Offer in Ursus?
How Do I Edit My Ursus Profile?
How Do I Request Time Off (Blackout Dates)?
How Can I Request to Learn More Courses?
Live Sessions
Enabling Student Use of Closed Captioning in Zoom
When Should I Schedule My Live Sessions For?
Changing Live Session Date and Time After Created with Facil Tool
Help! I Need to Reschedule a Live Session
Live Session Information page
Set up Live Sessions with the Facil Tool
Combining Live Sessions with Facil Tool
Course Set-Up
Course Set Up: Getting Ready for Live Sessions
Recording and Posting a Welcome Video
Course Set Up: When can I begin to edit my course?
Course Set Up: Reviewing Due Dates
Course Set Up: Reviewing Announcements
What Do I Need to Do to Make Sure My Course is Set Up Correctly?
Blurring Background During Video Feedback with the Speedgrader
How Do I Customize My Course Sections?
Course Announcements and Messages Templates
Facilitator Focus
Zoom and other Technical Support
Reporting Spam/Phishing
How Do I Set Up My Zoom Account?
Support Resources for Facilitators
Common Access/Login Errors
Live Session/Zoom Trouble Shooting Guide & Technical Readiness
How to Upload Videos to Zoom On-Demand
Student Survey FAQs
How Do I Save and Refer Back to Zoom Recordings?
How Do I Find My Personal ID Meeting link in Zoom?
Benefits as an eCornell Employee
Do I Have Access to Microsoft Office as a Cornell Employee?
Taking Courses as a Student
Professional Development Benefit
Student Success
Help! My Students Can't View a Video Within My Course
Extensions and Retakes
Policies and Navigation Resources for Students
Symposium Access Extension- Fall 2025
Students enrolled through special groups: Corporate and VA
Unique Circumstances for Student Extensions and Retakes
Communicating with Students via Canvas
Can I Provide Students with a Letter of Recommendation?
Understanding and Addressing Instances of Plagiarism
Support Resources for Students
Understanding and Addressing Use of AI
Help! My Student is Having a Hard Time Uploading a Video
Unique Student Situations
I Have a Student Requesting Accommodations- How Should I Proceed?
Canvas Mobile App
Messaging Students via the Canvas Mobile App
Setting up and Navigating the Canvas Mobile app
Setting up Push Notifications on Canvas Mobile
Canvas App Features for eCornell courses
New Facilitator Onboarding and Quick References
Facilitator Onboarding at eCornell
Why Do I Have Multiple eCornell email and Canvas Accounts?
Quick reference: Systems and Accounts we use at eCornell
Quick reference guide: Key eCornell Personnel
How do I Log Onto Canvas and Access FACT101?
How Do I Add eCornell to My Email Signature?
Training Course Review & Facilitation Authorization
What to Expect During Live Shadowing Experience
Setting up Email Forwarding
Facilitator Expectations and Grading Help
Changes in Grading Scheme: Incomplete/Complete and 75% to 85%
New (Embedded/Inline Format) How do I grade Course Projects?
Navigating the Gradebook and Accessing the Speedgrader
Quick Reference: Sort assignments in the Speedgrader
How do I Grade Quizzes?
(Old format) How Do I Grade Course Projects and Add Annotations?
Rubrics for Effective Facilitation
Is There an Answer Key for my Course?
How to Monitor and Promote Student Progress
How Do I Grade Discussions?
Adding an Attempt to a Course Project
How Quickly Do I Need to Provide Grading to Students?
Payroll and the Monthly Scheduling Process
Codio References
Manually Graded “Reflect and Submit” Codio Exercises
Codio Quick Resources
Codio Reference: Embedded quiz questions (H5P)
Codio Reference: Checking for Completion Status
Codio Reference: Manually Graded Exercises
Codio Reference: Finding Solution Code in Codio Courses
Codio Remote Feedback Tools
Codio Reference: Ungraded exercises
Codio Reference: Autograded Exercises
Archived
Table of Contents
- All Categories
- Platform Training
- Course Development & Delivery Platforms
- Codio
- Developers
- Codio Functionality
- Using the JupyterLab Starter Pack
Using the JupyterLab Starter Pack
Updated
by Brock Schmutzler
JupyterLab is an open-source interactive development environment (created by Project Jupyter) that provides a next-generation Jupyter Notebook interface. To name a few improvements, JupyterLab has a new internal API, an accessible extension ecosystem, an integrated file tree and terminal, and a built-in table of contents for navigating Jupyter Notebooks (instead of having to install an extension). Overall, JupyterLab is very pleasant to use and the same kernels you would need for Jupyter Notebooks work agnostically with JupyterLab.
Creating Codio Assignments
The easiest way to create a Codio assignment with a JupyterLab environment is to use eCornell's JupyterLab Starter Pack because it has "starter files" pre-loaded in Codio's workspace, in addition to running eCornell's JupyterLab and RStudio stack called Ubuntu 22.04 + JupyterLab + RStudio (built from the Codio-certified JupyterLab stack for Ubuntu 22.04 LTS). The JupyterLab and RStudio stack includes several Python packages (e.g., numpy, pandas, seaborn) and R packages (e.g., ggplot2, tidyverse) that are commonly used for data science projects. The JupyterLab Starter Pack files are stored in /home/codio/workspace, whereas the JupyterLab stack is saved at the /home/codio level.
To use eCornell's JupyterLab Starter Pack, add a new Codio assignment by following these steps:
- Select Add assignment > New

- Select the Starter Pack option as your starting point and then click browse

- Search All starter packs for "JupyterLab Starter Pack"

- Change your assignment name appropriately and then click Create

Editing Codio Assignments
After creating a new assignment, you will be taken to a screen that looks something like this:

To edit an assignment:
- Click the right sidebar to expand the collapsed Guide page

- Click Edit (upper right) to enter the Codio workspace

- Make your changes and then click Publish in the top Codio menu bar (if the green Publish button is available) or select Education > Publish Assignment from the Codio menu

.codio-jupyter file is in the Codio workspace but there is no Jupyter Notebook (i.e., notebook.ipynb file) in the workspace, you will receive a publishing error because the presence of .codio-jupyter tells Codio to expect a Jupyter Notebook when publishing the assignment.Adding Jupyter Notebooks
To add a Jupyter Notebook to your Codio workspace:
- Drag and drop your Jupyter Notebook (e.g.,
Demo_Notebook.ipynbfile) into the workspace directory of the Filetree on the left side of your screen, or you can right-click the assignment name (e.g., Demo Assignment) and select Upload...
- Click the Layout button in the upper-right corner of the Guide Editor and put the name of your Jupyter Notebook file (e.g.,
Demo_Notebook.ipynbfile) in the FILENAME field of Jupyter Lab tab in the Open Tabs section
- Click SAVE AND CLOSE SETTINGS

Creating New Stacks
When you create an assignment using eCornell's JupyterLab Starter Pack, the assignment comes with an underlying software stack called Ubuntu 22.04 + JupyterLab + RStudio. Since each series of courses should have its own stack, it is important to create a new stack for your courses by following the steps below.
Before reading the steps below, please be advised of the following warning:
- Go to Project > Stack > Create New...

- Make sure New Stack is selected, give your stack a name that matches the series of courses (e.g., DEMO120s Stack), select Public, and make eCornell the owner

- Click CREATE and click YES when prompted with the CHANGE STACK CONFIRMATION dialog box. After clicking YES, you should see a message saying Stack build in progress. If you receive a strange error message, click CREATE again and the stack build should begin this time.


- After your stack has been created, go to Project > Stack > Settings... to make sure the assignment is using the new stack you created. If your new stack is the CURRENT STACK for your assignment, proceed to step 6. If the CURRENT STACK for your assignment is still Ubuntu 22.04 + JupyterLab + RStudio, complete step 5 before going to step 6.

- If the CURRENT STACK for your assignment is not the new stack you created, make sure you change the CURRENT STACK to your new stack before installing or updating any software. After changing the CURRENT STACK to your newly created stack, proceed to step 6.
- Click the drop-down menu to search for your new stack

- Search for your new stack (e.g., DEMO120s Stack)

- Select your new stack (e.g., DEMO120s Stack) and click SAVE

- Confirm the stack change by entering the confirmation code in the CHANGE STACK CONFIRMATION dialog box and reload your browser after you receive a message saying Stack updated successfully


- Click the drop-down menu to search for your new stack
- Update and/or install software on your new stack and then create a new version by going to Project > Stack > Create New... and selecting New Stack Version. Make sure to write a concise and descriptive CHANGELOG entry.

- Go to Project > Stack > Settings... to confirm that a new stack version has been created and make sure that VERSION is set to Use the latest version

- Publish your assignment with the new stack version and write a concise and descriptive CHANGELOG entry. It may take a few minutes for the publishing process to complete and return a SUCCESSFUL message.


Configuring Workspace Starter Files
The starter files in /home/codio/workspace are:
.guides/load.js.guides/styles.css.codio.codio-jupyter.codio-menu.settingsnbgrader_config.py
For most use-cases, you will not need to modify any of these files. However, if you need modified versions for a specific course, high-level instructions are provided in the subsections below. When in doubt, please contact a member of the Instructional Technologies Group (ITG) for assistance.
.codio-jupyter file so that NbGrader does not process the Jupyter Notebooks in your Codio workspace. Even though it is not necessary to remove the .codio-jupyter file, doing so is beneficial because it will take less time to publish your assignment (since the NbGrader scripts are not running in the background). If you delete .codio-jupyter from your workspace, you should also remove the nbgrader_config.py file — otherwise, students will see the nbgrader_config.py file in their workspace when they open the assignment in Canvas. (Students do not see nbgrader_config.py when .codio-jupyter is present.).guides/load.js
The file .guides/load.js is a script that pulls guide text from AWS S3. It looks like this:
$("#guide").load("https://ecornell.s3.amazonaws.com/Codio/Reuseables/JupyterLab/JupyterLab_Guide.txt");If you need to modify the text on the collapsable Guide page, copy the text file JupyterLab_Guide.txt from the S3 folder Codio/Reusables/JupyterLab and put a modified version in a folder on S3 that is specific to your series of courses and replace the link in load.js — e.g.,
$("#guide").load("https://ecornell.s3.amazonaws.com/Codio/Courses/DEMO120s/JupyterLab_Guide.txt");JupyterLab_Guide.txt file in the S3 folder Codio/Reusables/JupyterLab because those changes will propagate to ALL courses whose guide text is linked to that file. The only people allowed to modify Codio/Reuseables/JupyterLab/JupyterLab_Guide.txt are members of the Instructional Technologies Group (ITG). Please contact ITG if you find a typo or believe the text should be changed..guides/styles.css
The file .guides/styles.css imports a CSS stylesheet from S3:
@import "https://ecornell.s3.amazonaws.com/Codio/CSS/styles.css";
The stylesheet Codio/CSS/styles.css controls the look of HTML elements in the Codio guide and is common to most Codio units developed by eCornell.
styles.css file in the S3 folder Codio/CSS because those changes will propagate to ALL courses linked to that file. In the unlikely scenario that you need to include additional styling elements, you can add them below the import statement in the .guides/styles.css file for your course-specific Codio units..codio
The .codio file contains code that configures the JupyterLab preview button that appears in the Codio menu bar across the top of your screen:

As shown in the image above, the contents of .codio look like this:
{
// Preview button configuration
"preview": {
"JupyterLab": "https://{{domain3000}}/lab"
}
}Clicking the JupyterLab preview button opens an instance of JupyterLab while you are in Edit mode:

You have access to relevant JupyterLab file by opening the File Browser (click the folder icon):

Note that this JupyterLab preview tab in Edit mode is different than what you see when you are in Preview mode (i.e., when you click the Preview button in the upper-right corner of the Guide Editor tab):

Preview mode will show you what the Codio unit looks like when it is embedded in Canvas:

In particular, note that the open tab is labeled Codio Jupyter Lab (the name is partially cutoff in the image). This indicates that the Jupyter Notebook is being served through Codio's own JupyterLab environment because you have specified the notebook file as an Open Tab with a TYPE of Jupyter Lab, as shown in the Adding Jupyter Notebooks section of this article. You can think of the Codio Jupyer Lab environment as a wrapper that ensures JupyterLab is properly integrated with Codio (without having to configure any system level settings manually). More on this aspect in the Creating NbGrader Assignments below.
.codio-jupyter
The .codio-jupyter file is intentionally blank — its main purpose is to tell Codio to use NbGrader, but it can also be used to configure NbGrader. For more details, please see the Codio documentation on NbGrader. That being said, here is a short synopsis:
- The presence of
.codio-jupyterin/home/codio/workspacetells Codio to process all the Jupyter Notebooks in your workspace using the JupyterLab extensionnbgrader(more on NbGrader in the last section of this article). - The
.codio-jupyterfile can be left blank — with all the NbGrader configuration settings specified in thenbgrader_config.pyfile — but you can also configure NbGrader by writing code in.codio-jupyter. - Settings in
nbgrader_config.pytake precedence over configuration settings in.codio-jupyter.
.codio-jupyter blank and using nbgrader_config.py for all configuration settings because doing so offers more flexibility in your configuration (e.g., you can make custom pre-processors) and settings in nbgrader_config.py override those in .codio-jupyter..codio-jupyter file from the Codio workspace. Codio uses the presence of /home/codio/workspace/.codio-jupyter to trigger NbGrader, so removing .codio-jupyter speeds up publishing time because Codio does not run NbGrader scripts in the background. If you remove .codio-jupyter, you should also remove the nbgrader_config.py file — otherwise, students will see the nbgrader_config.py file in their workspace (students do not see it when .codio-jupyter is present)..codio-menu
The .codio-menu file controls which menu options are shown to students in Canvas:
{
"Logo": false,
"Codio": false,
"Project": {
"Restart Box...": true,
"Resync File Tree": false,
"Export as Zip": false,
"Settings...": false,
"Stack": false,
"Permissions...": false,
"Box Info": false,
"Reset Box...": false,
"Create Copy...": false,
"Share...": false,
"QR Code for Preview URL": false,
"Delete...": false,
"Exit": false
},
"File": false,
"Edit": false,
"Find": false,
"View": false,
"Tools": false,
"Education": {
"Mark as Completed": true,
"Code Comments": false,
"Earsketch": false,
"Jupyter Lab": false
},
"Help": false,
"Run": false,
"Debugger": false,
"Status": false,
"Preview": false,
"Toggle sections list": false,
"Online": false
}The configuration that comes with the JupyterLab Starter Pack only shows the options Project > Restart Box... and Education > Mark as Completed in the top Codio menu bar. These are typically the only options that are needed for a Codio unit using JupyterLab because all student work is done within the JupyterLab environment.
If no auto-grading is necessary and facilitators will not be reviewing the work (e.g., in an ungraded practice activity), you can disable the Education > Mark as Completed button in the ASSIGNMENT settings (Overview > Settings) by toggling on the option DISABLE MARK AS COMPLETED (make sure to click the Save Changes button afterwards):

If you need to expose more Codio menu options to students, you can follow these steps:
- Copy /Codio/Reusables/JupyterLab/codio-menu.txt
- Add
codio-menu.txtto a course-specific S3 folder (e.g.,/Codio/Courses/DEMO120s) - Modify the content of your course-specific
codio-menu.txtfile as needed - Modify the file
/home/codio/startup.shas directed in How to Centralize the .codio-menu to One Location (steps 3b, 4b, and 5) - Create a new course-specific stack version (DO NOT create a new version of Ubuntu 22.04 + JupyterLab + RStudio)
For example, here is a .codio-menu.txt file that would also expose the Project > Export as Zip menu option:
{
"Logo": false,
"Codio": false,
"Project": {
"Restart Box...": true,
"Resync File Tree": false,
"Export as Zip": true,
"Settings...": false,
"Stack": false,
"Permissions...": false,
"Box Info": false,
"Reset Box...": false,
"Create Copy...": false,
"Share...": false,
"QR Code for Preview URL": false,
"Delete...": false,
"Exit": false
},
"File": false,
"Edit": false,
"Find": false,
"View": false,
"Tools": false,
"Education": {
"Mark as Completed": true,
"Code Comments": false,
"Earsketch": false,
"Jupyter Lab": false
},
"Help": false,
"Run": false,
"Debugger": false,
"Status": false,
"Preview": false,
"Toggle sections list": false,
"Online": false
}.settings
The .settings file controls the text editor settings of the Guide Editor. This file is automatically generated by Codio when the Guide is created — you will not need to make any changes to the .settings file.
nbgrader_config.py
The nbgrader_config.py file contains all (or most) of the configuration settings for NbGrader:
from nbgrader.preprocessors import NbGraderPreprocessor
class ClearTracebacks(NbGraderPreprocessor):
"""
Custom preprocessor to either remove traceback messages (i.e., `output["traceback"] = []`)
or replace them with another message (i.e., `output["traceback"] = ["replacement_message"]`).
"""
def preprocess_cell(self, cell, resources, cell_index):
# Remove or replace traceback messages in graded cells.
if "nbgrader" in cell.metadata and cell.metadata.nbgrader.grade == True:
for output in cell.outputs:
if "traceback" in output:
output["traceback"] = ["Traceback messages have been hidden for graded cells."]
# Remove or replace traceback messages in student answer cells.
#if "nbgrader" in cell.metadata and cell.metadata.nbgrader.solution == True:
# for output in cell.outputs:
# if "traceback" in output:
# output["traceback"] = ["Traceback messages have been hidden for solution cells."]
return cell, resources
# Retrieve the nbgrader configuration.
c = get_config()
# Configuration for the student version of the notebook that opens in Canvas.
c.ClearHiddenTests.begin_test_delimeter = "BEGIN HIDDEN TESTS"
c.ClearHiddenTests.end_test_delimeter = "END HIDDEN TESTS"
c.LockCells.lock_all_cells = False
c.LockCells.lock_grade_cells = True
c.LockCells.lock_readonly_cells = True
c.LockCells.lock_solution_cells = True
c.ExecutePreprocessor.interrupt_on_timeout = True
c.ExecutePreprocessor.timeout = 180
c.ClearSolutions.code_stub = {
"julia": "# YOUR CODE HERE\nerror(\"Your code is missing.\")\n# END OF YOUR CODE",
"python": "# YOUR CODE HERE\nraise NotImplementedError(\"Your code is missing.\")\n# END OF YOUR CODE",
"R": "# YOUR CODE HERE\nstop(\"Your code is missing.\")\n# END OF YOUR CODE",
}
# Clear hidden tests and tracebacks from the student feedback report
# that students see after their assignments are Marked as Completed.
c.GenerateFeedback.preprocessors = [
"nbgrader.preprocessors.GetGrades",
"nbconvert.preprocessors.CSSHTMLHeaderPreprocessor",
"nbgrader.preprocessors.ClearHiddenTests",
ClearTracebacks,
]
If you want to remove traceback messages from student answer cells in Codio's student feedback report, uncomment the four lines of code below the comment # Remove or replace traceback messages in student answer cells (not recommended for most use cases). If you do not want to clear hidden tests and tracebacks from Codio's student feedback report, comment out the last six lines. For more details, see the NbGrader documentation on the nbgrader_config.py file.