2.3 Forward and Backward Pass Mathematical Mechanics

Key Takeaways

  • 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 RuleZero-Based Convention (Continuous Time)One-Based Convention (Calendar Day Numbers)
ConceptPoints in time on a continuous axis (t=0,1,2,…t = 0, 1, 2, \dots).Numbered working days (Day 1, Day 2, Day 3, …\dots).
Project StartStart of Project = Day 0Start of Project = Day 1
Early Finish (EF)EF=ES+Duration\mathbf{EF = ES + \text{Duration}}EF=ES+Duration−1\mathbf{EF = ES + \text{Duration} - 1}
Successor ES (FS=0)ESsucc=EFpredES_{\text{succ}} = EF_{\text{pred}}ESsucc=EFpred+1ES_{\text{succ}} = EF_{\text{pred}} + 1
Late Start (LS)LS=LF−Duration\mathbf{LS = LF - \text{Duration}}LS=LF−Duration+1\mathbf{LS = LF - \text{Duration} + 1}
Predecessor LF (FS=0)LFpred=LSsuccLF_{\text{pred}} = LS_{\text{succ}}LFpred=LSsucc−1LF_{\text{pred}} = LS_{\text{succ}} - 1
Total Float (TF)TF=LS−ES=LF−EFTF = LS - ES = LF - EFTF=LS−ES=LF−EFTF = LS - ES = LF - 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=50 + 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=51 + 5 - 1 = 5. The successor starts on the morning of the next working day, Day 6 (5+1=65 + 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:

  1. Initialize Project Start: For initial activities with no predecessors, set ES=0ES = 0 (zero-based).
  2. Calculate Early Finish: EF=ES+DurationEF = ES + \text{Duration}.
  3. Traverse Network: Move sequentially from left to right across dependency links.
  4. Evaluate Relationship Constraints:
    • Finish-to-Start (FS): ESsucc≥EFpred+LagFSES_{\text{succ}} \ge EF_{\text{pred}} + \text{Lag}_{FS}
    • Start-to-Start (SS): ESsucc≥ESpred+LagSSES_{\text{succ}} \ge ES_{\text{pred}} + \text{Lag}_{SS}
    • Finish-to-Finish (FF): EFsucc≥EFpred+LagFFEF_{\text{succ}} \ge EF_{\text{pred}} + \text{Lag}_{FF}
    • If constrained by an FF relationship, the resulting Early Start is: ESsucc=EFsucc−DurationES_{\text{succ}} = EF_{\text{succ}} - \text{Duration}.
  5. Resolve Merge Nodes (Convergence): When an activity has multiple incoming predecessors, its Early Start is governed by the maximum (latest) calculated constraint:

ESj=max⁡i(Constrainti)ES_j = \max_{i} \left( \text{Constraint}_i \right)

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:

  1. Initialize Project Completion: For terminal activities with no successors, set Late Finish equal to Early Finish (LF=EFLF = EF), unless an external contract completion deadline is imposed.
  2. Calculate Late Start: LS=LF−DurationLS = LF - \text{Duration}.
  3. Traverse Network: Move sequentially from right to left across dependency links.
  4. Evaluate Relationship Constraints:
    • Finish-to-Start (FS): LFpred≤LSsucc−LagFSLF_{\text{pred}} \le LS_{\text{succ}} - \text{Lag}_{FS}
    • Start-to-Start (SS): LSpred≤LSsucc−LagSSLS_{\text{pred}} \le LS_{\text{succ}} - \text{Lag}_{SS}
    • If constrained by an SS relationship, the resulting Late Finish is: LFpred=LSpred+DurationLF_{\text{pred}} = LS_{\text{pred}} + \text{Duration}.
    • Finish-to-Finish (FF): LFpred≤LFsucc−LagFFLF_{\text{pred}} \le LF_{\text{succ}} - \text{Lag}_{FF}
  5. Resolve Burst Nodes (Divergence): When an activity has multiple outgoing successors, its Late Finish is governed by the minimum (earliest) calculated constraint:

LFi=min⁡j(Constraintj)LF_i = \min_{j} \left( \text{Constraint}_j \right)

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:

  1. Activity A (Duration = 4):

    • Has no predecessors →ESA=0\rightarrow ES_A = 0.
    • EFA=ESA+DA=0+4=4EF_A = ES_A + D_A = 0 + 4 = \mathbf{4}.
  2. Activity B (Duration = 6):

    • Predecessor A via FS = 0 →ESB=EFA=4\rightarrow ES_B = EF_A = \mathbf{4}.
    • EFB=ESB+DB=4+6=10EF_B = ES_B + D_B = 4 + 6 = \mathbf{10}.
  3. Activity C (Duration = 5):

    • Predecessor A via SS with lag +2 →ESC=ESA+2=0+2=2\rightarrow ES_C = ES_A + 2 = 0 + 2 = \mathbf{2}.
    • EFC=ESC+DC=2+5=7EF_C = ES_C + D_C = 2 + 5 = \mathbf{7}.
  4. Activity D (Duration = 7) [Merge Node]:

    • From Predecessor B (FS = 0): Requires ESD≥EFB=10ES_D \ge EF_B = 10.
    • From Predecessor C (FF = +3): Requires EFD≥EFC+3=7+3=10EF_D \ge EF_C + 3 = 7 + 3 = 10. This implies ESD≥EFD−DD=10−7=3ES_D \ge EF_D - D_D = 10 - 7 = 3.
    • Evaluate maximum constraint for Early Start: ESD=max⁡(10,3)=10ES_D = \max(10, 3) = \mathbf{10}.
    • Calculate Early Finish: EFD=ESD+DD=10+7=17EF_D = ES_D + D_D = 10 + 7 = \mathbf{17}.
    • (Driving Predecessor is Activity B).
  5. Activity E (Duration = 3):

    • Predecessor D via FS = 0 →ESE=EFD=17\rightarrow ES_E = EF_D = \mathbf{17}.
    • EFE=ESE+DE=17+3=20EF_E = ES_E + D_E = 17 + 3 = \mathbf{20}.
    • Project Early Completion Date = Day 20.

Backward Pass Step-by-Step:

  1. Activity E (Duration = 3):

    • Set LFE=EFE=20LF_E = EF_E = \mathbf{20}.
    • LSE=LFE−DE=20−3=17LS_E = LF_E - D_E = 20 - 3 = \mathbf{17}.
  2. Activity D (Duration = 7):

    • Successor E via FS = 0 →LFD=LSE=17\rightarrow LF_D = LS_E = \mathbf{17}.
    • LSD=LFD−DD=17−7=10LS_D = LF_D - D_D = 17 - 7 = \mathbf{10}.
  3. Activity B (Duration = 6):

    • Successor D via FS = 0 →LFB=LSD=10\rightarrow LF_B = LS_D = \mathbf{10}.
    • LSB=LFB−DB=10−6=4LS_B = LF_B - D_B = 10 - 6 = \mathbf{4}.
  4. Activity C (Duration = 5):

    • Successor D via FF with lag +3 →\rightarrow Requires LFC≤LFD−3=17−3=14LF_C \le LF_D - 3 = 17 - 3 = 14.
    • LSC=LFC−DC=14−5=9LS_C = LF_C - D_C = 14 - 5 = \mathbf{9}.
  5. Activity A (Duration = 4) [Burst Node]:

    • To Successor B via FS = 0: Requires LFA≤LSB=4LF_A \le LS_B = 4.
    • To Successor C via SS with lag +2: Requires LSA≤LSC−2=9−2=7LS_A \le LS_C - 2 = 9 - 2 = 7, which implies LFA≤LSA+DA=7+4=11LF_A \le LS_A + D_A = 7 + 4 = 11.
    • Evaluate minimum constraint for Late Finish: LFA=min⁡(4,11)=4LF_A = \min(4, 11) = \mathbf{4}.
    • LSA=LFA−DA=4−4=0LS_A = LF_A - D_A = 4 - 4 = \mathbf{0}.
    • (Driving Successor is Activity B).

Network Summary Table

Act IDActivity DescriptionDurationPredecessorsESEFLSLFTotal FloatFree FloatCritical?
AMobilization & Site Clearing4None040400Yes
BBulk Excavation6A (FS=0)41041000Yes
CUnderground Utility Trenching5A (SS=+2)2791470No
DFoundation Concrete Work7B (FS=0), C (FF=+3)1017101700Yes
EBackfill & Grading3D (FS=0)1720172000Yes

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

Loading diagram...
5-Activity CPM Network Node Calculation Results
Test Your Knowledge

In a CPM network calculated under the zero-based convention, Activity X (Duration = 6 days) is connected to Activity Y (Duration = 4 days) by a Finish-to-Finish (FF) relationship with a lag of +3 days. If the Late Finish (LF) of Activity Y is Day 22, what is the latest allowable Late Finish (LF) for Activity X resulting from this relationship?

A

Day 13

B

Day 16

C

Day 19

D

Day 25

Test Your Knowledge

Under the one-based calendar day convention (where project work begins on Day 1), Activity M has an Early Start (ES) of Day 14 and an estimated duration of 8 working days. What is the Early Finish (EF) of Activity M, and on what day does a zero-lag Finish-to-Start successor activity begin?

A

EF = Day 22; Successor ES = Day 22

B

EF = Day 22; Successor ES = Day 23

C

EF = Day 21; Successor ES = Day 21

D

EF = Day 21; Successor ES = Day 22

Test Your Knowledge

In a zero-based CPM network, Activity K (Duration = 5 days) has two predecessors: Activity G (ES = 0, Duration = 6) connected via Finish-to-Start with a 2-day lag (FS + 2), and Activity H (ES = 2, Duration = 8) connected via Start-to-Start with a 5-day lag (SS + 5). What is the Early Start (ES) of Activity K?

A

Day 8

B

Day 7

C

Day 10

D

Day 15

Sections you finish are checked off in the contents.