Skip to content

TheorieLearn/TheorieLearn

Repository files navigation

TheorieLearn Public Repository

Slack

TheorieLearn logo

Welcome to TheorieLearn!

This is a public repository of scaffolding exercises for theoretical computer science, implemented on the on the PrairieLearn platform. These exercises were designed for CS 374 and other courses that teach theoretical computer science at the University of Illinois Urbana-Champaign.

A public practice course containing all our available exercises is available on PrairieLearn to anyone with a Microsoft account, Google account, or login credentials at a university with a PrarieLearn license.

For more information about the TheorieLearn project, including developers, publications, instructor usage, and funding information, please see the project page at https://theorielearn.github.io/.

For questions specific to this repository, feel free to join the TheorieLearn Slack or email the project director Jeff Erickson ([email protected]). For more general PrairieLearn questions, we recommend joining the PrairieLearn Slack; Jeff and other members of the TheorieLearn team are active on this Slack space.

Copyright and License Information

Copyright © 2026 TheorieLearn

You may freely free to use, copy, adapt, remix, and/or redistribure any questions, assessments, elements, or other code from this repository, subject to the terms of these licenses. In particular, if you redistribute any code, please include a link either to this repository https://github.com/TheorieLearn/TheorieLearnPublic or to the main TheorieLearn page https://theorielearn.github.io/

These resources are based in part on Jeff Erickson's Algorithms textbook and other course materials, which are also freely available.

How to Use Our Resources in Your Own PrairieLearn Course

Copying Questions

To use a question or series of questions, copy the question folders from our questions/ into your own questions/ folder. Some questions have shared code and resources located in serverFilesCourse/theorielearn/. The easiest way would be to place this theorielearn/ subdirectory into your own serverFilesCourse, which will automatically support any question you import from here. You can optionally delete subfolders in theorielearn/ that aren't imported by the questions you use.

A select few questions have shared resources located in clientFilesCourse/. Please check if the questions you use utilize this directory and copy what you need.

Copying Elements

To use an element, copy the elements you want from elements/ into your own elements/ folder. Each element is self contained and should work without external code.

Automatic Script

TBA! We will provide a script in the future that will let you select questions and elements you want and package it for you to drop in your course, automatically.

Contributing to TheorieLearn

We welcome participation with TheorieLearn in many ways. First we hope that you take and adapt the material here for use in your own courses. This can be done by copying material from the repo or by forking. If you fork it is a boon for the project if you make your fork public.

Our goal with the public TheorieLearn repository is not to produce canned courses so when considering pull requests we are not interested in more questions of the same style we already have. We are interested in new ways of teaching and testing theory material as well as bug fixes.

All contributions to the TheorieLearn repository must be made via pull requests. If you have something you would like to contribute to the core repository please feel free to make a pull request. All contributions will need to be licensed with the same licensing described above.

About

PrairieLearn resources for algorithms classes

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors