About
100
Publications
19,169
Reads
How we measure 'reads'
A 'read' is counted each time someone views a publication summary (such as the title, abstract, and list of authors), clicks on a figure, or views or downloads the full-text. Learn more
1,062
Citations
Publications
Publications (100)
The micro:bit (http://www.microbit.org) is a pocket-sized, programmable computing device, designed to engage people with computing technology. The micro:bit is visually appealing, fun, easy to code and inexpensive. It is widely available at schools in the United Kingdom and is now being rolled out world-wide. Key features of the micro:bit that make...
The chance to influence the lives of a million children does not come often. Through a partnership between the BBC and several technology companies, a small instructional computing device called the BBC micro:bit will be given to a million children in the UK in 2016. Moreover, using the micro:bit will be part of the CS curriculum. We describe how M...
Puzzles are the basic building block of Code Hunt contests. Creating puzzles and choosing suitable puzzles from the puzzle bank turns out to be a complex operation requiring skill and experience. Constructing a varied and interesting mix of puzzles is based on several factors. The major factor is the difficulty of the puzzle, so that the contest ca...
Sophistication and flexibility of software development make it easy to leave security vulnerabilities in software applications for attackers. It is critical to educate and train software engineers to avoid introducing vulnerabilities in software applications in the first place such as adopting secure coding mechanisms and conducting security testin...
Pex is an automatic white-box test-generation tool for .NET. We have established that games can be built on top of Pex to open the tool to students and to the general public. In particular, we have released Pex4Fun (www.pexforfun.com) and its successor Code Hunt (www.codehunt.com) as web-based educational gaming environments for teaching and learni...
Learning to code can be made more effective and sustainable if it is perceived as fun by the learner. Code Hunt uses puzzles that players have to explore by means of clues presented as test cases. Players iteratively modify their code to match the functional behavior of secret solutions. This way of learning to code is very different to learning fr...
We are experiencing a technology shift: Powerful and easy-to-use mobile devices like smartphones and tablets are becoming more prevalent than traditional PCs and laptops. Mobile devices are going to be the first and, in less developed countries, possibly the only computing devices which virtually all people will own and carry with them at all times...
Code Hunt (http://www.codehunt.com/) is an educational coding game (that runs in a browser) for teaching and learning computer science at scale. The game consists of a series of worlds and levels, which get increasingly challenging. In each level, the player has to discover a secret code fragment and write code for it. The game has sounds and a lea...
Pex4Fun (http://www.pex4fun.com/) is a web-based educational gaming environment for teaching and learning programming and software engineering. Pex4Fun can be used to teach and learn programming and software engineering at many levels, from high school all the way through graduate courses. With Pex4Fun, a student edits code in any browser - with In...
The term "Technical Debt" was coined over 20 years ago by Ward Cunningham in a 1992 OOPSLA experience report. Ward used "Technical debt" to describe the trade-offs be-tween delivering the most appropriate - albeit likely immature - product, in the shortest time possible. Since then, the repercussions of 'technical debt' have become more visible, th...
Programming for Mobile and Touch (PRoMoTo'13) was held at the 2013 ACM
SIGPLAN conference on Systems, Programming, Languages and Applications (SPLASH
2013), October 2013 in Indianapolis, USA. Submissions for this event were
invited in the general area of mobile and touch-oriented programming languages
and programming environments, and teaching of p...
The cloud is a de facto place now for storage and for software. For ordinary researchers, it is not as easy to use as one would hope. This column explores how a researcher painlessly leverages the cloud to archive, share and publish scientific data that is richer than text; and to showcase experimental tools in any environment, for review or classe...
The term “Technical Debt” was coined over 20 years ago by Ward Cunningham in a 1992 OOPSL A experience report to de scribe the tr ade-offs between delivering the most appropriate — albeit likely immature — product, in the shortest time possible. Since then the repercussions of going into “technical debt” have become more visible, yet not necessaril...
Massive Open Online Courses (MOOCs) have recently gained high popularity among various universities and even in global societies. A critical factor for their success in teaching and learning effectiveness is assignment grading. Traditional ways of assignment grading are not scalable and do not give timely or interactive feedback to students. To add...
TOPI (http://se.inf.ethz.ch/events/topi2013/) is a workshop started in 2011 to address research questions involving plug-ins: software components designed and written to execute within an extensible platform. Most such software components are tools meant to be used within a development environment for constructing software. Other environments are m...
SUMMARY Our knowledge of how to solve software engineering problems is increasingly being encapsulated in tools. These tools are at their strongest when they operate in a pre-existing integrated development environment (IDE). This approach allows integration with existing elements such as compilers, debuggers, profilers, visualizers, and numerous o...
From paper to computers, the way we have been writing down thoughts and performing symbolic computations has been constantly evolving. Teaching methods closely follow this trend, leveraging existing technology to make teaching more effective and preparing students for their later careers with available technologies. At present, we are in the middle...
From paper to computers, the way that we have been writing down thoughts and performing symbolic computations has been constantly evolving. Teaching methods closely follow this trend, leveraging existing technology to make teaching more effective and preparing students for their later careers with the available technology. Right now, in 2012, we ar...
Despite the availability of libraries and constructs in modern programming languages to support the development of parallel applications, achieving the desired performance improvement can still be difficult. Design patterns and idioms simplify writing of applications but, if they are not applied correctly, the introduced overhead may overwhelm the...
Pex4Fun (pexforfun.com) is a web-based serious gaming environment for teaching computing at many levels, from high school all the way through graduate courses. Unique to the Pex4Fun experience is a cloud-based program evaluation engine based on dynamic symbolic execution and SMT-solving, which provides customized feedback to the student and automat...
Research partnerships between industry and academia are grown through relationships, a desire for innovation, and opportunities for sponsorship. Relationships mature through the mobility (virtual or otherwise) of academics, graduates, and seasoned industry professionals. From an industry perspective, innovation is driven by a need to grow product p...
Technology transfer is typically viewed as being from academia to industry but it can indeed go in either direction. Many of the same challenges then apply -- platform suitability, timeliness, support, and community building. In this paper, we describe recent efforts to transfer technology for research and teaching from an industrial research labor...
Today, multicore computers are commonplace and university cur-ricula are lagging behind. We need to work concurrency and paral-lelism into introductory courses, while also maintaining upper-level specialized courses on the topic. Since teachers may themselves re-quire education on the topic, we feel that it is important to make course materials fre...
This book contains the proceedings of the TOOLS 2011 conference, held in Zurich in June 2011.
Multicore computers are now the norm. Taking advantage of these multiple cores entails parallel and concurrent pro-gramming. There is therefore a pressing need for courses that teach effective programming on multicore architectures. We believe that such courses should emphasize high-level ab-stractions for performance and correctness and be support...
Our knowledge as to how to solve software engineering problems is increasingly being encapsulated in tools. These tools are at their strongest when they operate in a pre-existing development environment that can provide integration with existing elements such as compilers, debuggers, profilers and visualizers. The first Workshop on Developing Tools...
Medvidovic and Edwards provide in their paper (henceforth referred to as the Roadmap) a technical basis for mobility. They specify the architectural background for software of the future, dividing it into Mobile Software and Mobile Systems. This commentary adds to their work by describing the model of a higher-level application area that builds on...
The original purpose of addresses was to enable the correct and unambiguous delivery of postal mail. The advent of computers and more specifically geographic information systems (GIS) opened up a whole new range of possibilities for the use of addresses, such as routing and vehicle navigation, spatial demographic analysis, geo-marketing, and servic...
The Web service paradigm allows applications to interact electronically with one another over the Internet. Standards and languages, such as BPEL and OWL-S provide a platform with which Web services can be integrated. Moreover, various AI planning techniques have also been adapted to integrate services. However, the autonomous and distributed natur...
The concept of grid computing has permeated all areas of distributed computing, changing the way in which distributed systems are designed, developed and imple-mented. Data grids enable the sharing of data in a virtual organisation and are typically implemented for data federation in data-intensive environments. So far, they have been applied to tr...
Software product line engineering has become a widely used and popular approach for developing products that are targeted at a specific market. Strategic reuse is a key factor in its success. Large organizations, such as in the financial industry, cover large domains and thus have huge existing infrastruc-tures running in separate business units. S...
Mobile devices are now used not only for communication but also as working units. As more sensitive information is stored on and transmitted through these devices, security is becoming a growing concern. This is especially true for SMS messages which do not integrate any security mechanism. This is why we propose a simple-to-use but cryptographical...
Short Message Service is usually used to transport unclassified information, but with the rise of mobile commerce it has become an integral tool for conducting business. However, SMS does not guarantee confidentiality and integrity of the message content. This paper proposes a protocol called SMSSec that can be used to secure an SMS communication s...
Agencies consisting of simple agents can be deployed on the Internet to solve problems that are too complex for single autonomous Internet agents. We deploy Bayesian agencies on the Internet to achieve emergent belief propagation through the collective behavior of simple agents organized into heterarchies of agencies. Collectively the agents use pr...
From the very inception of design patterns, there was the anticipation that some of them would be superceded by new language
features. Yet published implementations of classic patterns do not generally live up to this promise. The occurrence of generics,
delegates, nested classes, reflection and built-in iteration is confined to a few patterns in a...
In the context of software engineering, abstraction is the means by which we move from layer to layer in the realization of the solution to a large problem. It has been recognized for over a decade that design patterns are one of the key mechanisms for implementing reliable and maintainable software. This paper explores where they fit in in the sof...
With business drivers such as innovation and the constant influence of changing requirements, organizations seek ways to increase time-to-market capability, enhance overall productivity and maintain or improve product qual-ity. At the same time these organizations strive to leverage legacy investments. Assets unbundled from these legacy systems, ac...
The concept of laziness is defined according to the practice, advocated by Dijkstra, of writing a program correctly from the beginning, so as to rule out costly testing and re-writing. I trace the meaning of laziness in the life of my friend Derrick Kourie, and contrast it with some of my pet ideals, such as languages, tools and design patterns. Th...
Java is rapidly becoming the language of choice in a wide range of applications from networking to scientific to business. Other languages can gain the power of Java by compiling to Java or to its bytecode. Source to Java translation is an attractive option because it is faster to implement and offers advantages in retaining the structure of the or...
The complex adaptive enterprise can learn from and react to global events faster than the competition because of its self-awareness and its ability to adapt. An enterprise is self-aware if it understands the interdependencies between its own resources and how these resources and interdependencies contribute to its own competitive advantage. The com...
Alchemi and the Globus toolkit are open source software toolkits for implementing a grid. Although both toolkits are designed for the same purpose, their architecture and underlying technology are completely different. Thus, a performance comparison of a grid implementation in Alchemi with a similar grid implementation in the Globus toolkit will be...
Web services are becoming progressively popular in the building of both inter- and intra-enterprise business processes. These processes are composed from existing Web services based on defined requirements. In collecting together the services for such a composition, developers can employ languages and standards for the Web that facilitate the autom...
Web services are created and updated on-the-fly. Manual composition cannot foreseen the change and adapt to the dynamic environment. Different AI planning techniques have been proposed to facilitate automatic composition of Web services. Planners have been developed to help with the composition based on these techniques. The adequacy of these plann...
The design of software that is easy to port or deliberately targeted for multiple platforms is a neglected area of software engineering. A promising solution is to link components and toolkits through XML and reflection. One of the more compelling definitions of software engineering is, the multiperson construction of multiversion software. The pop...
The release of Curriculum 2001 coupled with the increasing importance of the World Wide Web and the changes in pedagogy enabled by new technologies has made the choices about what to teach in the programming languages course and how to teach it more varied . Each of the members of this panel approaches their version of the course differently and wi...
The design of software that is easy to port or deliberately targeted for multiple platforms is a neglected area of software engineering. A promising solution is to link components and toolkits through XML and reflection
Technology plays an ever-increasing role in our everyday lives. We would like it to be a help rather than a hurdle in our work, particularly in collaborating with others. An emerging problem for both individuals and groups is information spread and neglect, where users have the same copy of the same work, stored on various conventional devices, but...
The popular view of software engineering focuses on managing teams of people to produce large systems. This paper addresses a different angle of software engineering, that of development for re-use and portability. We consider how an essential part of most software products - the user interface - can be successfully engineered so that it can be por...
Aspect Oriented Programming, is changing the way software is developed in various domains of computing and software engineering. In this article we discuss the main characteristics of AOP with a particular focus on distributed systems. The testbed for our investigation is our distributed algorithm framework, Algon. Our experiments support the hypot...
________________________________________________________________________________________________ Distributed Groupware applications must be designed to cope with an increasingly diverse set of operational conditions. The available network bandwidth and latency, the network connectivity, the number of users, the type of devices, the system load, are...
SUMMARY Java programmers cannot but be aware of the advent of C#, the .NET network environment, and a host of new supporting technologies, such as web services. Before taking the big step of moving all development to a new environment, programmers will want to know what are the advantages of C# as a language over Java, and whether the new and inter...
Java programmers cannot help but be aware of the advent of C#, the .NET network environment, and a host of new supporting technologies, such as Web services. Before taking the big step of moving all development to a new environment, programmers will want to know what are the advantages of C# as a language over Java, and whether the new and...
Programming in a distributed environment is a complex activity. Programmers need to be aware of issues unrelated to their domain of expertise, and are often unprepared for the challenges that distribution brings. Chief among these are the choice and application of different distributed algorithms, and the adaptation to evolving and emerging middlew...
________________________________________________________________________________________________ In this paper we discuss the characteristics of Aspect Oriented Programming (AOP), and the development of new or existing applications using AOP. Aspects are emerging everywhere, and there is a particular need to introduce and practice them strategicall...
Platform independence is an illusive goal when a system includes libraries which have hardware or low-level software dependencies. To move such code to a different platform, the developer is faced with rewriting several sections to interface directly with a different library or toolkit. We propose an approach where the code remains the same, and th...
This paper proposes that GUI development is as important as other aspects of programming, such as a sound understanding of control structures and object orientation. Far less attention has been paid to the programming structures for GUIs and certainly there are few cross language principles to aid the programmer. We propose that principles of GUIs...
________________________________________________________________________________________________ Short Message Service (SMS) has grown in popularity over the years and it has become a common way of communication. SMS is usually used to transport unclassified information, but with the rise of mobile commerce it has become a popular tool for transmit...
This paper surveys the advantages of C# and then presents and evaluates experience with connecting it to Java in a variety of ways. The first way provides evidence that Java can be linked to C# at the native code level, albeit through C++ wrappers. The second is a means for retaining the useful applet feature of Java in the serverside architecture...
Java programmers cannot but be aware of Microsoft's new initiative -- a complete language, network environment, and a host of supporting technologies under the title of C# .NET. We highlight the advantages of C# by presenting our experiences connecting it to Java in three ways. The first is by providing a platform and language-independent XML-based...
Programmers often need to use distributed algorithms to add non-functional behaviour such as mutual exclusion, deadlock detection and termination, to a distributed application. They find the selection and implementation of these algorithms daunting. Consequently, they have no idea which algorithm will be best for their particular application. To ad...
The development of Java based wireless applications presents challenges such as securing communication and authentication between mobile devices and a server. It is acknowledged that cryptography is commonly used to secure network communications and provide authentication functionality. However, due to the nature of mobile devices such as cellular...
Most agent architectures implement autonomous agents that use extensive interaction protocols and social laws to control interactions in order to ensure that the correct behaviors result during run-time. These agents, organized into multi-agent systems in which all agents adhere to predefined interaction protocols, are well suited to the analysis,...
The perceived advantages of distributed systems, such as increased reliability and availability, are offset by the increased complexity of developing such applications. The developers of distributed applications have to both understand the core functionality of the application, and to cater for the mechanisms of distribution. Distribution brings wi...
Java programmers cannot but be aware of Microsoft's new initiative - a complete language, network environment, and a host of supporting technologies under the title of C# .NET. We highlight the advantages of C# by presenting our experiences connecting it to Java in three ways. The first is by providing a platform and language-independent XML-based...
The aim of this paper is to describe a generic interface through which a planning tool or design aid can be connected to a telecommunications network. In today's complex and ever changing networks, network operators need to plan their networks very accurately and rapidly. Sacrificing accuracy generally has severe impacts on the scalability and main...
Scientific programmers have traditionally programmed in entirely sequential languages such as Fort ran, C or Pascal and it could be argued that object-orientation is not a concept that they would need. Yet computer science departments that give courses to scientists and engineers would like to consider teaching them in Java, rather than in one of t...
Scientific programmers have traditionally programmed in entirely sequential languages such as Fortran, C or Pascal and it could be argued that object-orientation is not a concept that they would need. Yet computer science departments that give courses to scientists and engineers would like to consider teaching them in Java, rather than in one of th...
In this paper we describe how to increase the visualization and interaction in the automata theory course through the use of the tools JFLAP and Pâté. We also describe new features in these tools that allow additional visualization and interaction. ...
This paper discusses the lessons learned and decisions made while designing and developing a web-based application for the National Spatial Information Framework (NSIF) of South Africa. The NSIF provides the parameters for a coherent national spatial data infrastructure and promote the utilization of spatial information in South Africa. The applica...
As time progresses, we see more and more new programming languages of all kinds appearing on the market [Trott 1997]. Some are developed by a tremendous work force, while others spring forth from a single person's work. All usually have one goal, which is to provide either new or improved functionality. The main advantage of new languages lies in t...
Query and analysis lie at the heart of a geographic information system. 1 The ability to analyze geographical patterns and relationships differentiates GISs from computer cartography, computer-aided design, remote sensing, and database management. Computer scientists have researched relational database query languages for more than a decade, but a...
The way to teach Java as a first programming language is still uncharted. Those of us who have gone through a change of first programming language more than once know that the one guiding beacon is not to assume that the pattern of teaching a new language will follow that of the old. Java is no exception to this rule. In this paper, I describe a su...
Configuration programming is the process whereby components written in any conventional programming language can be bound together to form a dynamic system, often suitable for execution on distributed hardware. Among the specialised languages that exist for configuration programming there is currently a debate over the importance of recognising the...
Systems are written in systems implementation languages. What characterizes such languages in the mid-1990's? This paper identifies the typical environment that a system is being targeted for these days – as opposed to twenty years ago – and emphasizes how this radically affects the language in which development proceeds. It then considers two dire...
This article considers how to incorporate ontologies into workflow in an effort to im-prove computer support for collaborative work and improve system interoperability. A connection is drawn between the production process of an artefact in a community of collaborators and an agent based system. In order to make this connection more con-crete, knowl...
For the enterprise that is large and geographically dispersed, there can be no better tool for distributing content than the Web. We used the Web and the Internet as the transport and communication agent for distributing the objects created. The system is based on Internet Inter-ORB Protocol (IIOP) which provides pre-configured interoperability for...
The development of Java based wireless applications presents challenges such as securing communication and authentication between mobile devices and a server. It is acknowledged that cryptography is commonly used to secure network communications and provide authentication functionality. However, due to the nature of mobile devices such as cellular...
The concepts and mechanisms of abstraction and polymor-phism are usually the foundation on which programmers build their skills in an object oriented language. Along the way the programmer adopts certain mechanisms that are used in preference to others, which he un-derstands and feels most comfortable using. This practice often miti-gates against c...
The advent of the Internet and the World Wide Web have given rise to a wide variety of distributed applications, one being geographic information systems (GIS). Query and analysis are at the heart of GIS, but the heterogeneous environment of the WWW requires openness in terms of hardware and software. As a result a distributed open spatial query me...
In this paper, we propose a framework to enable automated agents to search the semantic web. It is the position of this paper that the World Wide Web has seen such tremendous success because of the search engines that allow people to find web pages that would be relevant to them. In order for the semantic web to enjoy the same manner of success, a...
Programming in a distributed environment is a complex ac-tivity. Programmers need to be aware of issues unrelated to their domain of expertise, and are often unprepared for the challenges that distribution brings. Chief among these are issues of mutual exclusion and deadlock detection, which have quite different solutions in a distributed environme...
Aspect orientation is changing the way software is developed within various computing domains. In this paper we discuss the characteristics of aspect oriented programming, and the development of new or existing applications using aspect-oriented techniques and tools. We will show that this attractive technology is useful for solving the problems of...
1 Abstract Software components are deployed in tightly coupled environments within the context of a component model. Techniques such as Prediction-Enabled Component Technology (PECT) [4] combine component technologies with analysis models to address the issue of consumer trust in the quality of as-semblies. Service-oriented thinking and challenges...
The Web service paradigm allows applications to interact electronically with one another over the Internet. Standards and languages, such as BPEL and OWL-S provide a platform with which Web services can be integrated. Moreover, various AI planning techniques have also been adapted to integrate services. However, the autonomous and distributed natur...
In order to gain a competitive advantage in today's software engineering industry, it is necessary to reduce the time to market and the cost of development. It is essential to build systems that are flexible and adaptable to changing requirements. Reuse-driven development is a commonly used method for achieving these goals. Various software develop...
CSCW is often seen as supporting people who work in offices or virtual communities, but the image is of the desk worker, with a LAN or broadband connection. CSCW systems need to take into account modern work habits, where mobile users are disconnecting from the network continuously (because they are using PDAs) and are working in different time zon...
Programming in a distributed environment is a complex activity. Programmers need to be aware of issues unrelated to their domain of expertise, and are often unprepared for the challenges that distribution brings. Chief among these are issues of the application of distributed algorithms in differing distributed systems. We have tackled this problem...
Many educators regard the visualisation of algorithms as an essential teaching tool for courses from first year up. Sophisticated and visually appealing systems exist to show the operation of algorithms from simple sorts to complex compression algorithms. These tools can take considerable effort to develop or even adopt and may end up being quite r...