consensus. Thus, as teams work on the
activity, they process information,
think critically and solve problems, and
communicate with their team, the instructor, and the entire class.
Most POGIL activities have several
of these Explore-Invent-Apply (EIA)
learning cycles. For example, in the
Python style activity, the EIA cycle repeats in part B with code snippets that
involve function names, and in part
C with comments. Similar structures
are used for other syntax elements,
and more complex examples, depending on the course and level of student
experience. Other activities use longer
code samples, and guide students to
identify and correct defects, refactor
and extend the code, or analyze algorithmic complexity. Activities can use
many other models: a table of storage
device size and access time (memory
hierarchy); a recipe to bake cookies
(project scheduling); normal magic
squares and eight tile puzzles (search
strategies); and equations (neural networks and genetic algorithms). As students gain skills and content knowledge, they are able to explore more
complex models with less guidance,
invent more complex ideas, and apply
their insights to larger and more abstract problems.
While the teams work, the instruc-
tor walks around the classroom to
observe, and ask questions such as
“What differences do you see between
the two snippets?”, “Does everyone on
your team agree with this answer?”,
or “Could you rewrite your insight as
a complete sentence?”. At the same
time, the instructor learns what their
students know (and don’t know), and
how to revise the activity to better guide
student learning. After most teams
have answered Q2, the instructor might
ask a few teams to report their answers
to the class, so all teams can check
their work. Students who hesitate to
share their own answers are often ea-
ger to share their team’s answers. The
instructor might ask a few teams to
write their answers to Q4 on the board
or share them electronically, and then
moderate a short discussion of any dif-
ferences in answers. After teams com-
plete the activity, the instructor spends
a few minutes to emphasize key ideas,
and prompts teams to reflect on what
they learned, how they worked as a
understand and agree on each answer.
Each team member has a role that fo-
cuses on specific skills, and the roles
rotate each class to help each student
practice all of the skills. For example,
the manager keeps track of time and
encourages all team members to par-
ticipate, the recorder takes notes for
the team on key concepts and insights,
and the presenter shares the team’s
conclusions with other teams and the
teacher. The instructor is not a lecturer,
but an active facilitator, who observes
teams, prompts members to focus on
their roles, responds to questions that
a team cannot resolve, and leads class-
room discussion, usually based on key
questions in the activity.
Each POGIL activity is specifically
designed with models (for example,
code, diagrams, graphs, tables), each
followed by a sequence of questions to
guide student to construct understand-
ing (the “guided inquiry” in POGIL). For
example, Figure 1 shows part A of a
CS1 activity on coding style in the Py-
thon language. (Sample answers are
shown in blue italics.) Question 1
prompts the team to explore two code
snippets (X and Y), notice differences,
discuss, and decide which is better.
For many students these answers are not
obvious and so at first they might dis-
agree, but after discussion most teams
reach consensus. Question 2 prompts
them to discuss and invent general in-
sights and advice. Thus, each team will
consider their answers to Q1, develop
insights, and express them clearly.
Question 3 introduces a new term (“self-
documenting code”) and prompts
teams to connect it to their insights in
Q2. Question 4 prompts teams to apply
these insights to a new, longer code
snippet. Again, team members might
disagree at first, but will usually reach
Figure 1. Excerpt of Process Oriented Guided Inquiry Learning (POGIL) activity on Python style.
Learning Objectives: After completing this activity, learners should be able to:
• Describe good conventions for variable names, parentheses,
function names, spacing, indentation, etc.
• Explain the value and benefits of good programming style.
1. For each row in the table below, write X or Y in the last column to
indicate which option is better. Sample answers are shown in blue italics.
2. Based on your answers above, summarize advice for writing expressions.
(Write complete sentences, and be ready to report your answers to the class.)
Use spacing & parentheses to be readable and clarify precedence.
Use consistent ordering of the terms in subexpressions.
Use subexpressions and extra variables instead of long complicated expressions.
3. Code that can be read and understood without separate documentation is called
self-documenting code. How can we make expressions self-documenting?
same as above
4. Use your answers to previous questions to rewrite the code above.
calculate trip cost from 2-way flights, hotels, & meals
fc=500; ch=150; mc= 30; nn= 5 costs & number nights
c = 2*fc+ch*n+n* 3*cm
Option X Option Y X/ Y
s1=i1*c1+i2*c2; s1 = i1*c1 + i2*c2; Y
s1=(i1*c1)+(i2*c2); s1=i1*c1+i2*c2; X
s1 = c1*i1 + i2*c2; s1 = i1*c1 + i2*c2; Y
total = nCD*sCD +
(nCD*cCD + nMP3*cMP3)
( 1+rateTax);
cost = nCD *cCD +
nMP3*cMP3;
ship = nCD*sCD;
tax = cost rateTax;
total = cost + tax + ship;
Y