one false condition will cause a ball to roll into the
next intersection. This is because short-circuit
operators do not evaluate all its operands when
necessary. This promotes unnecessary evaluations
and promotes efficient memory saving when coding.
The other possibilities that can be demonstrated and
understood through ball movements are false && true
= false and false && false = false. The kind of ball
movements will also help SIPS with comprehending
how short-circuit (&& and ||) operators work.
If the ball is in the second intersection (condition
B) in Fig. 6, note that there are 2 Decider-rods on the
right side and one Decider-rod on the left side. The
Decider-rods are put in such way that they represent
condition 2 in Fig. 5. The reason behind a single
Decider-rod on the left side is because true || true =
true, true || false = true and false || true = true, hence
in the || evaluation true is required to be the common
denominator for a true evaluation. The only way a
ball can move to the next intersection is through false
|| false = false. Just like a short-circuit evaluation in
the && works, the || applies the same logic because
whenever a true evaluation is detected first, the right
side evaluation is automatically ignored because it is
unnecessary. The evaluation of short-circuit operators
starts from left to right. Therefore, in the case of if
(true || whatever.) and if (false && whatever.), the
“whatever” word indicates that whether it is true or
false, it doesn’t matter and is not even evaluated.
If the intersection is blocked with a single
Decider-rod on the right side and a left side as well, it
means a condition is not compound nor tied by a
logical operator. See condition 3 and condition 3.1 in
Fig. 5 which should be represented by a condition C
and condition C1 in Fig. 6.
Another important aspect in the Nested-decider
manipulative is the else clause. On the else clause of
the decision statement, the question mark is put there
to indicate that the condition is not necessary even
though it can be placed as value1 > 20 (line number
17 in Fig. 5). If one decides to put elseif value1 > 20
in line 17 instead of an else clause only, the program
will still work fine. However, with the Nested-decider
now SIPS can see and understand that the process of
removing pins will unnecessarily delay the
completion time of a nested-decision and will waste
computer memory during real code execution. In Fig.
6, the Else-manip at the end of the manipulative is
important because it indicates the else clause, and the
ball can be blocked with a Decider-rod just to
demonstrate an unnecessary delay during the
demonstration.
We believe that when we apply the proposed
Nested-decider to real SIPS, the overall manipulative
will give them more insight and conceptual
understanding about nested-decisions, short-circuit
operators and the else clause. Furthermore, the
manipulative can be adjusted in any way required by
the lecturer/student to fit the applicable scenarios of
nested decisions.
4 CONCLUSION
The main objective of this paper was to share a
designed manipulative which is meant to help
struggling introductory programming students with
conceptual knowledge and comprehending nested-
decisions better. We demonstrated the design details
of the manipulative (called Nested-decider) and its
functionalities. We demonstrated the Nested-
decider’s ability to show the critical aspects of nested-
decisions. We believe that the manipulative will serve
as an assistive tool for struggling students to learn
nested-decisions and ease their cognitive load. The
proposed manipulative has not yet been implemented
to teach struggling introductory programming
students. This will be done by following an
appropriate pedagogical framework (not reported in
this paper) in the form of action research with SIPS at
a higher education institution. During the action
cycles, both the lecturer and SIPS are expected to use
the manipulative. As part of future work, we will
share the implementation results in our next
publication.
REFERENCES
Altadmri, A., & Brown, N. C. (2015, February). 37 million
compilations: Investigating novice programming
mistakes in large-scale student data. In Proceedings of
the 46th ACM Technical Symposium on Computer
Science Education, 522-527. ACM.
Forbes, J., Malan, D. J., Pon-Barry, H., Reges, S., &
Sahami, M. (2017, March). Scaling Introductory
Courses Using Undergraduate Teaching Assistants. In
Proceedings of the 2017 ACM SIGCSE Technical
Symposium on Computer Science Education, 657-658.
ACM.
Jenkins, T. (2007). On the Difficulty of Learning to
Program. Proceedings of the 3rd Annual Conference of
the LTSN Centre for Information and Computer
Sciences, 53–58.
Kelleher, C., & Pausch, R. (2005). Lowering the barriers to
programming: A taxonomy of programming
environments and languages for novice programmers.
ACM Computing Surveys (CSUR), 37(2), 83-137.