Abstraction and specification in program development
Abstraction and specification in program development
Larch: languages and tools for formal specification
Larch: languages and tools for formal specification
Testers and visualizers for teaching data structures
SIGCSE '99 The proceedings of the thirtieth SIGCSE technical symposium on Computer science education
Objects first with Java and BlueJ (seminar session)
Proceedings of the thirty-first SIGCSE technical symposium on Computer science education
Program Development in Java: Abstraction, Specification, and Object-Oriented Design
Program Development in Java: Abstraction, Specification, and Object-Oriented Design
iContract - The Java(tm) Design by Contract(tm) Tool
TOOLS '98 Proceedings of the Technology of Object-Oriented Languages and Systems
Design guidelines for the lab component of objects-first CS1
SIGCSE '02 Proceedings of the 33rd SIGCSE technical symposium on Computer science education
Difficulties in Learning and Teaching Programming—Views of Students and Tutors
Education and Information Technologies
Hi-index | 0.00 |
The ability to think abstractly about the components of a computer program is critical for computer science students. A student who has not yet developed this ability tends to view a program as an unstructured collection of statements and expressions. Introductory computer science textbooks promote the use of pre-conditions, post-conditions, and abstraction functions as techniques for fostering abstract thinking. Existing programming languages and tools, however, do not generally support these techniques. Consequently, we have built and are beginning to experiment with Javiva. Javiva extracts pre-conditions, post-conditions, and abstraction functions---included as stylized comments in Java source files---and uses them to create instrumented class files. When these instrumented class files are run, they automatically diagnose and report violations by methods of pre- and post-conditions. These classes also exploit abstraction functions to automatically produce abstract visualizations of their objects.