Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to main content

Conrad Cunningham

  • I am Professor Emeritus of Computer and Information Science at the University of Mississippi, USA. My research and te... moreedit
The term shared dataspace refers to the general class of programming languages in which the principal means of communication among the concurrent components of programs is a common, content-addressable data structure called a dataspace.... more
The term shared dataspace refers to the general class of programming languages in which the principal means of communication among the concurrent components of programs is a common, content-addressable data structure called a dataspace. In the programming language and artificial intelligence communities, there is considerable interest in such languages, e.g. logic-based languages, production rule systems, and the Linda language. However, these languages have not been the subject of extensive program verification research. This paper specifies a proof system for a shared dataspace programming notation called Swarm-a program logic similar in style to that of UNITY. The paper then... Read complete abstract on page 2.
Ruby is an interpreted, dynamically typed, object-oriented ap plication programming language (10). It has been in existence for more than a decade, but in the past three years interest in the Ruby language and the programming styles it... more
Ruby is an interpreted, dynamically typed, object-oriented ap plication programming language (10). It has been in existence for more than a decade, but in the past three years interest in the Ruby language and the programming styles it enables (2) has exploded in the practit ioner community (8, 9). Much of the explosive growth in interest has been because of the advent of the Rub y on Rails Web application framework (7, 11). Ruby on Rails is essentially a domain-specific language (DSL) (1, 6) for web applications. It is implemented as an internal (or embedded) DSL (4, 5) using Ruby's flexible syntax and extensive reflexive metaprogramming facilities (3). Reflexive metaprogramming is t he capability of a program to both inspect and change its own program structures (12). It has long been a staple of languages such as Smalltalk and Lisp, but the recent interest in Ruby has renewed interest i n metaprogramming and in techniques like internal DSLs. This tutorial does not concern itself with Ruby on Rails, but, instead, focuses on the Ruby features that make Rails possible. It examines Ruby with an emphasis on the language's distinctive reflexive metaprogramming facilities and techniques. These include the abi lity to query a class to determine what its methods, instance variables, and superclasses are—facilities that exist in mainstream languages like Java. Ruby also includes more exotic seeming facilities such as th e ability to intercept calls to missing methods, to define new classes and methods dynamically, and to evaluate s trings as Ruby code. The tutorial uses internal DSLs to motivate the utility of these language featu res. PRESENTER H. Conrad Cunningham is Professor and Chair of Computer and Information Science at the University of Mississippi (Ole Miss). His professional interests incl ude software architecture, programming methodology, programming languages, and concurrent and distributed computing. He has a BS degree in mathematics from Arkansas State University and MS and DSc degrees in computer science from Washington University in St. Louis. Cunningham has taught courses on software engineering, software architecture, software components, object-oriented programming, and functional programming. In the Fall 2006 semester, he taught a graduate course that included conside rable content on Ruby programming, including its functional programming and reflexive metaprogr amming features, and on domain-specific languages.
In ACM's 1977 Turing Award Lecture [1], Backus argues that conventional imperative programming languages are inherently disorderly:Moreover, the assignment statement splits programming into two worlds. The first world... more
In ACM's 1977 Turing Award Lecture [1], Backus argues that conventional imperative programming languages are inherently disorderly:Moreover, the assignment statement splits programming into two worlds. The first world comprises the right sides of assignment statements. This is an orderly world of expressions, a world that has useful algebraic properties (except that those properties are often destroyed by side effects). It is the world in which most useful computation takes place.
As component-oriented approaches become more commonly applied to the development of complex software systems, it becomes increasingly important to introduce computing science and software engineering students to appropriate programming... more
As component-oriented approaches become more commonly applied to the development of complex software systems, it becomes increasingly important to introduce computing science and software engineering students to appropriate programming concepts, languages, and techniques. This dissertation presents the design for a new language BoxScript, which seeks to address this need. BoxScript is a Java-based, component-oriented programming language. The components in BoxScript, called boxes, are blackbox entities that are strongly encapsulated and only expose their provided and required interfaces. BoxScript supports two key properties of component-oriented programming: compositionality and flexibility. It introduces a composition strategy and the compound box construct to support compositionality and introduces a box type structure consisting of abstract and concrete boxes, box variants, and an interface satisfaction policy to support flexibility. The syntactic structure of BoxScript is based on Java, a language with which most students are familiar. This dissertation presents the BoxScript language and associated design methods and demonstrates and evaluates their usage. It specifies the syntax of the BoxScript notation and describes preliminary formal specification techniques for BoxScript components and their compositions. It presents a methodology, from a software engineering perspective, for building a component software system and applies the methodology and the language to a case study---KeyWord In Context (KWIC). It also illustrates the design of the language's compiler BoxCompiler and its deployment tool BoxShipper, both of which are implemented in BoxScript itself. The dissertation evaluates the BoxScript language design by comparing it systematically with several other component-oriented programming languages and evaluates the language usage by analyzing the feedback from the test users. Some possible future work is identified that should improve and enhance BoxScript.
THE SHARED DATASPACE APPROACH TO CONCURRENT COMPUTATION: The Swarm Programming Model, Notation, and Logic by H. Conrad Cunningham ADVISOR: Professor Gruia-Catalin Roman
In a 1976 article [4] Parnas observes, "Variations in application demands, variations in hardware configurations, and the ever-present opportunity to improve a program means that software will inevitably exist in many versions."... more
In a 1976 article [4] Parnas observes, "Variations in application demands, variations in hardware configurations, and the ever-present opportunity to improve a program means that software will inevitably exist in many versions." He argues that the design of a program should be approached as the design of a family of related programs. He defines a program family as a set of programs "whose common properties are so extensive that it is advantageous to study the common properties of the programs before analyzing individual members." If programmers can identify and exploit these "common aspects and predicted variabilities" [6], the resulting software can be constructed to reuse code for the common parts and to enable convenient adaptation of the variable parts for specific applications. A quarter-century after his original article, Parnas notes that there is "growing academic interest and some evidence of real industrial success in applying this idea," yet "the majority of industrial programmers seem to ignore it in their rush to produce code" [5]. If software families are to become pervasive, students need to learn to design and construct them effectively.
Permission to copy and use this document for educational or research purposes of a non-commercial nature is hereby granted provided that this copyright notice is retained on all copies. All other rights are reserved by the author.
... PRESENTERS H. Conrad Cunningham is Professor and Chair of Computer and Information Science at the University of Mississippi (Ole Miss). ... [6] Johnson, RE, Foote, B., Designing reusable classes, Journal of Object-Oriented... more
... PRESENTERS H. Conrad Cunningham is Professor and Chair of Computer and Information Science at the University of Mississippi (Ole Miss). ... [6] Johnson, RE, Foote, B., Designing reusable classes, Journal of Object-Oriented Programming, 1, (2), 22-35, 1998. ...
... James C. Church is a PhD student in Computer and Information Science at the University of Mississippi (Ole Miss). ... REFERENCES [1] Budd, TA, Multiparadigm Programming in Leda, Reading, Massachusetts: Addison-Wesley, 1995. [2]... more
... James C. Church is a PhD student in Computer and Information Science at the University of Mississippi (Ole Miss). ... REFERENCES [1] Budd, TA, Multiparadigm Programming in Leda, Reading, Massachusetts: Addison-Wesley, 1995. [2] Odersky, M., Scala by Example ...
In user interfaces on Web and desktop applications, the system must quickly respond to user inputs and accurately display the result. Current solutions for user interfaces often respond too slowly and display temporarily inaccurate or... more
In user interfaces on Web and desktop applications, the system must quickly respond to user inputs and accurately display the result. Current solutions for user interfaces often respond too slowly and display temporarily inaccurate or misleading states, resulting in low user satisfaction. To alleviate this problem, we develop a reactive programming approach that encodes the complex relationships among the user interface components in a dependency graph and then uses the graph to order the updates of the components without violating the dependency constraints. This enables more timely updates and more accurate visualizations, potentially providing users with a more satisfying experience. We evaluate our approach by comparing its performance with important alternative reactive libraries for user interfaces.
43 Calculator: Modular Structure 2 43.1 Chapter Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 2 43.2 Module Dependencies . . . . . . . . . . . . . . . . . . . . . . . . 2 43.3 Values Module . . . . . . . . . . . . . . . .... more
43 Calculator: Modular Structure 2 43.1 Chapter Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 2 43.2 Module Dependencies . . . . . . . . . . . . . . . . . . . . . . . . 2 43.3 Values Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 43.4 Environments Module . . . . . . . . . . . . . . . . . . . . . . . . 3 43.5 Abstract Syntax Module . . . . . . . . . . . . . . . . . . . . . . . 4 43.6 Evaluator Module . . . . . . . . . . . . . . . . . . . . . . . . . . 5 43.7 Lexical Analysis Module . . . . . . . . . . . . . . . . . . . . . . . 5 43.8 Parser Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 43.9 REPL Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 43.10Code Improvement Modules . . . . . . . . . . . . . . . . . . . . . 7 43.11What Next? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 43.12Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 43.13Acknowledgements . . . . . . . . . . ....
Component-oriented software development has become an important approach to building complex software systems. This paper describes the component-oriented language BoxScript whose design seeks to support the concepts of components in a... more
Component-oriented software development has become an important approach to building complex software systems. This paper describes the component-oriented language BoxScript whose design seeks to support the concepts of components in a clean, simple, Java-based language. This paper presents the key concepts and syntax of BoxScript and how it supports compositionality and flexibility and gives an example to illustrate its usage.
This paper was presented at the NSF Formal Methods Workshop held at Hamilton College, New York, USA, in August 1994. It is based on an excerpt from Notes on Functional Programming with Gofer---which later evolved into Notes on Functional... more
This paper was presented at the NSF Formal Methods Workshop held at Hamilton College, New York, USA, in August 1994. It is  based on an excerpt from Notes on Functional Programming with Gofer---which later evolved into Notes on Functional Programming with Haskell.

And 59 more

This is a set of notes on predicate logic that the author developed (1990-2006) for use in his classes on Program Semantics and Derivation and Theory of Concurrent Programming. These notes to be compatible with Edward Cohen's textbook... more
This is a set of notes on predicate logic that the author developed (1990-2006) for use in his classes on Program Semantics and Derivation and Theory of Concurrent Programming. These notes to be compatible with Edward Cohen's textbook Programming in the 1990's: An Introduction to the
Calculation of Programs (Springer-Verlag, 1990). Some of the ideas and presentation are also influenced by David Gries and Fred B. Schneider's textbook  Logical Approach to Discrete Math (Springer-Verlag, 1993),, David Gries' classic book The Science of Programming (Springer-Verlag, 1981), and other sources.