Course⬆︎Up
Micah Taylor
About me
- Professor at Rose-Hulman
- Computer Scientist, educator, and developer
- Average recall ability
- Average development ability
- Average academic workload
What is Course⬆︎Up?
- A language to describe courses
- Create content
- Share materials
- Analyze changes
- Reuse freely
Overview
- Previous work
- Language overview
- Results
- Limitations
Previous Work
- Can be difficult to move materials to new LMSs
[Coates, et al. 2005, Twakyondo et al. 2012] - Domain Specific languages (DSL) have been very successful
[Deursen, et al. 2000]- Markdown
- MATLAB
- LaTeX
- GLSL, HLSL, Metal
- R Markdown
- Code sharing and coding communities have become very robust
[Dabbish, et al. 2012]
Course Development DSL
- Define a new DSL for developing courses
- Focus on
- Human readability
- Location flexibility
- Comparability (diffing)
- Automation
Basic Language Structure
-
Course hierarchy from file arrangement
-
Global configuration file
-
Materials in DSL
- Examples
-
Export materials to desired LMS
Course Hierarchy
- Developer arranges material using file system tools
- Allows materials to be easily moved
Homework1/content.md
/matrix.png
Homework2/content.md
/example.js
/sine_wav.mp3
Quiz1/content.md
Quiz2/content.md
config.yaml
schedule.md
Global Configuration
- YAML file defines global settings
CourseTitle: "Sample CourseUp Course"
Resources:
- ResourceName: Schedule
ResourceURL: /
- ResourceName: Syllabus
ResourceURL: /syllabus/
FirstCourseDay: 2016-08-10
LastCourseDay: 2016-12-04
Breaks:
- LastBeforeBreak: 2016-10-12
FirstAfterBreak: 2016-10-15
- Common resources (links, etc.)
- Course start and end dates
- Weekly schedule
Course DSL
- Based on Markdown and LaTeX
- Extensions for courses
- Math symbols
- Solutions
- Pagenation
- Calendar management
DSL - Commands
- All markdown commands
- $$ LaTeX math display mode
- \input(...) Include file for parsing
- \ifsolution Conditional solution reveal
- \pagebreak Insert break in paged content
- \inputbox(...) Insert answer space
- \calendar Enable calendar commands
- Session Start of class session
- due +x Item due in x days from session
DSL - Quiz Example
\nameEntry
\mailboxEntry
\dateEntry
Quiz3
---
1. What OpenGL version does your
computer support?
\inputbox{40em, 2em}
2. Create a list of vertices that
could bound a 3D rectangle with
area of 4 that has a corner at the
origin and lies in the X plane.
\inputbox{40em, 4em}
DSL - Notes Example
Camera
---
If you make sure the look and up vector
are normalized before building the
basis, then the resulting camera
basis \\\( \mathbf{C} \\\) is orthonormal:
$$
\mathbf{C} =
\begin{bmatrix}
u_x & v_x & w_x \\
u_y & v_y & w_y \\
u_z & v_z & w_z \\
\end{bmatrix}
$$
DSL - Calendar Example
Session:
* [MIPS green sheet](pdf/Green_Card.pdf)
* Intro to MIPS assembly
* Read 2.1--2.3
* Practice 2.1--2.6; 2.9--2.10
* Representing instructions
* Read 2.4--2.5
* Practice 2.12; 2.14--2.18
* +HW2 due +2 sol +2
Export
-
CourseUp DSL is independent of LMS
-
Could export to desired LMS
- Moodle
- Blackboard
- Canvas
-
Reference HTML generator
- Creates HTML from CourseUp
Results
- Language and generator are in development
- Used at Rose-Hulman
- 20 sections
- 3 courses
- Approximately 450 students
- Traditional face-to-face classes
Results- Track Changes
- It is easy to track changes with the CourseUp DSL
- Use any source control system
- Easy to correlation course changes with results
----------- milestone2/content.md -----------
@@ -20,12 +20,14 @@
Next, list and describe the components [-required-]{+that will be needed+} to implement your RTL.
[-Make sure that resources are not over used.-] {+Do not describe how the parts are connected; you just need build a 'shopping list' of generic parts.+}
Results- Rich Materials
- Can directly target export format
- For one class, a Javascript tool is embed in the course notes
Results- Sharing and Reuse
- It is very easy to share and relocate materials
- A C++ tutorial can be shared between two classes
\input(../../common/c++/content.md)
Results- Automation
- This tool has been used for three years
- Adjusting the term start/end dates updates the course
- 2017-2018 Fall
FirstQuarterDay: 2017-08-31 LastBeforeBreak: 2017-10-11 FirstAfterBreak: 2017-10-16
- 2017-2018 Winter
FirstQuarterDay: 2017-11-27 LastBeforeBreak: 2017-12-22 FirstAfterBreak: 2018-01-08
- 2018-2019 Fall
FirstQuarterDay: 2018-08-30 LastBeforeBreak: 2018-10-10 FirstAfterBreak: 2018-10-15
- All relative dates update automatically
Limitations
- No WYSIWYG editors
- Support for online tools is still developing
- Export generaters are not complete
Future work
- Create formal language definition
- Turing complete?
- Complete Moodle export tool
- CourseUp is still in development
- Partial discussion capabilities
- Some online commands
- Groups
- Auto-grading
- Course outcome tracking
- Maybe more?
Conclusion
- CourseUp : course specific DSL
- Readable
- Diffable
- Easy to share
- Automates rote tasks
Conclusion
-
Live examples
-
Any questions?