mirror of
https://github.com/tgorordo/pages.uoregon.edu.git
synced 2026-06-05 14:42:13 -07:00
basic course content added, more TODO
This commit is contained in:
commit
76468828e3
94 changed files with 22022 additions and 0 deletions
54
files/forms/carousel.cgi
Normal file
54
files/forms/carousel.cgi
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
#!/usr/bin/env -S uv run python
|
||||
|
||||
import cgi, cgitb
|
||||
import sys, os
|
||||
import html
|
||||
|
||||
cgitb.enable()
|
||||
|
||||
form = cgi.FieldStorage()
|
||||
|
||||
if 'spreadsheet' in form:
|
||||
message = """
|
||||
<h1>Matching:</h1>
|
||||
<p><a href="../carousel.html">Go Back</a></p>
|
||||
"""
|
||||
else:
|
||||
message = """
|
||||
<h1>Error</h1>
|
||||
<p>No file field found in the form.</p>
|
||||
<p><a href="../carousel.html">Go Back</a></p>
|
||||
"""
|
||||
|
||||
response = f"""
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title> Carousel - Stable Matching </title>
|
||||
<style>
|
||||
body {
|
||||
font-family: Arial, sans-serif;
|
||||
max-width: 600px;
|
||||
margin: 40px auto;
|
||||
padding: 20px;
|
||||
}
|
||||
h1 {
|
||||
font-size: 24px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
{message}
|
||||
</body>
|
||||
<footer>
|
||||
<hr>
|
||||
<p>Author: <a href="https://pages.uoregon.edu/tgorordo">Thomas (Tom) C. Gorordo</a>
|
||||
Source: <a href="https://github.com/tgorordo/pages.uoregon.edu">pages.uoregon.edu/tgorordo</a>,
|
||||
<a href="https://github.com/tgorordo/carousel">carousel</a></p>
|
||||
</footer>
|
||||
"""
|
||||
|
||||
print(response)
|
||||
77
files/forms/carousel.html
Normal file
77
files/forms/carousel.html
Normal file
|
|
@ -0,0 +1,77 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title> Carousel - Stable Matching </title>
|
||||
<style>
|
||||
body {
|
||||
font-family: Arial, sans-serif;
|
||||
max-width: 600px;
|
||||
margin: 40px auto;
|
||||
padding: 20px;
|
||||
}
|
||||
h1 {
|
||||
font-size: 24px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
label {
|
||||
display: block;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
input[type="file"] {
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
input[type="submit"] {
|
||||
padding: 8px 16px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Carousel: Stable Matcher - CGI Application Upload</h1>
|
||||
|
||||
<div class="form-container">
|
||||
<form action="/files/forms/carousel.cgi" method="POST" enctype="multipart/form-data">
|
||||
<label for="spreadsheet">Upload a preferences spreadsheet (.xlsx, .xls, .csv):</label>
|
||||
<input type="file" id="spreadsheet" name="spreadsheet" accept=".xlsx,.xls,.csv" required>
|
||||
<br>
|
||||
<input type="submit" value="Upload and Match!">
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class="explanation-container">
|
||||
|
||||
<h2>About</h2>
|
||||
<p>This is an upload form for the <a href="https://github.com/tgorordo/carousel">carousel</a> stable matcher (intended only for small matchings), mainly to help assign UO Physics TAs to classes according to preference. This form uses the <a href="https://service.uoregon.edu/TDClient/2030/Portal/KB/ArticleDet?ID=43069">UO pages.uoregon.edu CGI Capability</a>, so the implementation of carousel being invoked can be
|
||||
<a href="https://pages.uoregon.edu/tgorordo/files/carousel/"> inspected here</a>
|
||||
and you may also inspect the source of this page to verify that <a href="https://pages.uoregon.edu/tgorordo/files/forms/carousel.cgi">this script<a> is called to invoke it.
|
||||
</p>
|
||||
|
||||
<p>The <a href="https://en.wikipedia.org/wiki/Stable_matching_problem">Stable Matching Problem</a>
|
||||
(actually the "college admissions" variant of the problem) solved by carousel is to find a
|
||||
"stable" set of assignments between courses/roles and TAs. A stable assignment,
|
||||
in this context, is one in which there is no pair of TA and course role
|
||||
which would prefer each other to their respective assignment given under the matching.
|
||||
This form uses default carousel settings to run a version of the the
|
||||
Gale-Shapley (1962) deferred-acceptance algorithm which finds the stable matching that is
|
||||
optimal for the TA preferences. If other stable solutions are desired, you will need to
|
||||
run carousel as a python application yourself.
|
||||
|
||||
<h3>Input: Expected Spreadsheet Format</h3>
|
||||
<p>A spreadsheet for matching should be organized as a list of TA assignment preferences
|
||||
and a list of course preferences/constraints, i.e. with the following structure:</p>
|
||||
<ul>
|
||||
<li><strong>Column A:</strong> Name (text)</li>
|
||||
</ul>
|
||||
|
||||
<h3>Output: Matching Result Format</h3>
|
||||
<p>This form will return a matching in the form of </p>
|
||||
</div>
|
||||
</body>
|
||||
<footer>
|
||||
<hr>
|
||||
<p>Author: <a href="https://pages.uoregon.edu/tgorordo">Thomas (Tom) C. Gorordo</a>
|
||||
Source: <a href="https://github.com/tgorordo/pages.uoregon.edu">pages.uoregon.edu/tgorordo</a>,
|
||||
<a href="https://github.com/tgorordo/carousel">carousel</a></p>
|
||||
</footer>
|
||||
</html>
|
||||
BIN
files/haskell-logo.png
Normal file
BIN
files/haskell-logo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 5.5 KiB |
52
files/tgorordo-pub.pgp
Normal file
52
files/tgorordo-pub.pgp
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
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
|
||||
8p6I8+YsOgBOjdjPU18Abyas/eD/Xql3
|
||||
=6xCA
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
Loading…
Add table
Add a link
Reference in a new issue