Learn More
1. ABSTRACT It is possible to teach architectural-level issues as early as CSl/CS2. But the ultimate success of this approach hinges in part on the availability of appropriate tools to assist students in building the right mental models of the development and composition of software systems. 1.1 Keywords Software engineering education and training, software(More)
This paper proposes an initial catalog of easy-to-state, relatively simple , and incrementally more and more challenging benchmark problems for the Verified Software Initiative. These benchmarks support assessment of verification tools and techniques to prove total correctness of functionality of sequential object-based and object-oriented software. The(More)
a funder's repository at a funder's request, provided it is not made publicly available until 12 months after publication. Abstract. A central objective of the verifying compiler grand challenge is to develop a pushbutton verifier that generates proofs of correctness in a syntax-driven fashion similar to the way an ordinary compiler generates machine code.(More)
First-year computer science students need to see clearly that computer science as a discipline has an important intellectual role to play and that it offers deep philosophical questions, much like the other hard sciences and mathematics; that CS is not "just programming". An appropriate intellectual focus for CS1/CS2 can be built on the foundations of(More)
When teaching certain CS topics (e.g., abstract data types, operating systems), the instructor tries to make clear the distinction between the "client" perspective and the "implementer" perspective. But when teaching some programming language features and related programming techniques, this dichotomy often is not respected as strongly as it should be. We(More)
It is widely agreed that component interactions should be based on the import and export of interface information only, not on knowledge of implementation-specific details. This can be achieved in many cases either by explicit parameterization using templates (in languages that have them) or by using some variant of the abstract factory pattern. We(More)
Presentation and use of formally-specified software components in CS1/CS2 presents interesting pedagogical challenges. Specifications may involve unfamiliar mathematical concepts and notation. We have found that the use of toys, such as stacking plastic cups and Lego © blocks, to be amazingly effective in helping students develop mental models for(More)