Analyze student review responses for courses in the Computer Science (CS) program of Oregon State University (OSU)
This program allows analyzing the online survey of course reviews from the CS students in OSU. It helps students answer questions such as:
- Does course difficulty vary from term to term?
- Does course difficulty increase if I take other courses in the same quarter?
- Which course combinations are most difficult taken together?
It also exposes several services for client programs to query course analytics in JSON format. See Communication Contract for further details.
Osuca requires Python 3.7 and newer. It can run on any operating system with Python.
$ mkdir osuca
$ cd osuca
$ python3 -m venv venv
$ . venv/bin/activate
> mkdir myproject
> cd myproject
> py -3 -m venv venv
> venv\Scripts\activate
(venv) pip install osuca
$ export FLASK_APP=osuca
$ export OSUCA_DATA_SOURCE='https://docs.google.com/spreadsheets/d/1MFBGJbOXVjtThgj5b6K0rv9xdsC1M2GQ0pJVB-8YCeU/export?format=csv'
> $env:FLASK_APP = "osuca"
> $env:OSUCA_DATA_SOURCE = "https://docs.google.com/spreadsheets/d/1MFBGJbOXVjtThgj5b6K0rv9xdsC1M2GQ0pJVB-8YCeU/export?format=csv"
flask run
View output in your browser at http://localhost:5000
Osuca returns JSON objects for the following valid HTTP GET requests:
- /courses
- /course-year-aggregates
- /course-quarter-aggregates
For example, $curl http://localhost:5000/courses
will return a JSON list of course objects to the clients.
As shown in the diagram, Osuca requests a CSV document that resides in Google documents containing the scraped student responses. Then it serves the contents of this document in JSON form to clients.
The following shows example responses to the requests.
/courses
[
{
"subject": "CS",
"id": "419",
"name": "Capstone"
},
{
"subject": "CS",
"id": "325",
"name": "Analysis of Algorithms"
}, …
]
/course-year-aggregates
[
{
"course": {
"subject": "CS",
"id": "261",
"name": "Data Structures"
},
"year": "2018",
"aggregate": {
"count": 11,
"sum": 31,
"mean": 2.81
}
}, …
]
/course-quarter-aggregates
[
{
"course": {
"subject": "CS",
"id": "290",
"name": "Web Development"
},
"quarter": {
"term": "Spring",
"year": "2022"
},
"aggregate": {
"count": 6,
"sum": 15,
"mean": 2.5
}
}, …
]
Tolga Ozbakan | tolga@ozbakan.com
This project is licensed under the MIT License - see the LICENSE file for details
Inspiration, code snippets, etc.