CourseReVU App!

This is an example of an acceptable idea for the course project written from the perspective of a student taking OOSE.

My idea for the course project is to build a website where students can comment on and rate their courses. I'm calling it CourseReVU. This is not the end-of-term student survey evaluation that you typically take part in. CourseReVU is meant to be a portal for student-to-student communication. It facilitates what you've been doing forever - checking in with each other to figure out what courses to take (and which ones you might want to avoid).

This is my Elevator Pitch:

CourseReVU is for courses what GoodReads is for books and RottenTomatoes is for movies.

I think there is a need for CourseReVU. I know students use other forums (like reddit) to comment on courses they've taken or to find out their peers' opinion about the courses they are going to take. CourseReVU will be a secure and straightforward platform to streamline that process.

CourseReVU will be a web application (since similar platforms are also web applications) and that easily fits into the Client-Server architecture.

  • For the server (backend), I think I will build an API in Java using SparkJava framework. This is the framework we have worked on in OOSE for a homework and I'm already familiar with Java.
  • I will use PostgreSQL database to provide persistence. This is a relational database and I have some experience writing SQL since I took EN.601.315 Databases.
  • For the client (frontend), I will keep it simple and use HTML, CSS, and JavaScript. I have no experience there but I guess it will be a learning opportunity. There is a ton of tutorial about this on YouTube so I'm in good company! I know there are CSS libraries like TailwindCSS or Bootstrap that make it really easy to make a modern, slick and responsive UI with minimal effort.
  • I talked to the instructor and he feels a web-application with HTML, CSS and JavaScript is a safe choice too! He said if I ever wanted to expand on and move to other platforms, I can use frameworks like Cordova to convert my web-app into cross-platform mobile application. I can use ElectronJS to convert my web-app into cross-platform desktop application.
  • I'll deploy the backend and the frontend on Heroku.

CourseReVU in a nutshell is a CRUD application (Create reviews, Read reviews, $\dots$). So, I must think how I can put a spin on it to go above and beyond CRUD.

I did some reading about student ratings of their courses and some references seem to dismiss the ratings as a popularity contest (see, for instance, the Dr. Fox effect). There are serious questions about the validity and utility of these ratings. Do high ratings show effective teaching or reflect lenient grading? Do they measure competency or showmanship? Ken Bain in his book "What The Best College Teachers Do" notes that "if we ask students the right questions, their answers can help us evaluate the quality of teaching. For instance, students responses to a question like 'Rate your learning in this course,' usually have a high positive correlation with independent measures of their learning."

In lieu of my findings, I think I will not include "rating" in CourseReVU. Moreover, instead of an open-ended review, I will have reviewers to answer the following questions:

  • What did you learn from this class?
  • What advise do you have for someone who wants to take this class?

I can use a Wordfilter API to catch insensitive/inconsiderate writing. I can use Natural Language Processing (NLP) to perform Sentiment Analysis on the reviews, produce Word Clouds or create Automatic Summarization from the reviews. This will be where my application goes beyond a simple CRUD! It's not that difficult these days to perform such high-level tasks if we were to rely on third-party services such as Google Cloud's NLP API.

CourseReVU potential users are students everywhere, although, having such a broad target audience may complicate things. For instance, should I make a distinction between vocational vs. higher education vs. K-12 classes? Should online courses be treated differently from in-person ones? Etc. I think it is best to target a smaller population. I can consider building CourseReVU for CS students at Hopkins (at least for the term project). As an added advantage, I can retrieve the courses information from the SIS API and also integrate with JHU SSO for user authentication.

Here is a draft of CourseReVU's functional requirements:

Must Have

  • As a JHU student, I want to login to CourseReVU using my JHU credentials.
  • As a JHU CS student, I want to search for and select a CS course I've taken so that I can write a review for it.
  • As a student, I want to write about what I've learned from a course I've taken, so that I can share my experience with others.
  • As a student, I want to write a word of advice for students who consider taking a course I've already taken so that they know what to expect and how to succeed.
  • As a student, I want to search for courses I'm considering to take so that I can read their reviews.
  • As a student, I want to browse all the reviews of a course so that I can learn more about a course I'm considering to take.

Nice to Have

  • As a student, I like to see a summary of reviews so that I get an overall impression of what others experienced taking a course.
  • As a student, I want to up-vote/down-vote a review so that I can express if I found the review useful or not.
  • As a student, I want to the reviews to be tagged as "positive", "negative" or "neutral" so that I can get a sense of the sentiment behind a review without having to read it.
  • As a student, I want to filter reviews based on their tags ("positive", "negative", "neutral") so that I can read a few from each to get a balanced perspective on others experience taking the course.
  • As a student, I want to flag a review as an inappropriate so that the admins can remove it from the reviews.
  • As an admin, I want the application automatically flag insensitive/inconsiderate writings so I can identify inappropriate content readily.
  • As an admin, I want to be able to remove a review if deemed inappropriate so that our application would not become an outlet for trolls.