Computer programming learning requires declarative and procedural knowledge. Novice learners acquire programming declarative knowledge via lectures, tutorials, and self-assessment. Cognitive overload within programming learning materials is one of several learning barriers. Self-assessing is important to assist learners to identify misconceptions and to encourage the correct construction of knowledge. Self-Test Questions (STQ) and solutions in print are common learning methods used in a typical programming learning environment. Comparatively, Self-Assessment Object (SAO) is a type of learning object used to examine usefulness in order to impart declarative knowledge. One hundred and three foundation engineering students, enrolled in a C programming module, took part in this study and were randomly assigned to two groups. A control group used STQ and an experimental group used SAO in a programming lab over seven teaching weeks. Post-test and supporting survey results suggest that SAO was able to support programming learning and mitigate the learning difficulties addressed in this study. (C) 2015 The Authors. Published by Elsevier Ltd.