Learning memory management with C‐Sim: A C‐based visual tool
- 5 August 2019
- journal article
- research article
- Published by Wiley in Computer Applications in Engineering Education
- Vol. 27 (5) , 1217-1235
Abstract
Nowadays, Computer Science (CS) students must cope with continuous challenges related to programming skill acquisition. In some occasions, they have to deal with the internals of memory management (pointers, pointer arithmetic, and heap management) facing a vision of programming from the low abstraction level offered by C. Even using C++ and references, not all scenarios where objects or collections of objects need to be managed can be covered. Based on the difficulties identified when dealing with such low‐level abstractions, the C‐Sim application, aimed at learning these concepts in an easy way, has been developed. To support the tool, the C programming language was selected. It allows showing concepts, remaining as close as possible both to the hardware and the operating system. To validate C‐Sim, pre and posttests were filled in by a group of 60 first‐year CS students, who employed the tool to learn about memory management. Grades of students using C‐Sim were also obtained and compared with those that did not use the tool the former academic year. As main outcomes, 82.26% of students indicated that they had improved programming and memory management knowledge, and 83.64% pointed out that the use of this type of tools improves the understanding and quality of the practice lessons. Furthermore, the marks of students have significantly increased. Finally, C‐Sim was designed from the ground up as a learning aid and can be useful for lecturers, who can complement their lessons using interactive demonstrations. Students can also employ it to experiment and learn autonomously.Keywords
This publication has 15 references indexed in Scilit:
- A new way of teaching programming skills to K-12 students: Code.orgComputers in Human Behavior, 2015
- A friendly online C compiler to improve programming skills based on student self‐assessmentComputer Applications in Engineering Education, 2015
- Computational thinking and tinkering: Exploration of an early childhood robotics curriculumComputers & Education, 2014
- Improving teaching and learning of computer programming through the use of the Second Life virtual worldBritish Journal of Educational Technology, 2011
- MNEME: A memory hierarchy simulator for an engineering computer architecture courseComputer Applications in Engineering Education, 2011
- Learning motivation in e-learning facilitated computer programming coursesComputers & Education, 2010
- Towards an object-oriented programming system for educationComputer Applications in Engineering Education, 2006
- The BlueJ System and its PedagogyComputer Science Education, 2003
- CGRAPHIC: Educational software for learning the foundations of programmingComputer Applications in Engineering Education, 2003
- Toward visual debuggingACM Transactions on Computer-Human Interaction, 1994