1.2 Official ETS Pseudocode Notation and Tracing Strategy

Key Takeaways

  • ETS pseudocode uses ← for assignment and == for equality; the relational symbols are ≤, ≥, and ≠, and the logical operators are the lowercase words and, or, and not.
  • The ETS notation table lists + - / * ^ % as arithmetic operators and says / means floating-point division unless a question states otherwise.
  • ETS loops are written for ( initialization; condition; increment ) … end for, while ( condition ) … end while, do … while ( condition ), and repeat … until ( condition ).
  • Indentation and end statements are significant in ETS pseudocode; they, not braces, show which statements belong to an if, loop, or procedure.
  • A repeat … until loop runs at least once and stops when its condition becomes true, while a do … while loop runs at least once and stops when its condition becomes false.
Last updated: September 2026

Why the notation matters

About 55% of Praxis 5652 comes from Programming and Algorithms, and many of those questions show a code segment. ETS does not use Python, Java, or C++ syntax. It uses a pseudocode notation that is published on pages 21–23 of the free Study Companion (5652). If you learned to code in Python, several symbols will look unfamiliar. If you learned Java, the typed declarations will feel familiar, but the arrows, the end keywords, and the word operators will not.

Learn the notation first. Every minute you spend decoding a symbol on test day is a minute you are not spending on the logic.

The official notation, element by element

PurposeETS notationNotes for test day
Assignment←total ← total + 5 evaluates the right side, then stores the result
Arithmetic+ - / * ^ %% is the remainder (modulus); ^ also appears in ETS's list of arithmetic operators
Division/ETS: / is floating-point division unless stated otherwise
Relational== < > ≤ ≥ ≠== tests equality; ← never does
Logicaland or notLowercase words, not &&, `
String concatenation+"Score: " + 95
Boolean valuestrue falseLowercase
Empty referencenull
Comment// this is a single-line commentComments often explain what a helper call returns
Missing code/* missing code */, /* missing condition */Marks the blank you must fill
Outputprint argA comment says whether a space or line feed follows the output
Data typesboolean, char, double, float, int, int[ ], int[ ][ ], short, StringDeclarations look like int count ← 0
Arraysint[ ] a ← {1, 2, 3}, int b[0..2] ← {1, 2, 3}, int[ ][ ] c, a[0]The b[0..2] form states the index range; stems often say "the first element is at index 0"

Control structures

if ( condition )
    block of statements
else
    another block of statements
end if

for ( initialization; condition; increment )
    block of statements
end for

while ( condition )
    block of statements
end while

do
    block of statements
while ( condition )

repeat
    block of statements
until ( condition )

ETS states that indentation and end statements are significant. There are no curly braces. An else belongs to the if it lines up with, and a loop body is everything indented under the header until end for or end while.

Procedures and classes

int procedureName ( int arg1, int arg2 )
    block of statements
    return value
end procedureName

void procedureName ( int arg1, int arg2 )
    block of statements
end procedureName

class className
    variable declarations
    procedures
end class className

The return type in the header is the type of the value the procedure returns, or void when it returns nothing. The object-oriented keywords listed are extends, new, public, and private. Method calls use dot notation, for example value.substring ( 0, 1 ), and a stem that uses a class usually supplies a table explaining each method.

Division: the one symbol to watch

The ETS notation table says / means floating-point division unless stated otherwise. However, ETS's own sample explanations treat / between two int values as integer division. One sample procedure tests ( c / 2 ) ≠ 0 for an int c, and the explanation calls / the "integer division operator" and says the fix is to use %. Use this rule:

  • Read the declared types and any note in the stem first.
  • When both operands are declared int and the stem gives no other instruction, check the answer choices for integer results. That is how ETS's sample explanations behave.
  • When a double or float is involved, expect a fractional result such as 3.5.
  • % always gives the remainder: 17 % 5 is 2, and n % 2 == 1 tests for an odd positive n.

Reading loops correctly

A for header runs its initialization once. It then checks the condition before every iteration and runs the increment after every iteration. So for ( int i ← 0; i < 6; i ← i + 1 ) runs 6 times, for i = 0 through 5. When the loop ends, the condition has just become false (i is 6).

The two post-test loops are opposites:

LoopMinimum runsKeeps looping while…Stops when…
while ( c ) … end while0c is truec is false (checked first)
do … while ( c )1c is truec is false (checked after the body)
repeat … until ( c )1c is falsec becomes true (checked after the body)

A worked trace in ETS notation

int total ← 0
for ( int k ← 1; k ≤ 5; k ← k + 1 )
    if ( k % 2 == 1 )
        total ← total + k * 2
    else
        total ← total + k / 2
    end if
end for
print total

Here k is an int, and the even values of k divide exactly by 2, so no division question arises.

kk % 2 == 1?Updatetotal
——start0
1true0 + 1 * 22
2false2 + 2 / 23
3true3 + 3 * 29
4false9 + 4 / 211
5true11 + 5 * 221
6loop test 6 ≤ 5 is falseexit21

The segment prints 21. Notice that the table records the loop variable, the branch decision, and the running value. That is the minimum you need to avoid mental-arithmetic slips.

A two-pass pacing plan

With 100 questions in 180 minutes you average 108 seconds per question. Definition and scenario questions (much of Categories I, IV, and V) usually take well under a minute. Long traces can take three minutes. A workable plan:

  1. First pass: Answer everything you can resolve quickly. On a long trace, pick your best answer, flag the question, and move on. Never leave a question blank, because there is no deduction for a wrong answer.
  2. Second pass: Return to flagged questions and build full trace tables on your scratch materials.
  3. Final check: Confirm that no question is unanswered and that every select-all-that-apply item reflects your judgment of each option.

As a rough checkpoint, aim to have reached about question 35 after 60 minutes and question 70 after 120 minutes. That pace leaves time for flagged traces.

Habits that prevent lost points

  • Parenthesize mentally. ETS usually writes full parentheses, as in ( ( a == 6 ) or ( b == 6 ) ). When it doesn't, apply precedence: not, then and, then or.
  • Check index conventions. Stems normally say "the first element of arr is at index 0." An array of length n then has valid indexes 0 through n − 1.
  • Read the method table. For example, a substring ( begin, end ) table may say it returns characters from begin through end − 1. Use exactly the behavior the table gives.
  • Watch the print comment. "Print a space after the number" tells you how the output is formatted.
  • Separate ← from ==. An assignment changes state; a comparison produces true or false.
Test Your Knowledge

Consider the following ETS pseudocode segment.

int n ← 1
repeat
    n ← n * 3
until ( n > 20 )
print n
What is printed?

A
B
C
D
Test Your Knowledge

In ETS pseudocode, int m ← 3 is followed by a loop that increases count (initially 0) by 1 and then subtracts 4 from m, repeating as long as m > 5. How many times does the body run if the loop is written as do … while ( m > 5 ), and how many times if it is written as while ( m > 5 ) … end while?

A
B
C
D
Test Your Knowledge

Which statement correctly describes the ETS pseudocode notation used on Praxis 5652?

A
B
C
D