Giter VIP home page Giter VIP logo

seascape's Introduction

seascape

UCSD offers a tool called CAPE, which allows students to report feedback on their course at the end of each term. However, the site has some issues which make the data harder to understand. Most notably, there's no context for any of the numbers, so it's pretty hard to compare classes and professors.

Seascape (Super Extra Awesome Spicier CAPE) is a solution to this, providing visualizations and extra statistics to make CAPE data easier to understand and compare.

For more info, see the blogpost.

Scraping data

Seascape relies on scraping data from the CAPE website for its function; this can be accomplished with the scrape-sparse executable. There are two ways of running it:

  • Without an argument, during which it will use Selenium to navigate to the correct page and scrape the data (you will need to log into your UCSD account during the process).

  • With a file argument pointing to the downloaded CAPE Results page, where the data can be scraped without Selenium.

Acknowledgments

  • CAPE for the original data

  • Smarter CAPEs for the concept & original scraping code

This project was originally created for SPIS 2019.

License

MIT.

seascape's People

Contributors

dcao avatar

Stargazers

Bernie Wu avatar Bradley avatar Jacob Lee avatar Meihui avatar Samir Rashid avatar Alex avatar  avatar Yusuf Morsi avatar Teddy Xinyuan Chen avatar Justin Yao Du avatar Benjamin Chiang avatar Jay S avatar Dominick Lee avatar Xiyan avatar  avatar Christopher Cha avatar Yishan Li avatar Cora Yichen Xing avatar Kunal avatar Amit Bar avatar Digvijay Jani avatar David Cruz avatar Sai avatar  avatar Luke Myers avatar Tung Doan avatar

Watchers

James Cloos avatar  avatar

Forkers

zheran-li

seascape's Issues

Search fails on common cases

In the following cases, search returns non-relevant results:

  • cse8: Zero results, expected CSE 8A/CSE 8B.
  • cse 8a: First result is LIGN 8, expected CSE 8A.
  • dsc 40: First result is DSC 10, expected DSC 40.
  • quar: Zero results, expected courses with Quarfoot, David James.

Hey, I'm also working on a course scheduler

Hi, I'm Shuhua, and I noticed that on your website you said that you'll be making a course scheduler. I wasn't sure how else to message you, but I'm actually working on one too - in C. I just started recently. Perhaps we could work together?

Add Website Icon

The seascape.app website is currently missing a website icon. Consider designing one so that bookmarks and tabs for Seascape look nicer :)

What it looks like right now:
image

Recommend showing search bar while looking at stats

It would make the website more convenient to use if I was able to start a new search from within the stats menu for a professor, instead of having to go back or go to the home page before searching again.

Request: Development Log and Blog Post

Dear @dcao,

I'm a current UCSD student. I really love how aesthetically pleasing seascape is.

I hope to update seascape's data with the latest CAPE datasets to help more UCSD students.

Most of the code in this repo is written in Haskell, and I was wondering if I could have your explanations on the framework you used and explanations for the methods.

I believe you're very busy with other things currently. And I'm wondering if I could have access to the blog post originally posted on this page (https://cao.st/posts/seascape).

Thank you!

Sincerely,
Rebecca

[draft] new codebase structure

as more and more data is getting scraped into seascape, it's becoming increasingly unwieldy trying to manage all the scraped data from these ad-hoc data files. we can split the codebase into two parts:

  • a data backend/api: written in python, with scraping scripts called regularly that write to a central sqlite/other sql database
  • a distinct frontend which reads data from this api - we can use the existing haskell web server or use something else like svelte, phoenix/liveview, etc.

by doing this, we'll have one source of truth for all the data, instead of having to manage several different data files scraped from different places which can have overlapping data. this might also improve frontend dev.

we can also combine these somewhat - e.g. a regular phoenix or haskell app which reads from a database regularly scraped to with scraping scripts.

Quarter course scheduler

  • Have user rank preferences (not a "how much do you care about this 1-10," but a "rank how important each of these are to you")
  • Have user input classes they're considering

Data graphs with limited data

For classes where the professor has only taught for one quarter, improve the visual representation instead of showing a single dot (put something saying not enough data to draw graph)

Use confidence intervals

https://www.evanmiller.org/how-not-to-sort-by-average-rating.html

Right now everything we do is based on averaging out values. However, we currently obscure the underlying uncertainty about classes if they don't have enough reviews. Thus, we should start incorporating Wilson confidence intervals across the whole website. This will involve multiple changes:

  • Refer to implementation in biohazard library, or the provided article.
  • When using Wilson metrics, our sample size is the number of evaluations. Our approval percentages are our p-hat.
  • Change rankings to use Wilson metric
  • Clearly present the number of evaluations on the section page, since it's such a core part of our uncertainty evaluation.
  • Change the box-and-whiskers to show 95% confidence intervals for each prof instead of Q1/Q3.
  • In our sparklines, show the confidence interval in the sparklines?
  • Add an "Uncertainty" section with details on our confidence intervals for all of our data, along with graphs of how our confidence has changed over time
  • Or, in the report card, just add a plus/minus afterwards indicating our uncertainty, or a parenthesized (between x and y)
  • for hours/gpa, we can calculate confidence intervals for sample mean using t dist

Good looking website!

And a backend in Haskell? Appreciate the acknowledgement for the scraping code.

Author of Smarter CAPEs.

Better search ordering

  • Searching is broken currently - ordering is incorrect
  • Ability to sort by arbitrary criteria (last taught, rec instr, etc.)
  • By default, sort by "relevance" (search ranking)

To implement: implement fn to convert list of search results to a map from course to list of sections
fn takes arbitrary sort fn

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.