Computer science students often evaluate the behavior of the code they write by running it on specific inputs and studying the outputs, and then apply their comprehension to a more general understanding of the code. While this is a good starting point in the student’s career, successful graduates must be able to reason analytically about the code they create or encounter. They must be able to reason about the behavior of the code on arbitrary inputs, without running the code. Abstraction is central for such reasoning.
In our quest to help students learn to reason abstractly and develop logically correct code, we have developed tools that rely on a verification engine. Code involves assignment, conditional, and loop statements, along with objects and operations. Reasoning activities involve symbolic reasoning with simple assertions and design-by-contract assertions such as pre-and post-conditions as well as loop invariants with data abstractions. Students progress from tracing and reading code to the design and implementation of code, all relying on abstraction for verification. This paper reports some key results and findings from associated studies spanning several years.
Interfaces with good usability help their users complete more tasks in less time and with less effort, which gives them greater satisfaction. Given the vast array of options available to users today, usability is an important interface feature that may lead to the commercial success or failure of a software system. Despite its importance, few educational tools are available to help usability teachers and students. Knowing how to measure interface usability is one of the basic concepts that students should learn when they study the theme. This paper presents UsabilityZero, a web application to support the teaching of usability concepts to undergraduate students. By using UsabilityZero, students interact with a system displaying a reduced usability interface and, later, with the same system exhibiting an increased usability interface. Considering the use of UsabilityZero by 64 students, the differences between the interface with reduced and increased usability were: (i) 61.5% decrease in the number of clicks; (ii) 62.2% decrease in the time to perform tasks; (iii) 92.9% effectiveness increase; and (iv) a 277.3% satisfaction increase. During their experience with UsabilityZero, students learn how to measure efficiency, effectiveness, and satisfaction of user interfaces. After using the application, Information Systems and Computer Science students who had never been in touch with the subject could identify key usability aspects. The students’ perception of efficiency, effectiveness, and satisfaction as usability measures was higher than 80%. Also, they could identify some usability criteria and understand how measurements change when some of them are present in the interface design. As a result, over 92% of these students said they recognized the importance of usability to the quality of a software product, and 79% declared that their experience with the application would contribute to their professional lives.
Diverse initiatives have emerged to popularize the teaching of computing in K-12 mainly through programming. This, however, may not cover other important core computing competencies, such as Software Engineering (SE). Thus, in order to obtain an overview of the state of the art and practice of teaching SE competences in K-12, we carried out a systematic mapping study. We identified 17 instructional units mostly adopting the waterfall model or agile methodologies focusing on the main phases of the software process. However, there seems to be a lack of details hindering large-scope adoption of these instructional units. Many articles also do not report how the units have been developed and/or evaluated. However, results demonstrating both the viability and the positive contribution of initiating SE education already in K-12, indicate a need for further research in order to improve computing education in schools contributing to the popularization of SE competencies.