Every semester at my university, students select their courses, and with that, their professors. Sometimes, you can get a really really good professor. Other times, it’s just…🗿.

Now, there’s already a way to actually select good professors, a very messy and unorganized way. Students have groups where they ask these questions to each other:

  • Is this professor bad ?
  • How good is this professor ?
  • Is this professor good ?

Actually, there are few challenges with this method. Firstly, not all students are in these groups, and even if they are, they might not be active on them. Therefore, the chance of someone that has actually taken that course being on that group is very slim. On top of that, most poeople will quit those group after they graduate.

On another hand, there’s no actual grading criteria. Some students can find a professor to be really bad while others can find them to be the best one they ever had.

Another argument is that a lot of people don’t want to give their opinion publicly. So even if they have experience with a professor, they will simply not share it on the groups.

At the same time, there are actually some services that offer a way to rate and find out if a professor is good. However, in my opinion, they do not offer enough control to users. Also, univerities outside the U.S. are virtually non existant.

🥁…🥁…🥁…I introduce you to ITPG. A platform where students can grade their professors. It is private, can be easily self hosted with docker, and offers a lot of fine grained control.

itpg-logo

Also, it offers concrete grading criteria, such as the teaching method, the difficulty of coursework (exams, quizzes, projects, homework), and learning outcomes. Additionally, students can grade professors for each course that they offer. This is good, because some professors might be good at teaching a subject, while being not that good in another.

Enough yapping, let’s now discuss about the design of ITPG. It’s very simple:

  • Backend:
    • Go Backend REST API server (uses negroni, gorilla mux, and the go-chi httprate middleware)
    • Database (SQLite/PostgreSQL) + optional Redis cache
    • User Authentication through secure cookies using the xyproto/permissionbolt package.
    • CLI program to setup the backend using the urfave/cli package.
  • Frontend app (written in sveltekit, styling using beercss)

anyone can write their own frontend app to interact with the backend server.

So basically we have:

database + cache -> api server -> frontend app

That’s it. Here you have an easy and hassle free way to grade and see if a professor is good, ITPG 🗿. Finally, if you you want to set up ITPG for your univeristy and have any questions, feel free to contact me !