Goldman, K., Gross, P., Heeren, C., Herman, G., Kaczmar-
czyk, L., Loui, M. C., and Zilles, C. (2008). Iden-
tifying important and difficult concepts in introduc-
tory computing courses using a delphi process. ACM
SIGCSE Bulletin, 40(1):256–260.
Holland, J., Mitrovic, A., and Martin, B. (2009). J-latte: a
constraint-based tutor for java.
Huitt, W. (2003). Constructivism. Educational psychology
interactive.
Johnson, W. L. and Soloway, E. (1985). Proust:
Knowledge-based program understanding. Software
Engineering, IEEE Transactions on, (3):267–275.
Kaczmarczyk, L. C., Petrick, E. R., East, J. P., and Herman,
G. L. (2010). Identifying student misconceptions of
programming. In Proceedings of the 41st ACM techni-
cal symposium on Computer science education, pages
107–111. ACM.
Kolb, D. A. et al. (1984). Experiential learning: Experience
as the source of learning and development, volume 1.
Prentice-Hall Englewood Cliffs, NJ.
Konak, A., Clark, T. K., and Nasereddin, M. (2014). Using
kolb’s experiential learning cycle to improve student
learning in virtual computer laboratories. Computers
& Education, 72:11–22.
Mitrovic, A. (2003). An intelligent sql tutor on the web.
International Journal of Artificial Intelligence in Edu-
cation, 13(2):173–197.
Peylo, C., Teiken, W., Rollinger, C.-R., and Gust, H. (2000).
An ontology as domain model in a web-based edu-
cational system for prolog. In FLAIRS Conference,
pages 55–59.
Reiser, B. J., Anderson, J. R., and Farrell, R. G. (1985).
Dynamic student modelling in an intelligent tutor for
lisp programming. In IJCAI, pages 8–14.
Robins, A., Rountree, J., and Rountree, N. (2003). Learning
and teaching programming: A review and discussion.
Computer Science Education, 13(2):137–172.
Savery, J. R. (2006). Overview of problem-based learning:
Definitions and distinctions. Interdisciplinary Journal
of Problem-based Learning, 1(1):3.
Strauss, A. and Corbin, J. (1994). Grounded theory method-
ology. Handbook of qualitative research, pages 273–
285.
Sykes, E. R. and Franek, F. (2003). A prototype for an intel-
ligent tutoring system for students learning to program
in java (tm). In Proceedings of the IASTED Interna-
tional Conference on Computers and Advanced Tech-
nology in Education, June 30-July 2, 2003, Rhodes,
Greece, pages 78–83.
Vygotski
˘
ı, L. S., Cole, M., and John-Steiner, V. (1978).
Mind in society.
APPENDIX
The following list presents the misconceptions iden-
tified in our work. Every misconception is given an
identifier comprising the ID of the concept that cor-
responds to the Delphi CI plus a numeric value that
distinguishes it from similar misconceptions associ-
ated with the same concept.
1. PA1-1: Understanding the difference between
’call by reference’ and ’call by value’ semantics.
2. PA1-2: Understanding the implications of mask-
ing an object reference within a function.
3. PA2-1: Understanding the difference between
’formal parameters’ and ’actual parameters’.
4. PA3-1: Understanding the scope of parameters,
correctly using parameters in procedure design.
5. PROC-1: Understanding the difference between
definition and execution of function.
6. PROC-2: Understanding the role of the return
value.
7. PROC-3: Understanding the usability of a func-
tion.
8. TYP-1: Understanding the difference between
numeric values and their textual representation.
9. TYP-2: Understanding the difference between
Boolean values and their textual representation.
10. TYP-3: Understanding the difference between
null value and its numeric representation.
11. TYP-4: Understanding the difference between ar-
rays of values and their possible numeric repre-
sentation.
12. TYP-5: Understanding the implications of leav-
ing variables uninitialised (undefined).
13. BOOL-1: Understanding the fact that a Boolean
expression must yield a Boolean value.
14. COND-1: Understanding how to remove unnec-
essary conditions from multiple selection struc-
tures.
15. COND-2: Understanding the correct use of the
else clause.
16. COND-3: Understanding the potential danger of
testing different variables in multiple selection
structures.
17. COND-4: Understanding the potential danger of
not using break in switch structures.
18. COND-5: Understanding that repetition of code
inside multiple selection blocks imply non-
dependency.
19. SVS-1: Understanding the difference between
variable values and literal values.
20. SVS-2: Understanding the necessity of vari-
ables/constants.
21. SVS-3: Understanding the difference between
variable declaration and variable reference.
IntelligentStudentSupportintheFLIPLearningSystembasedonStudentInitialMisconceptionsandStudentModelling
359