Skip to content

dawit3000/OCA

Repository files navigation

OCA (Overload Compensation App) is a Shiny web application designed to calculate fair instructor pay for overload teaching assignments in higher education. It applies institutional policy while offering strategic flexibility — allowing administrators to favor cost-saving, faculty retention, or a balanced approach.

Key Features / How It Works

Upload Your Teaching Schedule

  • Provide a .csv file with scheduled courses, instructor names, credit hours, and enrollments.

  • The file may come from:

    • Local data folder
    • URL pointing to such file

🔍 Required columns (exact names):

  • INSTRUCTOR — Instructor name
  • SUBJ — Course identifier (e.g., MATH 1111 or ENGL 2111-02)
  • HRS — Credit hours
  • ENRLD — Enrollment

🔍 Filter Courses by (Optional)

  • SUBJ — Subject (required column)
  • INSTRUCTOR — Instructor (required column)
  • COLLEGE — College (optional column, if available)
  • DEPARTMENT — Department (optional column, if available)
  • PROGRAM — Program (optional column, if available)

⚙️ Set Institutional Policy Parameters

  • Pay rate per qualified credit hour

  • Regular teaching load (in credit hours)

  • Minimum and maximum enrollment thresholds for proration

    👉 For institutions without a proration policy (full pay even for low-enrolled courses), set both L and U to 0.

🎚 Select a Compensation Strategy per institutional policy

  • Favor Institution → prioritizes cost savings
  • Favor Faculty → prioritizes fairness
  • Blend → weighted average between the two extremes

📊 Review Compensation Results

  • Instructor- and institution-level pay by strategy — with a slider to favor institution, faculty, or blended strategies in the output
  • Comparison tables and summaries for clear side-by-side evaluation
  • Customizable output — select only the columns you want to visualize or download, with results displayed in the desired order, e.g., : INSTRUCTOR, SUBJ, HRS, ENRLD, QHRS, PAY, TYPE, SUMMARY
  • SUMMARY block — appended after instructor rows, providing payroll-ready totals with overload rate, qualified hours, and notes
  • Visual charts to highlight compensation differences (includes institution-wide totals when charting is enabled)

📸 Screenshot – UI for Left Panel


OCA Dashboard

OCA Dashboard

📸 Screenshot – Strategy Output Comparison


OCA Output Chart

OCA Output Chart

🖥️ Output

  • Strategy-Based Comparison Tables — detailed breakdowns of compensation with totals and summaries

    • QHRS — qualified credit hours used for compensation
    • PAY — compensation amount corresponding to QHRS
    • TYPE — indicates whether the pay is prorated (PRO) or full
    • SUMMARY — appended block with payroll-ready totals, overload rate, qualified hours, and notes
    • Column order — users may reorder or select only the columns they want to display or download. A typical sequence is: INSTRUCTOR, SUBJ, HRS, ENRLD, QHRS, PAY, TYPE, SUMMARY.
  • Strategy Comparison — instructor- and institution-level pay under all favored strategies (Institution, Faculty, Blend) displayed side by side

  • Charts — visualize compensation differences across strategies, including institution-wide totals when charting is enabled

🖥️ Deployment

The OCA App is now live hosted at shinyapps.io:

👉 Launch OCA

📁 Sample Data

Try the app using these example schedules:

🧰 Powered By

  • catool – R package for calculating overload pay based on institutional policy
  • shiny – R package for building interactive web applications

📄 Related Articles

  • “catool: An R Package for Automating Fair Compensation in Higher Education”
    (Submitted to The R Journal)

  • “OCA: A Shiny Web Application for Transparent Overload Compensation in Higher Education”
    (In preparation for submission to SoftwareX)

💻 Note:

OCA assumes a basic familiarity with faculty overload policies. For new users, future versions may include tooltips and in-app help. In the meantime, this guide provides clarifications on how proration, pay rates, and thresholds are applied within the app.

💻 Run Locally

# Install required packages
install.packages(c("shiny", "catool", "dplyr", "readr", "ggplot2", "DT", "shinyWidgets"))

# Run the app
library(shiny)
runApp("path/to/OCA_shinyApp")
---

About

Transparent Overload Compensation App (OCA)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages