The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.

catool: Compensation Analysis Tool

CRAN status
R-CMD-check
Lifecycle: experimental
GitHub version
Walkthrough Vignette

catool (Compensation Analysis Tool) is an R package that calculates fair and transparent overload pay for college instructors. It analyzes course schedules and applies institutional policy rules to determine qualified credit hours and compensation—prorated when needed.


🔧 Key Features


📦 Installation

# Install from GitHub
# install.packages("remotes")
remotes::install_github("dawit3000/catool")

🗂️ Input Format

Your course schedule data must include:

Column Description
INSTRUCTOR Instructor’s name (e.g., “Smith, C”)
ENRLD Enrollment in each course
HRS Credit hours assigned per course

Optional: SUBJ, DEPARTMENT, COLLEGE, and PROGRAM for advanced filtering.


📂 Sample input: The schedule.csv file provides a realistic example of course schedule data used by the package. It includes columns such as SUBJ, CRN, INSTRUCTOR, DEPARTMENT, and COLLEGE.


🧪 Quick Start

library(catool)

schedule <- data.frame(
  INSTRUCTOR = c("al-Abdul", "baxter", "Smith, Courtney"),
  ENRLD = c(12, 7, 4),
  HRS = c(3, 3, 3)
)

# Analyze one instructor
ol_comp(get_instructor_schedule("baxter", schedule))

# Apply one instructor with  a custom policy
ol_comp(get_instructor_schedule("Smith", schedule),
        L = 4, U = 9, rate_per_cr = 2500 / 3, reg_load = 12)

# Summarize full schedule (patroll ready summary of all instructors in the schedule)
ol_comp_summary(schedule)

🔍 Filtering Options

# Filter by subject
filter_schedule(schedule, subject_pattern = "MATH|STAT")
filter_schedule(schedule, subject_pattern = "^MATH|^STAT") # If subject codes are always exact prefi

# Filter by department
filter_schedule(schedule, department_pattern = "Business")

# Filter by instructor
get_instructor_schedule("davis", schedule)

# List all instructors
get_unique_instructors(schedule)

📊 Output Structure

The ol_comp_summary() function returns a clean tibble with:

Note: Pay is never per-course—only on qualified credit hours.


⚖️ Policy Logic

Default institutional policy:

  1. Regular teaching load = 12 credit hours

  2. Courses with ENRLD < 4 are excluded

  3. Qualified credit hours beyond regular load are paid at $2,500 / 3 per hour

  4. For ENRLD < 10, pay is prorated:

    \[ \text{Compensation} = \left(\frac{\text{ENRLD}}{10}\right) \times \text{rate per CR} \times \text{qualified CR} \]

  5. Overload hours are counted starting with the least-enrolled eligible courses


🧭 Instructor vs Institutional Interest Inclination Strategy

You can specify how regular teaching load is assigned when determining overload pay:

This option is supported in both ol_comp() and ol_comp_summary() functions.


📖 Full Walkthrough

🔗 Vignette & Examples

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.