Skip to content

senior-knights/course-schedulizer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Course Schedulizer

๐Ÿ“ Create semester schedules without stress. This is the monorepository for the senior-knights/course-schedulizer project. For more information about the application, please view the About Page on our website. For help using the application, visit our Help Page (once we make it).

prod build deployment status https://senior-knights.github.io/course-schedulizer/ dev build

Created by current students at Calvin University for their computer science senior project.

Built with

https://senior-knights.github.io/course-schedulizer/ https://senior-knights.github.io/course-schedulizer/ https://senior-knights.github.io/course-schedulizer/ https://senior-knights.github.io/course-schedulizer/ https://senior-knights.github.io/course-schedulizer/ https://senior-knights.github.io/course-schedulizer/

Background

Every year, all department chairs at Calvin must develop a schedule for their departmentโ€™s classes based on a spreadsheet provided to them by the Registrar. The schedule must contain the times, professors, and rooms for every class section in the department and the schedule must satisfy many constraints, for example: only one section can be in a room at a time, a professor can only teach one section at a time, among others. These constraints make it extremely difficult for the department chair to create a schedule without a tool to help them. We propose building a web application, named the Course Schedulizer, that will allow department chairs to visualize and manipulate their department course schedules. It will provide: the ability to upload and export department schedules via CSV, integration with the spreadsheets provided and required by the Registrar, two views to visualize the schedule data (by location and by instructor), schedule conflict detection and resolution suggestions (for the honors portion), and many other features.

For more information, please visit the About Page.

How to use

Detailed information can be found on our Help Page (once we make it). Access our production website and upload a CSV following the prescribed specifications (items marked with * are optional and ignored, but were required in older versions of the app)

  • Department: string (like Mathematics)
  • *Term: [0-9][0-9]/(FA | SP | IN) (like 21/SP for Spring 2021)
  • TermStart: mm/dd/yyyy (like 3/29/2021 or 12/1/2022)
  • *AcademicYear: yyyy (like 2021)
  • *SectionName: SubjectCode-CourseNum-SectionCode (like MATH-252-B)
  • SubjectCode: string (like MATH)
  • CourseNum: string (like 252 or 252L for a lab)
  • SectionCode: string (like B)
  • CourseLevelCode: pos num (like 200 for a 200 level course)
  • MinimumCredits: pos num (like 3 or 3.5)
  • FacultyLoad: pos num (like 4 or 4.5)
  • *Used: pos num (like 20)
  • *Day10Used: pos num (like 22)
  • *LocalMax: pos num (like 25)
  • *GlobalMax: pos num (like 30)
  • *RoomCapacity: pos num (like 32)
  • BuildingAndRoom: string (like HH 345)
  • MeetingDays: M?T?W?(TH)?F? (like MWTHF)
  • MeetingTime: xx:xx(AM | PM) - xx:xx(AM | PM) (like 9:00AM - 9:50AM)
  • SectionStartDate: mm/dd/yyyy (like 3/29/2021 or 12/1/2022)
  • SectionEndDate: mm/dd/yyyy (like 3/29/2021 or 12/1/2022)
  • *Building: string (like HH)
  • *RoomNumber: string (like 345)
  • MeetingStart: xx:xx(AM | PM) (like 2:30PM)
  • *MeetingStartInternal: xx:xx:xx 24-hour (like 14:30:00)
  • MeetingEnd: xx:xx(AM | PM) (like 3:20PM)
  • *MeetingEndInternal: xx:xx:xx 24-hour (like 13:20:00)
  • *Monday: M or empty
  • *Tuesday: T or empty
  • *Wednesday: W or empty
  • *Thursday: TH or empty
  • *Friday: F or empty
  • ShortTitle: string (like Number Theory)
  • Faculty: string (first and last) (like Paul Erdos)
  • *SectionStatus: string (like Active)
  • InstructionalMethod: LEC, CPI, IND, TUT, or SEM
  • DeliveryMode: In-person, Online (synchronous), Online (asynchronous), Hybrid

Development

Basic Introduction

This is a mono repository for the Course Schedulizer project. It is best used with VS Code. To begin editing, open the workspace file, located in .vscode/, with VS Code. Opening the workspace in VS Code will prompt to install extensions; please do so.

This provides information about the root repository, for the client app information, please view the client-course-schedulizer/README.md.

Development Philosophy

production branch is a persistent branch that contains the most stable version of the Course Schedulizer. It requires two reviews to merge PRs to this branch.

develop branch is a persistent branch that contains the cutting edge version of the Course Schedulizer. It requires one review to merge PRs to this branch. Each PR is ideally around 100-200 LOC.

Code reviews are done on every PR merged into the two persistent branches. A PR is made with a branch following the naming convention of <broad>/<specific>. <broad> are things like feature, docs, chore, fix, etc.

Repository Configuration

Because the application is open source, we use free minutes of GitHub actions to perform CI/CD. ci.yml tests on any push or PR against develop or production.

.vscode/ contains the directory settings. It most notably uses Prettier to format code on save. Formatting will fix ESLint issues, organize imports, and then fix Editor Config and Prettier issues. .editorconfig and .prettierrc.js are located in the root, and .eslint.js is specific to each application. For example, the client config is located inside the client folder.