<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>software development | UCSC OSPO</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/tag/software-development/</link><atom:link href="https://deploy-preview-1007--ucsc-ospo.netlify.app/tag/software-development/index.xml" rel="self" type="application/rss+xml"/><description>software development</description><generator>Wowchemy (https://wowchemy.com)</generator><language>en-us</language><lastBuildDate>Tue, 13 Jan 2026 13:00:00 -0800</lastBuildDate><image><url>https://deploy-preview-1007--ucsc-ospo.netlify.app/media/logo_hub6795c39d7c5d58c9535d13299c9651f_74810_300x300_fit_lanczos_3.png</url><title>software development</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/tag/software-development/</link></image><item><title>LMS Toolkit</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre26/ucsc/lms-toolkit/</link><pubDate>Tue, 13 Jan 2026 13:00:00 -0800</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre26/ucsc/lms-toolkit/</guid><description>&lt;p>The &lt;a href="https://github.com/edulinq/lms-toolkit" target="_blank" rel="noopener">EduLinq LMS Toolkit&lt;/a> is a suite of tools used by several courses at UCSC
to interact with LMS&amp;rsquo;s (e.g. Canvas) from the command line or Python.
A &lt;a href="https://en.wikipedia.org/wiki/Learning_management_system" target="_blank" rel="noopener">Learning Management System&lt;/a> (LMS) is a system that institutions use to manage courses, assignments, students, and grades.
The most popular LMSs are
&lt;a href="https://en.wikipedia.org/wiki/Instructure#Canvas" target="_blank" rel="noopener">Canvas&lt;/a>,
&lt;a href="https://en.wikipedia.org/wiki/Blackboard_Learn" target="_blank" rel="noopener">Blackboard&lt;/a>,
&lt;a href="https://en.wikipedia.org/wiki/Moodle" target="_blank" rel="noopener">Moodle&lt;/a>,
and &lt;a href="https://en.wikipedia.org/wiki/D2L#Brightspace" target="_blank" rel="noopener">Brightspace&lt;/a>.
These tools can be very helpful, especially from an administrative standpoint, but can be hard to interact with.
They can be especially difficult when instructors and TAs want to do something that is not explicitly supported by their built-in GUIs
(e.g., when an instructor wants to use a special grading policy).
The LMS Toolkit project is an effort to create a single suite of command-line tools (along with a Python interface)
to connect to all the above mentioned LMSs in a simple and uniform way.
So, not only can instructors and TAs easily access the modify the data held in an LMS (like a student&amp;rsquo;s grades),
but they can also do it the same way on any LMS.
The &lt;a href="https://linqs.org" target="_blank" rel="noopener">LINQS Lab&lt;/a> has made many contributions to the maintain and improve the Quiz Composer.&lt;/p>
&lt;p>Currently, the LMS Toolkit supports Canvas, Moodle, and Blackboard.
But, the degree of support for each LMS varies.&lt;/p>
&lt;p>All students interested in LINQS projects for OSRE/GSoC 2026 should fill out &lt;a href="https://forms.gle/Mr4YR3N35pWDb4uz7" target="_blank" rel="noopener">this form&lt;/a>.
Towards the end of the application window, we will contact those who we believe to be a good fit for a LINQS project.
The form will stop accepting responses once the application window closes.
Do not post on any of the project repositories about OSRE/GSoC
(e.g., comment on an issue that you want to tackle it as a part of OSRE/GSoC 2026).
Remember, these are active repositories that were not created for OSRE/GSoC.&lt;/p>
&lt;h3 id="advanced-lms-support">Advanced LMS Support&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>Backend&lt;/code> &lt;code>Teaching Tools&lt;/code> &lt;code>API&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> software development, backend, rest api, data munging, http request inspection, python&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Moderate&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Medium or Large (175 or 350 hours)&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="mailto:linqs.osre26@gmail.com">Eriq Augustine&lt;/a>, &lt;a href="mailto:linqs.osre26@gmail.com">Batuhan Salih&lt;/a>, &lt;a href="mailto:linqs.osre26@gmail.com">Lise Getoor&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>The LMS Toolkit already has basic read-write support for many core pieces of LMS functionality (e.g., working with grades and assignments).
However, there are still many more features that can be supported such as
&lt;a href="https://github.com/edulinq/lms-toolkit/issues/17" target="_blank" rel="noopener">group management&lt;/a>,
&lt;a href="https://github.com/edulinq/lms-toolkit/issues/7" target="_blank" rel="noopener">quiz management&lt;/a>,
&lt;a href="https://github.com/edulinq/lms-toolkit/issues/10" target="_blank" rel="noopener">quiz statistics&lt;/a>,
and &lt;a href="https://github.com/edulinq/lms-toolkit/issues/19" target="_blank" rel="noopener">assignment statuses&lt;/a>.&lt;/p>
&lt;p>The task for this project is to choose a set of advanced features
(not limited to those features mentioned above),
design an LMS-agnostic way to support those features,
and implement those features.
The flexibility in the features chosen to implement account for the variable size of this project.&lt;/p>
&lt;p>See Also:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://github.com/edulinq/lms-toolkit" target="_blank" rel="noopener">Repository for LMS Toolkit&lt;/a>&lt;/li>
&lt;li>GitHub Issues
&lt;ul>
&lt;li>&lt;a href="https://github.com/edulinq/lms-toolkit/issues/17" target="_blank" rel="noopener">Group Management&lt;/a>,&lt;/li>
&lt;li>&lt;a href="https://github.com/edulinq/lms-toolkit/issues/7" target="_blank" rel="noopener">Quiz Management&lt;/a>,&lt;/li>
&lt;li>&lt;a href="https://github.com/edulinq/lms-toolkit/issues/10" target="_blank" rel="noopener">Quiz Statistics&lt;/a>,&lt;/li>
&lt;li>&lt;a href="https://github.com/edulinq/lms-toolkit/issues/19" target="_blank" rel="noopener">Assignment Statuses&lt;/a>.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;h3 id="new-lms-support-brightspace">New LMS Support: Brightspace&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>Backend&lt;/code> &lt;code>Teaching Tools&lt;/code> &lt;code>API&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> software development, backend, rest api, data munging, http request inspection, python&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Challenging&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Large (350 hours)&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="mailto:linqs.osre26@gmail.com">Eriq Augustine&lt;/a>, &lt;a href="mailto:linqs.osre26@gmail.com">Batuhan Salih&lt;/a>, &lt;a href="mailto:linqs.osre26@gmail.com">Lise Getoor&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>The goal of the LMS toolkit is to provide a single interface for all LMSs.
&lt;a href="https://en.wikipedia.org/wiki/D2L#Brightspace" target="_blank" rel="noopener">D2L Brightspace&lt;/a> is one of the more popular LMSs.
Naturally, the LMS Toolkit wants to support Brightspace as well.
However, a challenge in supporting Brightspace is that it is not open source (unlike Canvas and Moodle).
Therefore, support and testing on Brightspace may be very challenging.&lt;/p>
&lt;p>The task for this project is to add basic support for the Brightspace LMS.
It is not necessary to support all the same features that are supported for other LMSs,
but at least the core features of score and assignment management should be implemented.
The closed-source nature of Brightspace makes this a challenging and uncertain project.&lt;/p>
&lt;p>See Also:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://github.com/edulinq/lms-toolkit" target="_blank" rel="noopener">Repository for LMS Toolkit&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://en.wikipedia.org/wiki/D2L#Brightspace" target="_blank" rel="noopener">Brightspace Wiki Page&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/edulinq/lms-toolkit/issues/23" target="_blank" rel="noopener">GitHub Issue&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Lynx Grader</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre26/ucsc/autograder/</link><pubDate>Tue, 13 Jan 2026 13:00:00 -0800</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre26/ucsc/autograder/</guid><description>&lt;p>The &lt;a href="https://github.com/edulinq/autograder-server" target="_blank" rel="noopener">EduLinq Lynx Grader&lt;/a> (also referred to as &amp;ldquo;autograder&amp;rdquo;) is an open source tool used by several courses at UCSC
to safely and quickly grade programming assignments.
Grading student code is something that may seem simple at first (you just need to run their code!),
but quickly becomes exceeding complex as you get more into the details.
Specifically, grading a student&amp;rsquo;s code securely while providing the &amp;ldquo;last mile&amp;rdquo; service of getting code from students
and sending results to instructors/TAs and the course&amp;rsquo;s LMS (e.g., Canvas) can be very difficult.
The Lynx Grader provides all of this in a free and open source project.
The &lt;a href="https://linqs.org" target="_blank" rel="noopener">LINQS Lab&lt;/a> has made many contributions to the maintain and improve the Lynx Grader.&lt;/p>
&lt;p>As an open source project, there are endless opportunities for development, improvements, and collaboration.
Here, we highlight some specific projects that will work well in the summer mentorship setting.&lt;/p>
&lt;p>All students interested in LINQS projects for OSRE/GSoC 2026 should fill out &lt;a href="https://forms.gle/Mr4YR3N35pWDb4uz7" target="_blank" rel="noopener">this form&lt;/a>.
Towards the end of the application window, we will contact those who we believe to be a good fit for a LINQS project.
The form will stop accepting responses once the application window closes.
Do not post on any of the project repositories about OSRE/GSoC
(e.g., comment on an issue that you want to tackle it as a part of OSRE/GSoC 2026).
Remember, these are active repositories that were not created for OSRE/GSoC.&lt;/p>
&lt;h3 id="llm-detection">LLM Detection&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>AI/ML&lt;/code> &lt;code>LLM&lt;/code> &lt;code>Research&lt;/code> &lt;code>Backend&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> software development, backend, systems, data munging, go, docker&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Challenging&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Large (350 hours)&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="mailto:linqs.osre26@gmail.com">Eriq Augustine&lt;/a>, &lt;a href="mailto:linqs.osre26@gmail.com">Fabrice Kurmann&lt;/a>, &lt;a href="mailto:linqs.osre26@gmail.com">Lise Getoor&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>As &lt;a href="https://en.wikipedia.org/wiki/Large_language_model" target="_blank" rel="noopener">Large Language Model (LLM)&lt;/a> tools like ChatGPT become more common and powerful,
instructors need tools to help determine if students are the actual authors of the code they submit.
More classical instances of plagiarism are often discovered by code similarity tools like &lt;a href="https://theory.stanford.edu/~aiken/moss/" target="_blank" rel="noopener">MOSS&lt;/a>.
However these tools are not sufficient for detecting code written not by a student,
but by an AI model like &lt;a href="https://en.wikipedia.org/wiki/ChatGPT" target="_blank" rel="noopener">ChatGPT&lt;/a> or &lt;a href="https://en.wikipedia.org/wiki/GitHub_Copilot" target="_blank" rel="noopener">GitHub Copilot&lt;/a>.&lt;/p>
&lt;p>The task for this project is to create a system that provides a score indicating the system&amp;rsquo;s confidence that a given piece of code was written by an AI tool and not a student.
This will supplement the existing code analysis tools in the Lynx Grader.
There are many approaches to completing this task that will be considered.
A more software development approach can consist of levering exiting systems to create a production-ready system,
whereas a more research approach can consist of creating a novel approach complete with a paper and experiments.&lt;/p>
&lt;p>There has been &lt;a href="https://github.com/anvichip/AI-code-detection-ML/blob/main/experiment/report.md" target="_blank" rel="noopener">previous work on this issue&lt;/a>,
where a student did a survey of existing solutions, collection of initial datasets, and exploratory experiments on possible directions.
This project would build off of this previous work.&lt;/p>
&lt;p>See Also:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://github.com/edulinq/autograder-server" target="_blank" rel="noopener">Repository for Lynx Grader Server&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/edulinq/autograder-server/issues/140" target="_blank" rel="noopener">GitHub Issue&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="code-analysis-gui">Code Analysis GUI&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>Frontend&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> software development, frontend, data munging, js, css, go&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Easy&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Medium or Large (175 or 350 hours)&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="mailto:linqs.osre26@gmail.com">Eriq Augustine&lt;/a>, &lt;a href="mailto:linqs.osre26@gmail.com">Fabrice Kurmann&lt;/a>, &lt;a href="mailto:linqs.osre26@gmail.com">Lise Getoor&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>The Lynx Grader has existing functionality to analyze the code in a student&amp;rsquo;s submission for malicious content.
Relevant to this project is that the Lynx Grader can run a pairwise similarity analysis against all submitted code.
This is how most existing software plagiarism systems detect offending code.
The existing infrastructure provides detailed statistics on code similarity,
but does not currently have a visual way to display this data.&lt;/p>
&lt;p>The task for this project is to create a web GUI using the Lynx Grader REST API
to display the results of a code analysis.
The size of this project depends on how many of the existing features are going to be supported by the web GUI.&lt;/p>
&lt;p>See Also:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://github.com/edulinq/autograder-web" target="_blank" rel="noopener">Repository for Lynx Grader Web GUI&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/edulinq/autograder-server/issues/142" target="_blank" rel="noopener">GitHub Issue&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/edulinq/autograder-server/blob/main/internal/model/analysis.go#L78" target="_blank" rel="noopener">Pairwise Code Analysis Type&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/edulinq/autograder-py/blob/v0.6.16/tests/api/testdata/courses/assignments/analysis/courses_assignments_submissions_analysis_pairwise_wait.json" target="_blank" rel="noopener">Sample API Data&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="web-gui">Web GUI&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>Frontend&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> software development, frontend, js, css&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Easy&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Medium or Large (175 or 350 hours)&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="mailto:linqs.osre26@gmail.com">Eriq Augustine&lt;/a>, &lt;a href="mailto:linqs.osre26@gmail.com">Fabrice Kurmann&lt;/a>, &lt;a href="mailto:linqs.osre26@gmail.com">Lise Getoor&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>The Lynx Grader contains dozens of &lt;a href="https://github.com/edulinq/autograder-server/blob/main/resources/api.json" target="_blank" rel="noopener">API endpoints&lt;/a>,
most directly representing a piece of functionality exposed to the user.
All of these features are exposed in the &lt;a href="https://github.com/edulinq/autograder-py" target="_blank" rel="noopener">Lynx Grader&amp;rsquo;s Python Interface&lt;/a>.
However, the Python interface is a purely command-line interface.
And although command-line interface are objectively (read: subjectively) the best,
a web GUI would be more accessible to a wider audience.
The autograder already has a &lt;a href="https://github.com/edulinq/autograder-web" target="_blank" rel="noopener">web GUI&lt;/a>,
but it does not cover all the features available in the Lynx Grader.&lt;/p>
&lt;p>The task for this project is to augment the Lynx Grader&amp;rsquo;s web GUI with more features.
Specifically, add support for more tools used to create and administer courses.&lt;/p>
&lt;p>See Also:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://github.com/edulinq/autograder-web" target="_blank" rel="noopener">Repository for Lynx Grader Web GUI&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/edulinq/autograder-server/issues/61" target="_blank" rel="noopener">GitHub Issue&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/edulinq/autograder-server/blob/main/resources/api.json" target="_blank" rel="noopener">Lynx Grader API Endpoints&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/edulinq/autograder-py" target="_blank" rel="noopener">Lynx Grader&amp;rsquo;s Python Interface&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Quiz Composer</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre26/ucsc/quiz-composer/</link><pubDate>Tue, 13 Jan 2026 13:00:00 -0800</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre26/ucsc/quiz-composer/</guid><description>&lt;p>The &lt;a href="https://github.com/edulinq/quiz-composer" target="_blank" rel="noopener">EduLinq Quiz Composer&lt;/a> (also called the &amp;ldquo;Quiz Generator&amp;rdquo;) is a tool used by several courses at UCSC
to create and maintain platform-agnostic quizzes (including exams and worksheets).
Knowledge assessments like quizzes, exams, and tests are a core part of the learning process for many courses.
However maintaining banks of questions, collaborating on new questions, and converting quizzes to new formats can use up a lot of time,
taking time away from actually working on improving course materials.
The Quiz Composer helps by providing a single text-based format that can be stored in a repository and &amp;ldquo;compiled&amp;rdquo; into many different formats including:
HTML, LaTeX, PDF, Canvas, GradeScope, and QTI.
The &lt;a href="https://linqs.org" target="_blank" rel="noopener">LINQS Lab&lt;/a> has made many contributions to the maintain and improve the Quiz Composer.&lt;/p>
&lt;p>As an open source project, there are endless opportunities for development, improvements, and collaboration.
Here, we highlight some specific projects that will work well in the summer mentorship setting.&lt;/p>
&lt;p>All students interested in LINQS projects for OSRE/GSoC 2026 should fill out &lt;a href="https://forms.gle/Mr4YR3N35pWDb4uz7" target="_blank" rel="noopener">this form&lt;/a>.
Towards the end of the application window, we will contact those who we believe to be a good fit for a LINQS project.
The form will stop accepting responses once the application window closes.
Do not post on any of the project repositories about OSRE/GSoC
(e.g., comment on an issue that you want to tackle it as a part of OSRE/GSoC 2026).
Remember, these are active repositories that were not created for OSRE/GSoC.&lt;/p>
&lt;h3 id="canvas-import">Canvas Import&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>Backend&lt;/code> &lt;code>Teaching Tools&lt;/code> &lt;code>API&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> software development, backend, rest api, data munging, http request inspection, python&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Moderate&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Medium (175 hours)&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="mailto:linqs.osre26@gmail.com">Eriq Augustine&lt;/a>, &lt;a href="mailto:linqs.osre26@gmail.com">Lucas Ellenberger&lt;/a>, &lt;a href="mailto:linqs.osre26@gmail.com">Lise Getoor&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>The Quiz Composer houses quizzes and quiz questions in a simple and unambiguous format based
on &lt;a href="https://en.wikipedia.org/wiki/JSON" target="_blank" rel="noopener">JSON&lt;/a> and &lt;a href="https://en.wikipedia.org/wiki/Markdown" target="_blank" rel="noopener">Markdown&lt;/a> (specifically, the &lt;a href="https://commonmark.org" target="_blank" rel="noopener">CommonMark specification&lt;/a>).
This allows the Quiz Composer to unambiguously create versions of the same quiz in many different formats.
However, creating a quiz in the Quiz Composer format can be a daunting task for those not familiar with JSON or Markdown.
Instead, it would be easier for people to import quizzes from another format into the Quiz Composer format,
and then edit it as they see fit.
Unfortunately not all other quiz formats, namely Canvas in this case, are unambiguous.&lt;/p>
&lt;p>The task for this project is to implement the functionality of importing quizzes from Canvas to the standard Quiz Composer format.
The unambiguous nature of Canvas quizzes makes this task non-trivial,
and adds an additional element of design decisions to this task.
It will be impossible to import quizzes 100% correctly,
but we want to be able to get close enough that most people can import their quizzes without issue.&lt;/p>
&lt;p>See Also:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://github.com/edulinq/quiz-composer" target="_blank" rel="noopener">Repository for Quiz Composer&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/edulinq/quiz-composer/issues/27" target="_blank" rel="noopener">GitHub Issue&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="google-forms-export">Google Forms Export&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>Backend&lt;/code> &lt;code>Teaching Tools&lt;/code> &lt;code>API&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> software development, backend, rest api, data munging, python&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Moderate&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Medium (175 hours)&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="mailto:linqs.osre26@gmail.com">Eriq Augustine&lt;/a>, &lt;a href="mailto:linqs.osre26@gmail.com">Lucas Ellenberger&lt;/a>, &lt;a href="mailto:linqs.osre26@gmail.com">Lise Getoor&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>The Quiz Composer can export quizzes to many different formats,
each with a varying level of interactivity and feature support.
For example, quizzes can be exported to PDFs which will be printed and the students will just write down their answers to be checked in the future.
Quizzes can also be exported to interactive platforms like Canvas where students can enter answers that may be automatically checked with feedback immediately provided to the student.
On potential platform with functionality somewhere between the above two examples is &lt;a href="https://workspace.google.com/products/forms/" target="_blank" rel="noopener">Google Forms&lt;/a>.
&amp;ldquo;Forms&amp;rdquo; (an entity on Google Forms) can be something like a survey or (as of more recently) a quiz.&lt;/p>
&lt;p>The task for this project is to add support for exporting quizzes from the Quiz Composer to Google Forms.
There is a large overlap in the quiz features supported in Canvas (which the Quiz Composer already supports) and Google Forms,
so most settings should be fairly straightforward.
There may be some design work around deciding what features are specific to one quiz platform
and what features can be abstracted to work across several platforms.&lt;/p>
&lt;p>See Also:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://github.com/edulinq/quiz-composer" target="_blank" rel="noopener">Repository for Quiz Composer&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/edulinq/quiz-composer/issues/19" target="_blank" rel="noopener">GitHub Issue&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="template-questions">Template Questions&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>Backend&lt;/code> &lt;code>Teaching Tools&lt;/code> &lt;code>API&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> software development, backend, data munging, python&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Moderate-Challenging&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Large (350 hours)&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="mailto:linqs.osre26@gmail.com">Eriq Augustine&lt;/a>, &lt;a href="mailto:linqs.osre26@gmail.com">Lucas Ellenberger&lt;/a>, &lt;a href="mailto:linqs.osre26@gmail.com">Lise Getoor&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Questions in the Quiz Composer are described using &lt;a href="https://en.wikipedia.org/wiki/JSON" target="_blank" rel="noopener">JSON&lt;/a> and &lt;a href="https://en.wikipedia.org/wiki/Markdown" target="_blank" rel="noopener">Markdown&lt;/a>
files which contain the question prompt, possible answers, and the correct answer.
(Of course there are many differ &lt;a href="https://github.com/edulinq/quiz-composer/blob/main/docs/question-types.md" target="_blank" rel="noopener">question types&lt;/a>,
each with different semantics and requirements.)
However, a limitation of this is that each question is always the same.
You can have multiple copies of a question with slightly different prompts, numbers, and answers;
but you are still limited to each question being static and unchanging.
It would be useful to have &amp;ldquo;template questions&amp;rdquo; that can dynamically create static questions from a template
and collection of replacement data.&lt;/p>
&lt;p>The task for this project is to add support for the &amp;ldquo;template questions&amp;rdquo; discussed above.
Much of the high-level design work for this issue has &lt;a href="https://github.com/edulinq/quiz-composer/issues/26" target="_blank" rel="noopener">already been completed&lt;/a>.
But there is still the implementation and low-level design decision left to do.&lt;/p>
&lt;p>See Also:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://github.com/edulinq/quiz-composer" target="_blank" rel="noopener">Repository for Quiz Composer&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/edulinq/quiz-composer/issues/26" target="_blank" rel="noopener">GitHub Issue&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Vector Embeddings Dataset</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/ucsc/embeddings/</link><pubDate>Tue, 11 Feb 2025 13:00:00 -0800</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/ucsc/embeddings/</guid><description>&lt;h3 id="vector-embeddings-dataset">Vector Embeddings Dataset&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>Vector Embeddings&lt;/code> &lt;code>LLMs&lt;/code> &lt;code>Transformers&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> software development, apis, scripting, python&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Moderate&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Medium or Large (175 or 350 hours)&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="mailto:jayjeetc@ucsc.edu">Jayjeet Chakraborty&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>To benchmark vector search algorithms (aka ANN algorithms), there are several datasets available but none of
them represent actual real world workloads. This is because they usually have small vectors of only a few hundred
dimensions. For vector search experiments to represent real world workloads, we want to have datasets with
several thousand dimensions like what is generated by OpenAIs text-embedding models. This project aims to create a
dataset with 1B embeddings from a wikipedia dataset using open source models. Ideally, we will have 3 versions of this dataset, with 1024, 4096, and 8192 sized embeddings to start with.&lt;/p></description></item><item><title>Autograder</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/ucsc/autograder/</link><pubDate>Thu, 06 Feb 2025 13:00:00 -0800</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/ucsc/autograder/</guid><description>&lt;p>The &lt;a href="https://github.com/edulinq/autograder-server" target="_blank" rel="noopener">EduLinq Autograder&lt;/a> is an open source tool used by several courses at UCSC
to safely and quickly grade programming assignments.
Grading student code is something that may seem simple at first (you just need to run their code!),
but quickly becomes exceeding complex as you get more into the details.
Specifically, grading a student&amp;rsquo;s code securely while providing the &amp;ldquo;last mile&amp;rdquo; service of getting code from students
and sending results to instructors/TAs and the course&amp;rsquo;s LMS (e.g., Canvas) can be very difficult.
The Autograder provides all of this in a free and open source project.
The &lt;a href="https://linqs.org" target="_blank" rel="noopener">LINQS Lab&lt;/a> has made many contributions to the maintain and improve the Autograder.&lt;/p>
&lt;p>As an open source project, there are endless opportunities for development, improvements, and collaboration.
Here, we highlight some specific projects that will work well in the summer mentorship setting.&lt;/p>
&lt;p>All students interested in LINQS projects for OSRE/GSoC 2025 should fill out &lt;a href="https://forms.gle/RxGqnQiCDeHSX6tq6" target="_blank" rel="noopener">this form&lt;/a>.
Towards the end of the application window, we will contact those who we believe to be a good fit for a LINQS project.
The form will stop accepting responses once the application window closes.
Do not post on any of the project repositories about OSRE/GSoC
(e.g., comment on an issue that you want to tackle it as a part of OSRE/GSoC 2025).
Remember, these are active repositories that were not created for OSRE/GSoC.&lt;/p>
&lt;h3 id="llm-detection">LLM Detection&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>AI/ML&lt;/code> &lt;code>LLM&lt;/code> &lt;code>Research&lt;/code> &lt;code>Backend&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> software development, backend, systems, data munging, go, docker&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Challenging&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Large (350 hours)&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="mailto:linqs.osre25@gmail.com">Eriq Augustine&lt;/a>, &lt;a href="mailto:linqs.osre25@gmail.com">Fabrice Kurmann&lt;/a>, &lt;a href="mailto:linqs.osre25@gmail.com">Lise Getoor&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>As &lt;a href="https://en.wikipedia.org/wiki/Large_language_model" target="_blank" rel="noopener">Large Language Model (LLM)&lt;/a> tools like ChatGPT become more common and powerful,
instructors need tools to help determine if students are the actual authors of the code they submit.
More classical instances of plagiarism are often discovered by code similarity tools like &lt;a href="https://theory.stanford.edu/~aiken/moss/" target="_blank" rel="noopener">MOSS&lt;/a>.
However these tools are not sufficient for detecting code written not by a student,
but by an AI model like &lt;a href="https://en.wikipedia.org/wiki/ChatGPT" target="_blank" rel="noopener">ChatGPT&lt;/a> or &lt;a href="https://en.wikipedia.org/wiki/GitHub_Copilot" target="_blank" rel="noopener">GitHub Copilot&lt;/a>.&lt;/p>
&lt;p>The task for this project is to create a system that provides a score indicating the system&amp;rsquo;s confidence that a given piece of code was written by an AI tool and not a student.
This will supplement the existing code analysis tools in the Autograder.
There are many approaches to completing this task that will be considered.
A more software development approach can consist of levering exiting systems to create a production-ready system,
whereas a more research approach can consist of creating a novel approach complete with a paper and experiments.&lt;/p>
&lt;p>See Also:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://github.com/edulinq/autograder-server" target="_blank" rel="noopener">Repository for Autograder Server&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/edulinq/autograder-server/issues/140" target="_blank" rel="noopener">GitHub Issue&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="code-analysis-gui">Code Analysis GUI&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>Frontend&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> software development, frontend, data munging, js, css, go&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Easy&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Medium or Large (175 or 350 hours)&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="mailto:linqs.osre25@gmail.com">Eriq Augustine&lt;/a>, &lt;a href="mailto:linqs.osre25@gmail.com">Fabrice Kurmann&lt;/a>, &lt;a href="mailto:linqs.osre25@gmail.com">Lise Getoor&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>The Autograder has existing functionality to analyze the code in a student&amp;rsquo;s submission for malicious content.
Relevant to this project is that the Autograder can run a pairwise similarity analysis against all submitted code.
This is how most existing software plagiarism systems detect offending code.
The existing infrastructure provides detailed statistics on code similarity,
but does not currently have a visual way to display this data.&lt;/p>
&lt;p>The task for this project is to create a web GUI using the Autograder REST API
to display the results of a code analysis.
The size of this project depends on how many of the existing features are going to be supported by the web GUI.&lt;/p>
&lt;p>See Also:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://github.com/edulinq/autograder-web" target="_blank" rel="noopener">Repository for Autograder Web GUI&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/edulinq/autograder-server/issues/142" target="_blank" rel="noopener">GitHub Issue&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/edulinq/autograder-server/blob/main/internal/model/analysis.go#L78" target="_blank" rel="noopener">Pairwise Code Analysis Type&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/edulinq/autograder-py/blob/main/tests/api/testdata/courses/assignments/submit/analysis/course_assignments_submissions_analysis_pairwise_wait.json" target="_blank" rel="noopener">Sample API Data&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="web-gui">Web GUI&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>Frontend&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> software development, frontend, js, css&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Easy&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Medium or Large (175 or 350 hours)&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="mailto:linqs.osre25@gmail.com">Eriq Augustine&lt;/a>, &lt;a href="mailto:linqs.osre25@gmail.com">Fabrice Kurmann&lt;/a>, &lt;a href="mailto:linqs.osre25@gmail.com">Lise Getoor&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>The Autograder contains dozens of &lt;a href="https://github.com/edulinq/autograder-server/blob/main/resources/api.json" target="_blank" rel="noopener">API endpoints&lt;/a>,
most directly representing a piece of functionality exposed to the user.
All of these features are exposed in the &lt;a href="https://github.com/edulinq/autograder-py" target="_blank" rel="noopener">Autograder&amp;rsquo;s Python Interface&lt;/a>.
However, the Python interface is a purely command-line interface.
And although command-line interface are objectively (read: subjectively) the best,
a web GUI would be more accessible to a wider audience.
The autograder already has a web GUI,
but it does not cover all the features available in the Autograder.&lt;/p>
&lt;p>The task for this project is to augment the Autograder&amp;rsquo;s web GUI with more features.
Specifically, add support for more tools used to create and administer courses.&lt;/p>
&lt;p>See Also:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://github.com/edulinq/autograder-web" target="_blank" rel="noopener">Repository for Autograder Web GUI&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/edulinq/autograder-server/issues/61" target="_blank" rel="noopener">GitHub Issue&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/edulinq/autograder-server/blob/main/resources/api.json" target="_blank" rel="noopener">Autograder API Endpoints&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/edulinq/autograder-py" target="_blank" rel="noopener">Autograder&amp;rsquo;s Python Interface&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>LMS Toolkit</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/ucsc/lms-toolkit/</link><pubDate>Thu, 06 Feb 2025 13:00:00 -0800</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/ucsc/lms-toolkit/</guid><description>&lt;p>The &lt;a href="https://github.com/edulinq/py-canvas" target="_blank" rel="noopener">EduLinq LMS Toolkit&lt;/a> (also called the &amp;ldquo;Canvas Tool&amp;rdquo; or &amp;ldquo;py-canvas&amp;rdquo;) is a suite of tools used by several courses at UCSC
to interact with Canvas from the command line or Python.
A &lt;a href="https://en.wikipedia.org/wiki/Learning_management_system" target="_blank" rel="noopener">Learning Management System&lt;/a> (LMS) is a system that institutions use to manage courses, assignments, students, and grades.
The most popular LMSs are
&lt;a href="https://en.wikipedia.org/wiki/Instructure#Canvas" target="_blank" rel="noopener">Canvas&lt;/a>,
&lt;a href="https://en.wikipedia.org/wiki/Blackboard_Learn" target="_blank" rel="noopener">Blackboard&lt;/a>,
&lt;a href="https://en.wikipedia.org/wiki/Moodle" target="_blank" rel="noopener">Moodle&lt;/a>,
and &lt;a href="https://en.wikipedia.org/wiki/D2L#Brightspace" target="_blank" rel="noopener">Brightspace&lt;/a>.
These tools can be very helpful, especially from an administrative standpoint, but can be hard to interact with.
They can be especially difficult when instructors and TAs want to do something that is not explicitly supported by their built-in GUIs
(e.g., when an instructor wants to use a special grading policy).
The LMS Toolkit project is an effort to create a single suite of command-line tools (along with a Python interface)
to connect to all the above mentioned LMSs in a simple and uniform way.
So, not only can instructors and TAs easily access the modify the data held in an LMS (like a student&amp;rsquo;s grades),
but they can also do it the same way on any LMS.
The &lt;a href="https://linqs.org" target="_blank" rel="noopener">LINQS Lab&lt;/a> has made many contributions to the maintain and improve the Quiz Composer.&lt;/p>
&lt;p>Currently, the LMS Toolkit only supports Canvas, but this suite of projects hopes to not only expand existing support,
but add support for more LMSs.&lt;/p>
&lt;p>All students interested in LINQS projects for OSRE/GSoC 2025 should fill out &lt;a href="https://forms.gle/RxGqnQiCDeHSX6tq6" target="_blank" rel="noopener">this form&lt;/a>.
Towards the end of the application window, we will contact those who we believe to be a good fit for a LINQS project.
The form will stop accepting responses once the application window closes.
Do not post on any of the project repositories about OSRE/GSoC
(e.g., comment on an issue that you want to tackle it as a part of OSRE/GSoC 2025).
Remember, these are active repositories that were not created for OSRE/GSoC.&lt;/p>
&lt;h3 id="advanced-canvas-support">Advanced Canvas Support&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>Backend&lt;/code> &lt;code>Teaching Tools&lt;/code> &lt;code>API&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> software development, backend, rest api, data munging, http request inspection, python&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Moderate&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Medium or Large (175 or 350 hours)&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="mailto:linqs.osre25@gmail.com">Eriq Augustine&lt;/a>, &lt;a href="mailto:linqs.osre25@gmail.com">Batuhan Salih&lt;/a>, &lt;a href="mailto:linqs.osre25@gmail.com">Lise Getoor&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>The LMS Toolkit already has basic read-write support for core Canvas functionality (working with grades and assignments).
However, there are still many more features that can be supported such as
&lt;a href="https://github.com/edulinq/py-canvas/issues/17" target="_blank" rel="noopener">group management&lt;/a>,
&lt;a href="https://github.com/edulinq/py-canvas/issues/7" target="_blank" rel="noopener">quiz management&lt;/a>,
&lt;a href="https://github.com/edulinq/py-canvas/issues/10" target="_blank" rel="noopener">quiz statistics&lt;/a>,
and &lt;a href="https://github.com/edulinq/py-canvas/issues/19" target="_blank" rel="noopener">assignment statuses&lt;/a>.&lt;/p>
&lt;p>The task for this project is to implement chose of set of advanced Canvas features to support
(not limited to those features mentioned above),
design an LMS-agnostic way to support those features,
and implement those features.
The flexibility in the features chosen to implement account for the variable size of this project.&lt;/p>
&lt;p>See Also:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://github.com/edulinq/py-canvas" target="_blank" rel="noopener">Repository for LMS Toolkit&lt;/a>&lt;/li>
&lt;li>GitHub Issues
&lt;ul>
&lt;li>&lt;a href="https://github.com/edulinq/py-canvas/issues/17" target="_blank" rel="noopener">Group Management&lt;/a>,&lt;/li>
&lt;li>&lt;a href="https://github.com/edulinq/py-canvas/issues/7" target="_blank" rel="noopener">Quiz Management&lt;/a>,&lt;/li>
&lt;li>&lt;a href="https://github.com/edulinq/py-canvas/issues/10" target="_blank" rel="noopener">Quiz Statistics&lt;/a>,&lt;/li>
&lt;li>&lt;a href="https://github.com/edulinq/py-canvas/issues/19" target="_blank" rel="noopener">Assignment Statuses&lt;/a>.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;h3 id="new-lms-support-moodle">New LMS Support: Moodle&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>Backend&lt;/code> &lt;code>Teaching Tools&lt;/code> &lt;code>API&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> software development, backend, rest api, data munging, http request inspection, python&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Moderate&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Large (350 hours)&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="mailto:linqs.osre25@gmail.com">Eriq Augustine&lt;/a>, &lt;a href="mailto:linqs.osre25@gmail.com">Batuhan Salih&lt;/a>, &lt;a href="mailto:linqs.osre25@gmail.com">Lise Getoor&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>The goal of the LMS toolkit is to provide a single interface for all LMSs.
It is a lofty goal, however there is currently only support for &lt;a href="https://en.wikipedia.org/wiki/Instructure#Canvas" target="_blank" rel="noopener">Canvas&lt;/a>.
&lt;a href="https://en.wikipedia.org/wiki/Moodle" target="_blank" rel="noopener">Moodle&lt;/a> is one of the more popular LMSs.
Naturally, the LMS Toolkit wants to support Moodle as well.
Moodle is open source, so adding support in the LMS Toolkit should not be too challenging.&lt;/p>
&lt;p>The task for this project is to add basic support for the Moodle LMS.
It is not necessary to support all the same features that are supported for Canvas,
but at least the core features of score and assignment management should be implemented.&lt;/p>
&lt;p>See Also:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://github.com/edulinq/py-canvas" target="_blank" rel="noopener">Repository for LMS Toolkit&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://en.wikipedia.org/wiki/Moodle" target="_blank" rel="noopener">Moodle Wiki Page&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/edulinq/py-canvas/issues/22" target="_blank" rel="noopener">GitHub Issue&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="new-lms-support-blackboard">New LMS Support: Blackboard&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>Backend&lt;/code> &lt;code>Teaching Tools&lt;/code> &lt;code>API&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> software development, backend, rest api, data munging, http request inspection, python&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Challenging&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Large (350 hours)&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="mailto:linqs.osre25@gmail.com">Eriq Augustine&lt;/a>, &lt;a href="mailto:linqs.osre25@gmail.com">Batuhan Salih&lt;/a>, &lt;a href="mailto:linqs.osre25@gmail.com">Lise Getoor&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>The goal of the LMS toolkit is to provide a single interface for all LMSs.
It is a lofty goal, however there is currently only support for &lt;a href="https://en.wikipedia.org/wiki/Instructure#Canvas" target="_blank" rel="noopener">Canvas&lt;/a>.
&lt;a href="https://en.wikipedia.org/wiki/Blackboard_Learn" target="_blank" rel="noopener">Blackboard&lt;/a> (also called &amp;ldquo;Blackboard Learn&amp;rdquo;) is one of the more popular LMSs.
Naturally, the LMS Toolkit wants to support Blackboard as well.
However, a challenge in supporting Blackboard is that it is not open source (unlike Canvas).
Therefore, support and testing on Blackboard may be very challenging.&lt;/p>
&lt;p>The task for this project is to add basic support for the Blackboard LMS.
It is not necessary to support all the same features that are supported for Canvas,
but at least the core features of score and assignment management should be implemented.
The closed nature of Blackboard makes this a challenging and uncertain project.&lt;/p>
&lt;p>See Also:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://github.com/edulinq/py-canvas" target="_blank" rel="noopener">Repository for LMS Toolkit&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://en.wikipedia.org/wiki/Blackboard_Learn" target="_blank" rel="noopener">Blackboard Wiki Page&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/edulinq/py-canvas/issues/21" target="_blank" rel="noopener">GitHub Issue&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="new-lms-support-brightspace">New LMS Support: Brightspace&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>Backend&lt;/code> &lt;code>Teaching Tools&lt;/code> &lt;code>API&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> software development, backend, rest api, data munging, http request inspection, python&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Challenging&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Large (350 hours)&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="mailto:linqs.osre25@gmail.com">Eriq Augustine&lt;/a>, &lt;a href="mailto:linqs.osre25@gmail.com">Batuhan Salih&lt;/a>, &lt;a href="mailto:linqs.osre25@gmail.com">Lise Getoor&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>The goal of the LMS toolkit is to provide a single interface for all LMSs.
It is a lofty goal, however there is currently only support for &lt;a href="https://en.wikipedia.org/wiki/Instructure#Canvas" target="_blank" rel="noopener">Canvas&lt;/a>.
&lt;a href="https://en.wikipedia.org/wiki/D2L#Brightspace" target="_blank" rel="noopener">D2L Brightspace&lt;/a> is one of the more popular LMSs.
Naturally, the LMS Toolkit wants to support Brightspace as well.
However, a challenge in supporting Brightspace is that it is not open source (unlike Canvas).
Therefore, support and testing on Brightspace may be very challenging.&lt;/p>
&lt;p>The task for this project is to add basic support for the Brightspace LMS.
It is not necessary to support all the same features that are supported for Canvas,
but at least the core features of score and assignment management should be implemented.
The closed nature of Brightspace makes this a challenging and uncertain project.&lt;/p>
&lt;p>See Also:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://github.com/edulinq/py-canvas" target="_blank" rel="noopener">Repository for LMS Toolkit&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://en.wikipedia.org/wiki/D2L#Brightspace" target="_blank" rel="noopener">Brightspace Wiki Page&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/edulinq/py-canvas/issues/23" target="_blank" rel="noopener">GitHub Issue&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="testing--ci-infrastructure">Testing / CI Infrastructure&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>Backend&lt;/code> &lt;code>Teaching Tools&lt;/code> &lt;code>Testing&lt;/code> &lt;code>CI&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> software development, backend, testing, ci, docker&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Challenging&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Large (350 hours)&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="mailto:linqs.osre25@gmail.com">Eriq Augustine&lt;/a>, &lt;a href="mailto:linqs.osre25@gmail.com">Batuhan Salih&lt;/a>, &lt;a href="mailto:linqs.osre25@gmail.com">Lise Getoor&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>The goal of the LMS toolkit is to provide a single interface for all LMSs.
This means that our system must communicate with several different (the LMSs),
each with their own systems, data patterns, versions, and quirks.
Testing will be essential to ensure that our tools keep working as the different LMSs evolve and update.
The LMS Toolkit currently tests with Canvas by
&lt;a href="https://github.com/edulinq/py-canvas/tree/main/tests/api/test_cases" target="_blank" rel="noopener">mocking API responses&lt;/a>.
However, this tactic does not scale well with multiple LMSs (and multiple versions of each system).
A more scalable approach would be to have test instances of the different LMSs that our testing infrastructure can interact with
both interactively and in &lt;a href="https://en.wikipedia.org/wiki/Continuous_integration" target="_blank" rel="noopener">continuous integration&lt;/a> (CI).&lt;/p>
&lt;p>The task for this project is to create testing infrastructure that
connects to test instances of different LMS systems (e.g., Canvas).
This task does not require that all the LMSs in this document are used,
but the testing infrastructure should be robust enough to support them all.
The open source LMSs (Canvas and Moodle) will likely be much easier to setup than the others,
and should be targeted first.
We should be able to run tests locally as well as in CI,
and will likely heavily use &lt;a href="https://en.wikipedia.org/wiki/Docker_%28software%29" target="_blank" rel="noopener">Docker&lt;/a> containers.&lt;/p>
&lt;p>See Also:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://github.com/edulinq/py-canvas" target="_blank" rel="noopener">Repository for LMS Toolkit&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/edulinq/py-canvas/issues/24" target="_blank" rel="noopener">GitHub Issue&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/edulinq/py-canvas/tree/main/tests/api/test_cases" target="_blank" rel="noopener">Mocked API Responses&lt;/a>.&lt;/li>
&lt;/ul></description></item><item><title>Quiz Composer</title><link>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/ucsc/quiz-composer/</link><pubDate>Thu, 06 Feb 2025 13:00:00 -0800</pubDate><guid>https://deploy-preview-1007--ucsc-ospo.netlify.app/project/osre25/ucsc/quiz-composer/</guid><description>&lt;p>The &lt;a href="https://github.com/edulinq/quizgen" target="_blank" rel="noopener">EduLinq Quiz Composer&lt;/a> (also called the &amp;ldquo;Quiz Generator&amp;rdquo;) is a tool used by several courses at UCSC
to create and maintain platform-agnostic quizzes (including exams and worksheets).
Knowledge assessments like quizzes, exams, and tests are a core part of the learning process for many courses.
However maintaining banks of questions, collaborating on new questions, and converting quizzes to new formats can use up a lot of time,
taking time away from actually working on improving course materials.
The Quiz Composer helps by providing a single text-based format that can be stored in a repository and &amp;ldquo;compiled&amp;rdquo; into many different formats including:
HTML, LaTeX, PDF, Canvas, GradeScope, and QTI.
The &lt;a href="https://linqs.org" target="_blank" rel="noopener">LINQS Lab&lt;/a> has made many contributions to the maintain and improve the Quiz Composer.&lt;/p>
&lt;p>As an open source project, there are endless opportunities for development, improvements, and collaboration.
Here, we highlight some specific projects that will work well in the summer mentorship setting.&lt;/p>
&lt;p>All students interested in LINQS projects for OSRE/GSoC 2025 should fill out &lt;a href="https://forms.gle/RxGqnQiCDeHSX6tq6" target="_blank" rel="noopener">this form&lt;/a>.
Towards the end of the application window, we will contact those who we believe to be a good fit for a LINQS project.
The form will stop accepting responses once the application window closes.
Do not post on any of the project repositories about OSRE/GSoC
(e.g., comment on an issue that you want to tackle it as a part of OSRE/GSoC 2025).
Remember, these are active repositories that were not created for OSRE/GSoC.&lt;/p>
&lt;h3 id="canvas-import">Canvas Import&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>Backend&lt;/code> &lt;code>Teaching Tools&lt;/code> &lt;code>API&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> software development, backend, rest api, data munging, http request inspection, python&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Moderate&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Medium (175 hours)&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="mailto:linqs.osre25@gmail.com">Eriq Augustine&lt;/a>, &lt;a href="mailto:linqs.osre25@gmail.com">Lucas Ellenberger&lt;/a>, &lt;a href="mailto:linqs.osre25@gmail.com">Lise Getoor&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>The Quiz Composer houses quizzes and quiz questions in a simple and unambiguous format based
on &lt;a href="https://en.wikipedia.org/wiki/JSON" target="_blank" rel="noopener">JSON&lt;/a> and &lt;a href="https://en.wikipedia.org/wiki/Markdown" target="_blank" rel="noopener">Markdown&lt;/a> (specifically, the &lt;a href="https://commonmark.org" target="_blank" rel="noopener">CommonMark specification&lt;/a>).
This allows the Quiz Composer to unambiguously create versions of the same quiz in many different formats.
However, creating a quiz in the Quiz Composer format can be a daunting task for those not familiar with JSON or Markdown.
Instead, it would be easier for people to import quizzes from another format into the Quiz Composer format,
and then edit it as they see fit.
Unfortunately not all other quiz formats, namely Canvas in this case, are unambiguous.&lt;/p>
&lt;p>The task for this project is to implement the functionality of importing quizzes from Canvas to the standard Quiz Composer format.
The unambiguous nature of Canvas quizzes makes this task non-trivial,
and adds an additional element of design decisions to this task.
It will be impossible to import quizzes 100% correctly,
but we want to be able to get close enough that most people can import their quizzes without issue.&lt;/p>
&lt;p>See Also:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://github.com/edulinq/quizgen" target="_blank" rel="noopener">Repository for Quiz Composer&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/edulinq/quizgen/issues/27" target="_blank" rel="noopener">GitHub Issue&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="google-forms-export">Google Forms Export&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>Backend&lt;/code> &lt;code>Teaching Tools&lt;/code> &lt;code>API&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> software development, backend, rest api, data munging, python&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Moderate&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Medium (175 hours)&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="mailto:linqs.osre25@gmail.com">Eriq Augustine&lt;/a>, &lt;a href="mailto:linqs.osre25@gmail.com">Lucas Ellenberger&lt;/a>, &lt;a href="mailto:linqs.osre25@gmail.com">Lise Getoor&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>The Quiz Composer can export quizzes to many different formats,
each with a varying level of interactivity and feature support.
For example, quizzes can be exported to PDFs which will be printed and the students will just write down their answers to be checked in the future.
Quizzes can also be exported to interactive platforms like Canvas where students can enter answers that may be automatically checked with feedback immediately provided to the student.
On potential platform with functionality somewhere between the above two examples is &lt;a href="https://workspace.google.com/products/forms/" target="_blank" rel="noopener">Google Forms&lt;/a>.
&amp;ldquo;Forms&amp;rdquo; (an entity on Google Forms) can be something like a survey or (as of more recently) a quiz.&lt;/p>
&lt;p>The task for this project is to add support for exporting quizzes from the Quiz Composer to Google Forms.
There is a large overlap in the quiz features supported in Canvas (which the Quiz Composer already supports) and Google Forms,
so most settings should be fairly straightforward.
There may be some design work around deciding what features are specific to one quiz platform
and what features can be abstracted to work across several platforms.&lt;/p>
&lt;p>See Also:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://github.com/edulinq/quizgen" target="_blank" rel="noopener">Repository for Quiz Composer&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/edulinq/quizgen/issues/19" target="_blank" rel="noopener">GitHub Issue&lt;/a>&lt;/li>
&lt;/ul>
&lt;h3 id="template-questions">Template Questions&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Topics:&lt;/strong> &lt;code>Backend&lt;/code> &lt;code>Teaching Tools&lt;/code> &lt;code>API&lt;/code>&lt;/li>
&lt;li>&lt;strong>Skills:&lt;/strong> software development, backend, data munging, python&lt;/li>
&lt;li>&lt;strong>Difficulty:&lt;/strong> Moderate-Challenging&lt;/li>
&lt;li>&lt;strong>Size:&lt;/strong> Large (350 hours)&lt;/li>
&lt;li>&lt;strong>Mentors:&lt;/strong> &lt;a href="mailto:linqs.osre25@gmail.com">Eriq Augustine&lt;/a>, &lt;a href="mailto:linqs.osre25@gmail.com">Lucas Ellenberger&lt;/a>, &lt;a href="mailto:linqs.osre25@gmail.com">Lise Getoor&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Questions in the Quiz Composer are described using &lt;a href="https://en.wikipedia.org/wiki/JSON" target="_blank" rel="noopener">JSON&lt;/a> and &lt;a href="https://en.wikipedia.org/wiki/Markdown" target="_blank" rel="noopener">Markdown&lt;/a>
files which contain the question prompt, possible answers, and the correct answer.
(Of course there are many differ &lt;a href="https://github.com/edulinq/quizgen/blob/main/docs/question-types.md" target="_blank" rel="noopener">question types&lt;/a>,
each with different semantics and requirements.)
However, a limitation of this is that each question is always the same.
You can have multiple copies of a question with slightly different prompts, numbers, and answers;
but you are still limited to each question being static and unchanging.
It would be useful to have &amp;ldquo;template questions&amp;rdquo; that can dynamically create static questions from a template
and collection of replacement data.&lt;/p>
&lt;p>The task for this project is to add support for the &amp;ldquo;template questions&amp;rdquo; discussed above.
Much of the high-level design work for this issue has &lt;a href="https://github.com/edulinq/quizgen/issues/26" target="_blank" rel="noopener">already been completed&lt;/a>.
But there is still the implementation and low-level design decision left to do.&lt;/p>
&lt;p>See Also:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://github.com/edulinq/quizgen" target="_blank" rel="noopener">Repository for Quiz Composer&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/edulinq/quizgen/issues/26" target="_blank" rel="noopener">GitHub Issue&lt;/a>&lt;/li>
&lt;/ul></description></item></channel></rss>