Study guide

2.3 Forward and Backward Pass Mathematical Mechanics

AACE Planning and Scheduling Professional PSP

Track your progress as you read

Finished sections get a check mark.

1 Chapter 0: Introduction & AACE PSP Exam Structure

0.1 Current AACE PSP Exam, Eligibility, and Certification Facts 0.2 Planning and Scheduling Professional Roles and Competencies 0.3 Cost Engineering and Scheduling Terminology per RP 10S-90

2 Chapter 1: Scope Definition & Planning Fundamentals

1.1 Work Breakdown Structure (WBS) Architecture & RP 33R-15 1.2 Organization & Resource Breakdown Structures (OBS, RBS, RAM) 1.3 Project Planning and Activity-Logic Development 1.4 Contract Requirements and Delivery Constraints 1.5 Stakeholder Identification, Needs, and Plan Review 1.6 Constructability Methods and Value Engineering 1.7 Resource Identification and Project Variables 1.8 Scope, Goals, Project Plan, and Phase Definition 1.9 Cost Breakdown Structure and Cost Estimate Development 1.10 Phase Relationships, Baseline Plan, Forecasts, and Risk/Recovery Planning

3 Chapter 2: Critical Path Method Mechanics & Network Logic

2.1 Activity Definition and Logic Relationships 2.2 Activity Durations, Productivity, and Work Calendars 2.3 Forward and Backward Pass Mathematical Mechanics 2.4 Float Calculations and Critical-Path Identification

4 Chapter 3: Advanced Network Techniques & Schedule Constraints

3.1 Schedule Constraints and Their Impact on Dates and Float 3.2 Advanced Logic Modeling: Ladders and Fragnets 3.3 Schedule Levels of Detail and Schedule Basis Documentation 3.4 Schedule Scope and Schedule Specification 3.5 Breakdown-Structure Relationships and the Cost Estimate Model 3.6 Stakeholder Feedback and Types of Schedules 3.7 Activities, Milestones, Schedule Quality, and Basis Documentation

5 Chapter 4: Resource Management & Leveling

4.1 Resource Planning, Allocation, and Histograms 4.2 Resource Leveling vs. Resource Smoothing 4.3 Cumulative Resource S-Curves & Productivity Tracking

6 Chapter 5: Baseline Management & Schedule Updating

5.1 Baseline Establishment, Forecasts, and Controlled Revision 5.2 Progress Measurement and Data Date Mechanics 5.3 Out-of-Sequence Logic: Progress Override vs. Retained Logic 5.4 Schedule Update Review and Quality Verification per RP 53R-06 5.5 Cost/Resource Management, Schedule Change, and Feedback 5.6 Acceleration and Recovery Scheduling per RP 54R-07 5.7 Control Schedules, Variance Analysis, Forecasts, and Management Summaries

7 Chapter 6: Schedule Risk Analysis & Monte Carlo Simulation

6.1 Schedule Risk Principles, Risk Drivers, and Three-Point Estimates 6.2 Monte Carlo Simulation, Criticality, Correlation, and Merge Effects 6.3 Risk Outputs, Confidence Dates, Sensitivity, and Contingency

8 Chapter 7: Earned Value & Earned Schedule Management

7.1 Earned Value Foundations: PV, EV, AC, and Variances 7.2 Traditional EV Performance Indices & Late-Project Quirks 7.3 Earned Schedule (ES) Theory, SV(t), and SPI(t) 7.4 Independent Schedule Forecasting & IEAC(t)

9 Chapter 8: Forensic Schedule Analysis & Delay Claims

8.1 Delay Classification, Criticality, and Contract Questions 8.2 RP 29R-03 Taxonomy, Data Validation, and Method Selection 8.3 TIA, Windowed Analysis, and Subtractive Models 8.4 Concurrency, Pacing, and Float: Technical Analysis Before Entitlement

10 Chapter 9: Executive Communication & Practical Scenario Applications

9.1 Official PSP Memo Writing Framework 9.2 Structured Technical Problem-Solving for PSP Scenarios 9.3 Current Exam Strategy and Core Calculation Review

2.3 Forward and Backward Pass Mathematical Mechanics

Key Takeaways Explain This Topic AI

The forward pass moves chronologically from project start to finish, calculating Early Start (ES) and Early Finish (EF), selecting the maximum constraint at merge nodes.

The backward pass moves in reverse chronological order from project completion to start, calculating Late Finish (LF) and Late Start (LS), selecting the minimum constraint at burst nodes.

Under the zero-based convention, EF = ES + Duration and LS = LF - Duration; under the one-based convention, EF = ES + Duration - 1 and LS = LF - Duration + 1.

Start-to-Start (SS) relationships constrain successor Early Start (ES_succ = max(ES_pred + Lag)), while Finish-to-Finish (FF) relationships constrain successor Early Finish (EF_succ = max(EF_pred + Lag)).

Driving logic identifies which specific predecessor relationship governs an activity's early start when multiple incoming dependencies exist.

Last updated: October 2026

2.3 Forward and Backward Pass Mathematical Mechanics

The Critical Path Method executes two sequential mathematical algorithms across the network model: the Forward Pass and the Backward Pass . Together, these calculations determine the earliest and latest possible dates each activity can occur without extending the overall project duration.

The CPM Activity Block Layout

In CPM precedence diagramming, activity data is traditionally presented in a standardized six-compartment block (or node): ┌──────────────┬──────────────┬──────────────┐

  • │ Early Start │ Duration │ Early Finish │
  • │ (ES) │ (D) │ (EF) │
  • ├──────────────┴──────────────┴──────────────┤
  • │ Activity ID & Name │
  • ├──────────────┬──────────────┬──────────────┤
  • │ Late Start │ Total Float │ Late Finish │
  • │ (LS) │ (TF) │ (LF) │
  • └──────────────┴──────────────┴──────────────┘
  • Zero-Based vs. One-Based Date Calculation Conventions

A primary source of calculation error on scheduling exams and in field practice is confusion between the zero-based convention (end-of-day / continuous timeline) and the one-based convention (calendar workday numbers).

Mathematical Rule Zero-Based Convention (Continuous Time) One-Based Convention (Calendar Day Numbers)

Concept Points in time on a continuous axis ( t = 0 , 1 , 2 , … t = 0, 1, 2, \dots t = 0 , 1 , 2 , … ). Numbered working days (Day 1, Day 2, Day 3, … \dots … ).

Project Start Start of Project = Day 0 Start of Project = Day 1

Early Finish (EF) E F = E S + Duration \mathbf{EF = ES + \text{Duration}} EF = ES + Duration E F = E S + Duration − 1 \mathbf{EF = ES + \text{Duration} - 1} EF = ES + Duration − 1

Successor ES (FS=0) E S succ = E F pred ES_{\text{succ}} = EF_{\text{pred}} E S succ ​ = E F pred ​ E S succ = E F pred + 1 ES_{\text{succ}} = EF_{\text{pred}} + 1 E S succ ​ = E F pred ​ + 1

Late Start (LS) L S = L F − Duration \mathbf{LS = LF - \text{Duration}} LS = LF − Duration L S = L F − Duration + 1 \mathbf{LS = LF - \text{Duration} + 1} LS = LF − Duration + 1

Predecessor LF (FS=0) L F pred = L S succ LF_{\text{pred}} = LS_{\text{succ}} L F pred ​ = L S succ ​ L F pred = L S succ − 1 LF_{\text{pred}} = LS_{\text{succ}} - 1 L F pred ​ = L S succ ​ − 1

Total Float (TF) T F = L S − E S = L F − E F TF = LS - ES = LF - EF TF = L S − ES = L F − EF T F = L S − E S = L F − E F TF = LS - ES = LF - EF TF = L S − ES = L F − EF

Why Both Exist

Zero-Based Convention : A useful continuous-time convention for hand calculations: a 5-day activity starting at time 0 finishes at time 5.0 ( 0 + 5 = 5 0 + 5 = 5 0 + 5 = 5 ), when its zero-lag FS successor can begin. Commercial tools use product-specific calendar, time-of-day, and display settings, so confirm those settings before reconciling dates.

One-Based Convention : Used when presenting calendar dates to human field teams. If an activity starts on the morning of Monday (Day 1) with a 5-day duration, it finishes on the evening of Friday (Day 5), calculated as 1 + 5 − 1 = 5 1 + 5 - 1 = 5 1 + 5 − 1 = 5 . The successor starts on the morning of the next working day, Day 6 ( 5 + 1 = 6 5 + 1 = 6 5 + 1 = 6 ).

Tip

PSP Exam Strategy : Unless an exam question explicitly specifies calendar dates or Day 1 start, professional CPM mathematical calculations use the zero-based convention for pure integer arithmetic. Both systems yield identical duration, float, and critical path results.

The Forward Pass Algorithm

The forward pass determines the Early Start (ES) and Early Finish (EF) dates. It calculates the earliest possible project completion date.

Step-by-Step Forward Pass Rules:

Initialize Project Start : For initial activities with no predecessors, set E S = 0 ES = 0 ES = 0 (zero-based).

Calculate Early Finish : E F = E S + Duration EF = ES + \text{Duration} EF = ES + Duration .

Traverse Network : Move sequentially from left to right across dependency links.

Evaluate Relationship Constraints :

Finish-to-Start (FS) : E S succ ≥ E F pred + Lag F S ES_{\text{succ}} \ge EF_{\text{pred}} + \text{Lag}_{FS} E S succ ​ ≥ E F pred ​ + Lag FS ​

Start-to-Start (SS) : E S succ ≥ E S pred + Lag S S ES_{\text{succ}} \ge ES_{\text{pred}} + \text{Lag}_{SS} E S succ ​ ≥ E S pred ​ + Lag SS ​

Finish-to-Finish (FF) : E F succ ≥ E F pred + Lag F F EF_{\text{succ}} \ge EF_{\text{pred}} + \text{Lag}_{FF} E F succ ​ ≥ E F pred ​ + Lag FF ​

If constrained by an FF relationship, the resulting Early Start is: E S succ = E F succ − Duration ES_{\text{succ}} = EF_{\text{succ}} - \text{Duration} E S succ ​ = E F succ ​ − Duration .

Resolve Merge Nodes (Convergence) : When an activity has multiple incoming predecessors, its Early Start is governed by the maximum (latest) calculated constraint:

E S j = max ⁡ i ( Constraint i ) ES_j = \max_{i} \left( \text{Constraint}_i \right) E S j ​ = max i ​ ( Constraint i ​ )

The predecessor that creates the maximum value is the driving predecessor .

The Backward Pass Algorithm

The backward pass determines the Late Finish (LF) and Late Start (LS) dates. It calculates the latest dates activities can occur without delaying the overall project completion date.

Step-by-Step Backward Pass Rules:

Initialize Project Completion : For terminal activities with no successors, set Late Finish equal to Early Finish ( L F = E F LF = EF L F = EF ), unless an external contract completion deadline is imposed.

Calculate Late Start : L S = L F − Duration LS = LF - \text{Duration} L S = L F − Duration .

Traverse Network : Move sequentially from right to left across dependency links.

Evaluate Relationship Constraints :

Finish-to-Start (FS) : L F pred ≤ L S succ − Lag F S LF_{\text{pred}} \le LS_{\text{succ}} - \text{Lag}_{FS} L F pred ​ ≤ L S succ ​ − Lag FS ​

Start-to-Start (SS) : L S pred ≤ L S succ − Lag S S LS_{\text{pred}} \le LS_{\text{succ}} - \text{Lag}_{SS} L S pred ​ ≤ L S succ ​ − Lag SS ​

If constrained by an SS relationship, the resulting Late Finish is: L F pred = L S pred + Duration LF_{\text{pred}} = LS_{\text{pred}} + \text{Duration} L F pred ​ = L S pred ​ + Duration .

Finish-to-Finish (FF) : L F pred ≤ L F succ − Lag F F LF_{\text{pred}} \le LF_{\text{succ}} - \text{Lag}_{FF} L F pred ​ ≤ L F succ ​ − Lag FF ​

Resolve Burst Nodes (Divergence) : When an activity has multiple outgoing successors, its Late Finish is governed by the minimum (earliest) calculated constraint:

L F i = min ⁡ j ( Constraint j ) LF_i = \min_{j} \left( \text{Constraint}_j \right) L F i ​ = min j ​ ( Constraint j ​ )

The successor that creates the minimum value is the driving successor .

Comprehensive Worked Numerical Example: 5-Activity Network

Let us calculate a 5-activity network containing standard Finish-to-Start links, a Start-to-Start lag, and a Finish-to-Finish lag, using the zero-based convention.

Activity Definitions & Logic:

Activity A : "Mobilization & Site Clearing", Duration = 4 days . Predecessors: None.

Activity B : "Bulk Excavation", Duration = 6 days . Predecessor: Activity A (FS = 0).

Activity C : "Underground Utility Trenching", Duration = 5 days . Predecessor: Activity A (SS with lag = +2 days ).

Activity D : "Foundation Concrete Work", Duration = 7 days . Predecessors:

  • Predecessor 1: Activity B (FS = 0)
  • Predecessor 2: Activity C (FF with lag = +3 days )

Activity E : "Backfill & Grading", Duration = 3 days . Predecessor: Activity D (FS = 0). ┌───► [Activity B (D=6)] ──(FS=0)───┐

  • │ ▼
  • [Activity A (D=4)] ─┤ [Activity D (D=7)] ──(FS=0)──► [Activity E (D=3)]
  • │ ▲
  • └───► [Activity C (D=5)] ──(FF=+3)──┘
  • (SS = +2)

Forward Pass Step-by-Step:

Activity A (Duration = 4) :

Has no predecessors → E S A = 0 \rightarrow ES_A = 0 → E S A ​ = 0 .

E F A = E S A + D A = 0 + 4 = 4 EF_A = ES_A + D_A = 0 + 4 = \mathbf{4} E F A ​ = E S A ​ + D A ​ = 0 + 4 = 4 .

Activity B (Duration = 6) :

Predecessor A via FS = 0 → E S B = E F A = 4 \rightarrow ES_B = EF_A = \mathbf{4} → E S B ​ = E F A ​ = 4 .

E F B = E S B + D B = 4 + 6 = 10 EF_B = ES_B + D_B = 4 + 6 = \mathbf{10} E F B ​ = E S B ​ + D B ​ = 4 + 6 = 10 .

Activity C (Duration = 5) :

Predecessor A via SS with lag +2 → E S C = E S A + 2 = 0 + 2 = 2 \rightarrow ES_C = ES_A + 2 = 0 + 2 = \mathbf{2} → E S C ​ = E S A ​ + 2 = 0 + 2 = 2 .

E F C = E S C + D C = 2 + 5 = 7 EF_C = ES_C + D_C = 2 + 5 = \mathbf{7} E F C ​ = E S C ​ + D C ​ = 2 + 5 = 7 .

Activity D (Duration = 7) [Merge Node]:

From Predecessor B (FS = 0): Requires E S D ≥ E F B = 10 ES_D \ge EF_B = 10 E S D ​ ≥ E F B ​ = 10 .

From Predecessor C (FF = +3): Requires E F D ≥ E F C + 3 = 7 + 3 = 10 EF_D \ge EF_C + 3 = 7 + 3 = 10 E F D ​ ≥ E F C ​ + 3 = 7 + 3 = 10 . This implies E S D ≥ E F D − D D = 10 − 7 = 3 ES_D \ge EF_D - D_D = 10 - 7 = 3 E S D ​ ≥ E F D ​ − D D ​ = 10 − 7 = 3 .

Evaluate maximum constraint for Early Start: E S D = max ⁡ ( 10 , 3 ) = 10 ES_D = \max(10, 3) = \mathbf{10} E S D ​ = max ( 10 , 3 ) = 10 .

Calculate Early Finish: E F D = E S D + D D = 10 + 7 = 17 EF_D = ES_D + D_D = 10 + 7 = \mathbf{17} E F D ​ = E S D ​ + D D ​ = 10 + 7 = 17 .

(Driving Predecessor is Activity B) .

Activity E (Duration = 3) :

Predecessor D via FS = 0 → E S E = E F D = 17 \rightarrow ES_E = EF_D = \mathbf{17} → E S E ​ = E F D ​ = 17 .

E F E = E S E + D E = 17 + 3 = 20 EF_E = ES_E + D_E = 17 + 3 = \mathbf{20} E F E ​ = E S E ​ + D E ​ = 17 + 3 = 20 .

Project Early Completion Date = Day 20 .

Backward Pass Step-by-Step:

Activity E (Duration = 3) :

Set L F E = E F E = 20 LF_E = EF_E = \mathbf{20} L F E ​ = E F E ​ = 20 .

L S E = L F E − D E = 20 − 3 = 17 LS_E = LF_E - D_E = 20 - 3 = \mathbf{17} L S E ​ = L F E ​ − D E ​ = 20 − 3 = 17 .

Activity D (Duration = 7) :

Successor E via FS = 0 → L F D = L S E = 17 \rightarrow LF_D = LS_E = \mathbf{17} → L F D ​ = L S E ​ = 17 .

L S D = L F D − D D = 17 − 7 = 10 LS_D = LF_D - D_D = 17 - 7 = \mathbf{10} L S D ​ = L F D ​ − D D ​ = 17 − 7 = 10 .

Activity B (Duration = 6) :

Successor D via FS = 0 → L F B = L S D = 10 \rightarrow LF_B = LS_D = \mathbf{10} → L F B ​ = L S D ​ = 10 .

L S B = L F B − D B = 10 − 6 = 4 LS_B = LF_B - D_B = 10 - 6 = \mathbf{4} L S B ​ = L F B ​ − D B ​ = 10 − 6 = 4 .

Activity C (Duration = 5) :

Successor D via FF with lag +3 → \rightarrow → Requires L F C ≤ L F D − 3 = 17 − 3 = 14 LF_C \le LF_D - 3 = 17 - 3 = 14 L F C ​ ≤ L F D ​ − 3 = 17 − 3 = 14 .

L S C = L F C − D C = 14 − 5 = 9 LS_C = LF_C - D_C = 14 - 5 = \mathbf{9} L S C ​ = L F C ​ − D C ​ = 14 − 5 = 9 .

Activity A (Duration = 4) [Burst Node]:

To Successor B via FS = 0: Requires L F A ≤ L S B = 4 LF_A \le LS_B = 4 L F A ​ ≤ L S B ​ = 4 .

To Successor C via SS with lag +2: Requires L S A ≤ L S C − 2 = 9 − 2 = 7 LS_A \le LS_C - 2 = 9 - 2 = 7 L S A ​ ≤ L S C ​ − 2 = 9 − 2 = 7 , which implies L F A ≤ L S A + D A = 7 + 4 = 11 LF_A \le LS_A + D_A = 7 + 4 = 11 L F A ​ ≤ L S A ​ + D A ​ = 7 + 4 = 11 .

Evaluate minimum constraint for Late Finish: L F A = min ⁡ ( 4 , 11 ) = 4 LF_A = \min(4, 11) = \mathbf{4} L F A ​ = min ( 4 , 11 ) = 4 .

L S A = L F A − D A = 4 − 4 = 0 LS_A = LF_A - D_A = 4 - 4 = \mathbf{0} L S A ​ = L F A ​ − D A ​ = 4 − 4 = 0 .

(Driving Successor is Activity B) .

Network Summary Table

Act ID Activity Description Duration Predecessors ES EF LS LF Total Float Free Float Critical?

  • A Mobilization & Site Clearing 4 None 0 4 0 4 0 0 Yes
  • B Bulk Excavation 6 A (FS=0) 4 10 4 10 0 0 Yes
  • C Underground Utility Trenching 5 A (SS=+2) 2 7 9 14 7 0 No
  • D Foundation Concrete Work 7 B (FS=0), C (FF=+3) 10 17 10 17 0 0 Yes
  • E Backfill & Grading 3 D (FS=0) 17 20 17 20 0 0 Yes

Critical Path : A → B → D → E A \rightarrow B \rightarrow D \rightarrow E A → B → D → E (Total Duration = 20 days). Non-Critical Activity : Activity C has Total Float = 7 days ( 9 − 2 = 7 9 - 2 = 7 9 − 2 = 7 ). Its FF requirement ( E F C + 3 = 10 EF_C + 3 = 10 E F C ​ + 3 = 10 ) was non-driving because B pushed Activity D to Day 10.

Loading diagram... 5-Activity CPM Network Node Calculation Results