{"id":18929640,"url":"https://github.com/alexanderthclark/automated-grading","last_synced_at":"2026-03-04T15:01:08.136Z","repository":{"id":43880827,"uuid":"511716230","full_name":"alexanderthclark/Automated-Grading","owner":"alexanderthclark","description":"Using Python and LaTeX to grade and write reports","archived":false,"fork":false,"pushed_at":"2025-05-24T15:46:29.000Z","size":84,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-01T11:51:53.697Z","etag":null,"topics":["grading","latex","python"],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alexanderthclark.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-07-08T00:46:58.000Z","updated_at":"2025-05-24T15:46:30.000Z","dependencies_parsed_at":"2025-05-25T02:10:39.020Z","dependency_job_id":"df360b00-8d77-49d1-8367-bd2640ab8dfd","html_url":"https://github.com/alexanderthclark/Automated-Grading","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/alexanderthclark/Automated-Grading","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexanderthclark%2FAutomated-Grading","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexanderthclark%2FAutomated-Grading/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexanderthclark%2FAutomated-Grading/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexanderthclark%2FAutomated-Grading/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alexanderthclark","download_url":"https://codeload.github.com/alexanderthclark/Automated-Grading/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexanderthclark%2FAutomated-Grading/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30084685,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-04T13:22:36.021Z","status":"ssl_error","status_checked_at":"2026-03-04T13:20:45.750Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["grading","latex","python"],"created_at":"2024-11-08T11:34:06.728Z","updated_at":"2026-03-04T15:01:08.129Z","avatar_url":"https://github.com/alexanderthclark.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Automated Grading\n\nThis is sample code for automating some grading steps. For full use, you'll have to put this in a loop and send the scores to some kind of grade file. \n\nThis can be used for complete automation of multiple choice exams. \n\nFor coding, I just provide some simple function output and make no attempt at assigning a numerical score automatically. In practice, I would just use this for quick reference when grading by hand and provide additional comments in a separate file. \n\nShout out to [William Gosset](https://en.wikipedia.org/wiki/William_Sealy_Gosset) as the sample student here. \n\n## Extensions\nUse [pydrive](https://pythonhosted.org/PyDrive/) to send output directly and privately to a student.  \n\n```\nfrom pydrive.auth import GoogleAuth\ngauth = GoogleAuth()\ngauth.LocalWebserverAuth()\nfrom pydrive.drive import GoogleDrive\ndrive = GoogleDrive(gauth)\n\nemail_suffix = '@school.edu'\nid_list = ['alexanderthclark']\ngrade_folder = 'folder_id_string'\n\nfor key, uni in enumerate(id_list):    \n    # create folder if it doesn't already exist\n    # if folder already exists, replace this with finding the folder under the parent folder\n    student_folder = drive.CreateFile({'title': uni, 'parents':[ {'id': grade_folder}], \n                                       'mimeType': 'application/vnd.google-apps.folder'})\n    student_folder.Upload()\n    \n    # make permissions\n    new_perms = {\n      'emailAddress': uni + suffix,\n        'value': uni + suffix,\n      'role': 'reader',\n      'type': 'user'}\n    student_folder.InsertPermission(new_perms)\n    # delete other permissions if necessary ... \n    \n    ## add file\n    fname = f'{uni}_grade_report.pdf'\n    file = drive.CreateFile({'title':'midterm_report','parents': [{'id': student_folder['id']}]})\n    file.SetContentFile(fname)\n    file.Upload()\n   ```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexanderthclark%2Fautomated-grading","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falexanderthclark%2Fautomated-grading","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexanderthclark%2Fautomated-grading/lists"}