@article {19267,
	title = {The DSPCAD Integrative Command Line Environment: Introduction to DICE Version 1.1},
	year = {2011},
	month = {2011},
	abstract = {DICE (the DSPCAD Integrative Command Line Environment) is a package of utilities that facilitates efficient management of software projects. Key areas of emphasis in DICE are cross-platform operation, support for projects that integrate heterogeneous programming languages, and support for applying and integrating different kinds of design and testing methodologies. The package is being developed at the University of Maryland to facilitate the research and teaching of methods for implementation, testing, evolution, and revision of engineering software. The package is also being developed as a foundation for developing experimental research software for techniques and tools in the area of computer-aided design (CAD) of digital signal processing (DSP) systems. The package is intended for cross-platform operation, and is currently being developed and used actively on the Linux, Mac OS, Solaris, and Windows (equipped with Cygwin) platforms. This report provides an introduction to DICE, and provides background on some of the key features in DICE Version 1.1. This report also gives a brief introduction to dicelang, which is a plug-in package for DICE that provides additional utilities, libraries, and tools for managing software projects in specific programming languages.},
	keywords = {*SOFTWARE ENGINEERING, COMPUTER PROGRAMMING, COMPUTER PROGRAMMING AND SOFTWARE, COMPUTER PROGRAMS, DICE(COMPUTER PROGRAM), programming languages, Project management},
	author = {Bhattacharyya, Shuvra S. and Plishker,William and Chung-Ching Shen and Sane, Nimish and Zaki, George}
}
@conference {14696,
	title = {Fable: A Language for Enforcing User-defined Security Policies},
	booktitle = {IEEE Symposium on Security and Privacy, 2008. SP 2008},
	year = {2008},
	month = {2008/05/18/22},
	pages = {369 - 383},
	publisher = {IEEE},
	organization = {IEEE},
	abstract = {This paper presents FABLE, a core formalism for a programming language in which programmers may specify security policies and reason that these policies are properly enforced. In FABLE, security policies can be expressed by associating security labels with the data or actions they protect. Programmers define the semantics of labels in a separate part of the program called the enforcement policy. FABLE prevents a policy from being circumvented by allowing labeled terms to be manipulated only within the enforcement policy; application code must treat labeled values abstractly. Together, these features facilitate straightforward proofs that programs implementing a particular policy achieve their high-level security goals. FABLE is flexible enough to implement a wide variety of security policies, including access control, information flow, provenance, and security automata. We have implemented FABLE as part of the LINKS web programming language; we call the resulting language SELlNKS. We report on our experience using SELlNKS to build two substantial applications, a wiki and an on-line store, equipped with a combination of access control and provenance policies. To our knowledge, no existing framework enables the enforcement of such a wide variety of security policies with an equally high level of assurance.},
	keywords = {Access control, Automata, Collaborative work, Communication system security, Computer languages, computer security, Data security, enforcement policy, FABLE, Government, high-level security goals, information flow, Information security, Language-based security, programming languages, Programming profession, provenance, security automata, security labels, security of data, user-defined security policies, verified enforcement, Web programming language},
	isbn = {978-0-7695-3168-7},
	doi = {10.1109/SP.2008.29},
	author = {Swamy,N. and Corcoran,B.J. and Hicks, Michael W.}
}
@conference {17887,
	title = {Comparing the Performance of High-Level Middleware Systems in Shared and Distributed Memory Parallel Environments},
	booktitle = {Parallel and Distributed Processing Symposium, 2005. Proceedings. 19th IEEE International},
	year = {2005},
	month = {2005/04//},
	pages = {30 - 30},
	publisher = {IEEE},
	organization = {IEEE},
	abstract = {The utilization of toolkits for writing parallel and/or distributed applications has been shown to greatly enhance developer{\textquoteright}s productivity. Such an approach hides many of the complexities associated with writing these applications, rather than relying solely on programming language aids and parallel library support, such as MPI or PVM. In this work, we evaluate three different middleware systems that have been used to implement a computation and I/O-intensive data analysis application from the domain of computer vision. This study shows the benefits and overheads associated with each of the middleware systems, in different homogeneous computational environments and with different workloads. Our results lead the way toward being able to make better decisions for tuning the application environment, for selecting the appropriate middleware, and also for designing more powerful middleware systems to efficiently build and run highly complex applications in both parallel and distributed computing environments.},
	keywords = {Application software, Computer science, Computer vision, Data analysis, Distributed computing, distributed computing environment, distributed memory parallel environment, distributed shared memory systems, Educational institutions, high-level middleware system, I/O-intensive data analysis application, Libraries, Middleware, parallel computing environment, parallel library support, parallel memories, programming language, programming languages, Runtime environment, shared memory parallel environment, Writing},
	isbn = {0-7695-2312-9},
	doi = {10.1109/IPDPS.2005.144},
	author = {Kim,Jik-Soo and Andrade,H. and Sussman, Alan}
}
@conference {14682,
	title = {Dynamic rebinding for marshalling and update, with destruct-time ?},
	booktitle = {Proceedings of the eighth ACM SIGPLAN international conference on Functional programming},
	series = {ICFP {\textquoteright}03},
	year = {2003},
	month = {2003///},
	pages = {99 - 110},
	publisher = {ACM},
	organization = {ACM},
	address = {New York, NY, USA},
	abstract = {Most programming languages adopt static binding, but for distributed programming an exclusive reliance on static binding is too restrictive: dynamic binding is required in various guises, for example when a marshalled value is received from the network, containing identifiers that must be rebound to local resources. Typically it is provided only by ad-hoc mechanisms that lack clean semantics.In this paper we adopt a foundational approach, developing core dynamic rebinding mechanisms as extensions to simply-typed call-by-value ? -calculus. To do so we must first explore refinements of the call-by-value reduction strategy that delay instantiation, to ensure computations make use of the most recent versions of rebound definitions. We introduce redex-time and destruct-time strategies. The latter forms the basis for a ?marsh calculus that supports dynamic rebinding of marshalled values, while remaining as far as possible statically-typed. We sketch an extension of ? marsh with concurrency and communication, giving examples showing how wrappers for encapsulating untrusted code can be expressed. Finally, we show that a high-level semantics for dynamic updating can also be based on the destruct-time strategy, defining a ?marsh calculus with simple primitives to provide type-safe updating of running code. We thereby establish primitives and a common semantic foundation for a variety of real-world dynamic rebinding requirements.},
	keywords = {distributed programming, dynamic binding, dynamic update, lambda calculus, marshalling, programming languages, serialisation},
	isbn = {1-58113-756-7},
	doi = {10.1145/944705.944715},
	url = {http://doi.acm.org/10.1145/944705.944715},
	author = {Bierman,Gavin and Hicks, Michael W. and Sewell,Peter and Stoyle,Gareth and Wansbrough,Keith}
}
@conference {14723,
	title = {PLANet: an active internetwork},
	booktitle = {IEEE INFOCOM {\textquoteright}99. Eighteenth Annual Joint Conference of the IEEE Computer and Communications Societies. Proceedings},
	volume = {3},
	year = {1999},
	month = {1999/03/21/25},
	pages = {1124-1133 vol.3 - 1124-1133 vol.3},
	publisher = {IEEE},
	organization = {IEEE},
	abstract = {We present PLANet: an active network architecture and implementation. In addition to a standard suite of Internet-like services, PLANet has two key programmability features: (1) all packets contain programs; and (2) router functionality may be extended dynamically. Packet programs are written in our special purpose programming language PLAN, the Packet Language for Active Networks, while dynamic router extensions are written in OCaml, a dialect of ML. Currently, PLANet routers run as byte-code-interpreted Linux user-space applications, and support Ethernet and IP as link layers. PLANet achieves respectable performance on standard networking operations: on 300 MHz Pentium-II{\textquoteright}s attached to 100 Mbps Ethernet, PLANet can route 48 Mbps and switch over 5000 packets per second. We demonstrate the utility of PLANet{\textquoteright}s activeness by showing experimentally how it can nontrivially improve application and aggregate network performance in congested conditions},
	keywords = {100 Mbit/s, 300 MHz, 48 Mbit/s, active internetwork, active network architecture, active network implementation, byte-code-interpreted applications, Computer architecture, Computer languages, Computer networks, congested conditions, dynamic programming, dynamic router extensions, Ethernet, Ethernet networks, INFORMATION SCIENCE, Internet, Internet-like services, internetworking, IP, IP networks, link layers, Linux user-space applications, Local area networks, ML dialect, Network performance, networking operations, OCaml, Packet Language for Active Networks, packet programs, packet switching, Pentium-II, performance, performance evaluation, PLAN, PLANet, Planets, programmability features, programming languages, router functionality, special purpose programming language, Switches, telecommunication network routing, Transport protocols, Web and internet services},
	isbn = {0-7803-5417-6},
	doi = {10.1109/INFCOM.1999.751668},
	author = {Hicks, Michael W. and Moore,J. T and Alexander,D. S and Gunter,C. A and Nettles,S. M}
}
@article {12072,
	title = {Safety and security of programmable network infrastructures},
	journal = {IEEE Communications Magazine},
	volume = {36},
	year = {1998},
	month = {1998/10//},
	pages = {84 - 92},
	abstract = {Safety and security are two reliability properties of a system. A {\textquotedblleft}safe{\textquotedblright} system provides protection against errors of trusted users, while a {\textquotedblleft}secure{\textquotedblright} system protects against errors introduced by untrusted users. There is considerable overlap between mechanisms to support each property. Requirements for rapid service creation have stimulated the development of programmable network infrastructures, where end users or service providers can customize the properties of a network infrastructure while it continues to operate. A central concern of potential users of such systems is their reliability and, most specifically, their safety and security. In this article we explain the impact the network service model and architecture have on safety and security, and provide a model with which policies can be translated into restrictions of a general system. We illustrate these ideas with the Secure Active Network Environment (SANE) architecture, which provides a means of controlling access to the functions provided by any programmable infrastructure},
	keywords = {Access control, error protection, IP networks, Multicast protocols, network architecture, network operating systems, network service model, operating system, Power system dynamics, Power system modeling, Power system reliability, programmable languages, programmable network infrastructures, programming languages, Proposals, Protection, reliability properties, Safety, Secure Active Network Environment, Security, security of data, service creation, service providers, Switches, telecommunication computing, telecommunication network reliability, Web and internet services},
	isbn = {0163-6804},
	doi = {10.1109/35.722141},
	author = {Alexander,S. and Arbaugh, William A. and Keromytis,A. D and Smith,J. M}
}
@article {12079,
	title = {The SwitchWare active network architecture},
	journal = {IEEE Network},
	volume = {12},
	year = {1998},
	month = {1998/06//May},
	pages = {29 - 36},
	abstract = {Active networks must balance the flexibility of a programmable network infrastructure against the safety and security requirements inherent in sharing that infrastructure. Furthermore, this balance must be achieved while maintaining the usability of the network. The SwitchWare active network architecture is a novel approach to achieving this balance using three layers: active packets, which contain mobile programs that replace traditional packets; active extensions, which provide services on the network elements and can be dynamically loaded; and a secure active router infrastructure, which forms a high-integrity base on which the security of the other layers depends. In addition to integrity checking and cryptography-based authentication, security in our architecture depends heavily on verification techniques from programming languages, such as strong type checking},
	keywords = {active extensions, active packets, Authentication, Computer languages, Computer networks, cryptography, cryptography-based authentication, high-integrity base, integrity checking, IP networks, LAN interconnection, mobile programs, network operating systems, packet switching, programmable network infrastructure, programming languages, Protocols, Safety, safety requirements, scalability, secure active router infrastructure, Security, security requirements, services, strong type checking, Switches, SwitchWare active network architecture, telecommunication network routing, Tin, usability, verification techniques},
	isbn = {0890-8044},
	doi = {10.1109/65.690959},
	author = {Alexander,D. S and Arbaugh, William A. and Hicks, Michael W. and Kakkar,P. and Keromytis,A. D and Moore,J. T and Gunter,C. A and Nettles,S. M and Smith,J. M}
}
@article {18420,
	title = {Research in Programming Languages and Software Engineering.},
	year = {1985},
	month = {1985/12/24/},
	institution = {Department of Computer Science, University of Maryland, College Park},
	abstract = {During the past year three research papers were written and two published conference presentations were given. Titles of the published research articles are: A Stochastic Analysis of a Modified Gain Extended Kalman Filter with Applications to Estimation with Bearings only Measurements; The Modified Gain Extended Kalman Kilter and Parameter Identification in Linear Systems and Maximum Information Guidance for Homing Missiles.},
	keywords = {*BEARINGS, *COMPUTER PROGRAMS, *ESTIMATES, *GUIDANCE, *KALMAN FILTERING, *LINEAR SYSTEMS, *STOCHASTIC PROCESSES, COMPUTER PROGRAMMING AND SOFTWARE, GAIN, identification, measurement, programming languages, STATISTICS AND PROBABILITY, SYSTEMS ENGINEERING., TARGET DIRECTION, RANGE AND POSITION FINDING},
	url = {http://stinet.dtic.mil/oai/oai?\&verb=getRecord\&metadataPrefix=html\&identifier=ADA186269},
	author = {Gannon,John and Basili, Victor R. and Zelkowitz, Marvin V and Yeh,Raymond}
}
@article {17289,
	title = {Measuring computer program quality and comprehension},
	journal = {International Journal of Man-Machine Studies},
	volume = {9},
	year = {1977},
	month = {1977/07//},
	pages = {465 - 478},
	abstract = {Judging the relative quality of computer programs and a programmer{\textquoteright}s comprehension of a given program has proven to be a difficult task. Ability to debug, modify, hand simulate execution or respond to questions about the program all have their weaknesses as comprehension metrics. This paper offers experimental evidence which supports the use of memorization/recall tasks as a further basis for judging program quality and programmer comprehension. A syntactic/semantic model of programmer behavior is presented to provide a basis for this hypothesis.},
	keywords = {cognitive psychology, commenting, memorization, modification, program design, programmer behavior, Programming, programming experiments, programming languages, RECALL, structured programming},
	isbn = {0020-7373},
	doi = {10.1016/S0020-7373(77)80014-X},
	url = {http://www.sciencedirect.com/science/article/pii/S002073737780014X},
	author = {Shneiderman, Ben}
}
