During scheduling, the CPM algorithm conducts a forward pass
that calculates the earliest start and finish dates for each activity, based on
the start or finish dates of predecessor activities along with the
duration of the activity itself. It then conducts a backward pass to calculate
the latest start and finish dates for each activity, based on the start or
finish dates of successor activities and the duration of the activity
itself. From these dates, the total float is calculated for each activity to
determine how much scheduling flexibility each activity has. Activities that
have zero float must start on time to prevent the schedule from slipping. These
are the activities that define the project’s critical path.