What is a Program?
A Program is the core organizational unit in the ESP Website. Each program represents a distinct educational event, such as:- Splash Fall 2024 - A weekend program with hundreds of classes
- HSSP Spring 2024 - A multi-week Saturday program
- Spark 2024 - A one-day program for younger students
Program Structure
Key Components
A program consists of several interconnected elements:Classes
The educational content offered during the program (see Classes)
Users
Students, teachers, and administrators participating in the program (see Users)
Registrations
How students sign up for and enroll in classes (see Registration)
Schedule
Time blocks and room assignments for when classes meet
Database Model
TheProgram model is defined in esp/esp/program/models/__init__.py and includes:
Program Identification
Each program has two key identifiers:Program URL
The URL uniquely identifies a program and follows the pattern:{type}/{instance}
Examples:
Splash/2024_FallHSSP/2024_SpringSpark/2024
The program URL is used throughout the website in paths like
/learn/Splash/2024_Fall/catalog or /teach/HSSP/2024_Spring/Program Name
The human-readable name displayed to users, like “Splash Fall 2024” or “HSSP Spring 2024”.Program Types and Instances
Programs are organized by type and instance:- Program Type: The kind of program (e.g., “Splash”, “HSSP”, “Spark”)
- Program Instance: The specific occurrence (e.g., “2024_Fall”, “2024_Spring”)
Configuration Options
Grade Restrictions
Programs can specify which grades are eligible:Capacity Management
Programs can have enrollment caps:- program_size_max: Overall program capacity (0 = no cap)
- program_allow_waitlist: Whether to allow waitlisted students
- program_size_by_grade: Tag for per-grade capacity limits
Director Contact
Each program has contact emails for different purposes:- director_email: Main contact for the program
- director_cc_email: CC’d on automated emails (optional)
- director_confidential_email: For sensitive communications like financial aid (optional)
Program Modules
Programs use a modular system for features. Modules can be enabled/disabled per program:Student Registration Modules
Student Registration Modules
- StudentClassRegModule: Core class registration
- StudentRegCore: Basic student registration
- StudentRegTwo: Two-phase lottery registration
Teacher Modules
Teacher Modules
- TeacherClassRegModule: Class submission and management
- AvailabilityModule: Teacher availability entry
- TeacherEventsModule: Teacher interviews/training
Administrative Modules
Administrative Modules
- AdminClass: Class management interface
- AJAXSchedulingModule: Drag-and-drop scheduling
- ResourceModule: Room and resource management
See the Program Modules documentation for a complete list and detailed descriptions.
Working with Programs
Getting Current Programs
The system can identify “current” programs based on dates:Accessing Program Data
Program Permissions
Administrators need specific permissions for each program:Program Lifecycle
Creating a Program
- Create the Program object with basic info (name, URL, grade range)
- Add program modules to enable features
- Configure settings via Tags (program-specific configuration)
- Create time blocks for when classes can meet
- Set up resources (classrooms, equipment)
- Open teacher registration to collect class proposals
- Review and approve classes
- Create schedule by assigning times and rooms
- Open student registration
- Run the program!
Post-Program
After a program ends:- Classes are archived for historical reference
- Reports can be generated on attendance, class popularity, etc.
- Data is retained for future program planning
Related Models
ClassSubject
Individual classes offered in the program
ClassSection
Specific meeting times/instances of classes
Event
Time blocks when classes can be scheduled
Resource
Classrooms and equipment available