Importance and quality of the courses are both essential aspects students need to consider when selecting courses. Most existing course databases only provide the basic and official information of every individual course and do not give any suggestions among courses. It requires the students to spend a lot of time researching to find the best courses for them. Our project aims to solve this problem by automatically collecting feedbacks on courses fitting the student’s interests. These feedbacks would be classified as positive or negative and contribute certain points to the courses. A course ranking would be given to the students for reference. This project can be extended for students at other universities that have access to their colleges’ databases.
Scripts use Python3
Install necessary packages with requirements.txt
pip install -r requirements.txt
This bash script makes it easier to run the whole program suite. Before running, you need to put in the username and password in the corresponding places. You can also specify the max URL in the command. If it's the first time to run on your computer, you may need to give this script the permission:
$ sudo chmod +x CourseRank.sh
Then run this script:
$ ./CourseRank.sh
The final course ranking will be redirected to a file score.out
Generates links for atlas_crawler.py
Duo 2FA must be enabled
- input: <UMICH_username> <UMICH_password> <subject_code>
- <subject_code> is optional
- if specified, will generate links for every course with given subject
- if not specified, will generate links for every course available on atlas
- <subject_code> is optional
$ python3 gen_links.py <username> <password> eecs
Script allows 6 seconds to approve sign in on Duo Mobile App
- output: atlas_links_<subject_code>
Crawls links and calculates starting weight
Duo 2FA must be enabled
- input: <links_file> <max_urls> <UMICH_username> <UMICH_password>
- if links_file is larger than 80KB, crawler chooses random links
$ python3 atlas_crawler.py all_atlas_links 2000 <username> <password>
Script allows 6 seconds to approve sign in on Duo Mobile App
- output: course-info
Get the comments based on the course list generated by atlas_crawler.py
Get the related comments on reddit for each course
Output the related comments into a file for each course under the folder of courseReddit/
- input: <course_info>
$ python3 reddit.py course-info
- output:
courseReddit/EECS486.txt
courseReddit/EECS281.txt
courseReddit/LING209.txt
......
Classifies student feedback and calculates final scores
- input: <course_info> <feedback_directory> <training_file>
$ python3 naivebayes.py course-info courseReddit/ testdata.manual.2009.06.14.csv
- output: print out all the courses found with their scores in the reverse order