Program verification: the very idea
Communications of the ACM
Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
Computer Networking: A Top-Down Approach Featuring the Internet
Computer Networking: A Top-Down Approach Featuring the Internet
Java Virtual Machine Specification
Java Virtual Machine Specification
Concrete Abstractions: An Introduction to Computer Science Using Scheme
Concrete Abstractions: An Introduction to Computer Science Using Scheme
Program Verification: Fundamental Issues in Computer Science
Program Verification: Fundamental Issues in Computer Science
Data Abstraction & Problem Solving with C++ (5th Edition)
Data Abstraction & Problem Solving with C++ (5th Edition)
A principled approach to teaching OO first
Proceedings of the 39th SIGCSE technical symposium on Computer science education
Concrete examples of abstraction as manifested in students' transformative experiences
ICER '08 Proceedings of the Fourth international Workshop on Computing Education Research
Understanding student performance on an algorithm simulation task: implications for guided learning
Proceedings of the 40th ACM technical symposium on Computer science education
Interfaces first (and foremost) with Java
Proceedings of the 41st ACM technical symposium on Computer science education
Reflections on threshold concepts in computer programming and beyond
Proceedings of the 10th Koli Calling International Conference on Computing Education Research
An analysis of discrete computing structures: re-evaluating implementation
Proceedings of the 13th International Conference on Humans and Computers
Scientific Theories of Computational Systems in Model Checking
Minds and Machines
Decoupling as a Fundamental Value of Computer Science
Minds and Machines
On Floridi's Method of Levels of Abstraction
Minds and Machines
Hi-index | 0.00 |
We characterize abstraction in computer science by first comparing the fundamental nature of computer science with that of its cousin mathematics. We consider their primary products, use of formalism, and abstraction objectives, and find that the two disciplines are sharply distinguished. Mathematics, being primarily concerned with developing inference structures, has information neglect as its abstraction objective. Computer science, being primarily concerned with developing interaction patterns, has information hiding as its abstraction objective. We show that abstraction through information hiding is a primary factor in computer science progress and success through an examination of the ubiquitous role of information hiding in programming languages, operating systems, network architecture, and design patterns.