Howamidoing

Howamidoing is a tool that displays and forecasts grades for lower-div EECS classes at UC Berkeley.

If you are a current student or staff, you can visit howamidoing.cs61a.org to see it in action!

Features

Students:

  • Authentication with okpy

  • View grade breakdown per assignment

  • Grade planning: test possible scores and view minimum score needed on final for specific grade boundaries

Staff:

  • View histogram

  • Export scores

  • Import grades from CSV

  • Edit configuration

Setup

To develop, create a venv and install the python dependencies in server/requirements.txt, run yarn, then run yarn dev. yarn dev will concurrently run python3 main.py (backend) and yarn start (frontend).

Uploading Grades

A grades.csv file can be uploaded to the server to update grades for students. You can view an example here. Name, Email, SID fields are required (in that order), and the following fields correspond to grades for each assignment.

Editing Configuration

A config.js script can be uploaded to the server. You can view a sample config here. Here is some data that may be customized:

Object

Description

BINS

List of numerical cutoffs (inclusive) corresponding to each grade

GRADES

Name for each grade corresponding to each bin in BINS

COURSE_CODE

String ID of the course

WARNING

Appears on the top of the page in the student view

EXPLANATION

Appears on the top right of the page in student view

EXPLANATION_IS_LINK

Set to true to make the explanation contents clickable

ENABLE_PLANNING

Set to true to allow students to use the grade planning feature

Setup Functions

This file contains server-side utilities needed to set up and manage grade tracking.

howamidoing.server.setup_functions.set_default_config(db)[source]

Sets the configuration to the default configuration, found in public/config/config.js.

Parameters

db (func) – A database query function yielded by common.db.connect_db()

Returns

None

howamidoing.server.setup_functions.set_grades(data, course_code, db)[source]

Sets the grades for a particular course based on some input grades.csv file. An example can be found in public/config/dummy_grade_data.csv.

Parameters
  • data (str) – The contents of a grades.csv file.

  • course_code (str) – The course to set grades for (e.g. ‘cs61a’).

  • db (func) – A database query function yielded by common.db.connect_db()

Returns

None

Main

This file creates all necessary apps and functions to display up-to-date course grades.

howamidoing.server.main.last_updated()[source]
Finds the timestamp of when the current database was last updated

for this course.

Uses a database query function yielded by common.db.connect_db() and the course code returned by common.course_config.get_course()

Returns

Timestamp or Unknown (string) if any exceptions occur while fetching from the current database

howamidoing.server.main.print_to_stderr(print_function)[source]

Writes to sys.stderr using the desired print function.

Parameters

print_function – a print function

Returns

a function that writes the input to sys.stderr using the desired print function