Peli de Halleux's research while affiliated with Microsoft and other places

Publications (26)

Article
A codable computer half the size of a credit card is inspiring students worldwide to develop core computing skills in fun and creative ways.
Conference Paper
Microsoft MakeCode (https://www.makecode.com) is a platform and accompanying web app for simplifying the programming of microcontroller-based devices in the classroom. For each device, MakeCode provides a customized end-to-end experience in the web browser consisting of code editors, device simulator, debugger, compiler to machine code, and linker...
Conference Paper
While the programming of microcontroller-based embeddable devices typically is the realm of the C language, such devices are now finding their way into the classroom for CS education, even at the level of middle school. As a result, the use of scripting languages (such as JavaScript and Python) for microcontrollers is on the rise. We present Static...
Article
Full-text available
Historically, embedded systems development has been a specialist skill, requiring knowledge of low-level programming languages, complex compilation toolchains, and specialist hardware, firmware, device drivers and applications. However, it has now become commonplace for a broader range of non-specialists to engage in the making (design and developm...
Conference Paper
The growing maker movement has created a number of hardware and construction toolkits that lower the barriers of entry into programming for youth and others, using a variety of approaches, such as gaming or robotics. For constructionist-like kits that use gaming, many are focused on designing and programming games that are single player, and few ex...
Conference Paper
In the past decade, parameterized unit testing has emerged as a promising alternative to specify program behaviors under test in the form of unit tests. Developers can write parameterized unit tests (PUTs), unit-test methods with parameters, in contrast to conventional unit tests, without parameters. PUTs have been popularly supported by various un...
Article
Full-text available
Across the globe, it is now commonplace for educators to engage in the making (design and development) of embedded systems in the classroom to motivate and excite their students. This new domain brings its own set of unique requirements. Historically, embedded systems development requires knowledge of low-level programming languages, local installa...
Conference Paper
Full-text available
Across the globe, it is now commonplace for educators to engage in the making (design and development) of embedded systems in the classroom to motivate and excite their students. This new domain brings its own set of unique requirements. Historically, embedded systems development requires knowledge of low-level programming languages, local installa...
Conference Paper
Full-text available
JavaScript has long outpaced its original target applications, being used not only for coding complex web clients, but also web servers, game development and even desktop applications. The most appealing advantage of moving applications to JavaScript is its capability to run the same code in a large number of different devices. It is not surprising...
Conference Paper
Software tools researchers can accelerate their ability to learn by exposing tools to users via web technologies, allowing them to observe and test the interactions between humans and tools. At Microsoft Research, we have developed a web service (http://www.rise4fun.com/) for such a purpose that is available for community use.
Conference Paper
Live programming allows programmers to edit the code of a running program and immediately see the effect of the code changes. This tightening of the traditional edit-compile-run cycle reduces the cognitive gap between program code and execution, improving the learning experience of beginning programmers while boosting the productivity of seasoned o...
Article
Platforms such as Windows Azure let applications conduct data-intensive cloud computing. Unit testing can help ensure high-quality development of such applications, but the results depend on test inputs and the cloud environment's state. Manually providing various test inputs and cloud states is laborious and time-consuming. However, automated test...
Article
Developing concurrent software is hard. Testing concurrent software is harder. Although sequential program testing has many useful concepts, techniques, and tools (for example, assertions, unit testing, test-driven development, code coverage, and test generation tools), the testing workbench for concurrent programs is comparatively quite bare. Ches...
Conference Paper
Constraints in form regular expressions over strings are ubiquitous. They occur often in programming languages like Perl and C#, in SQL in form of LIKE expressions, and in web applications. Providing support for regular expression constraints in program analysis and testing has several useful applications. We introduce a method and a tool called Re...
Conference Paper
Full-text available
We study the problem of generating a database and parameters for a given parameterized SQL query satisfying a given test condition. We introduce a formal background theory that includes arithmetic, tuples, and sets, and translate the generation problem into a satisfiability or model generation problem modulo the background theory. We use the satisf...
Conference Paper
Full-text available
This demonstration presents two tools, Code Con-tracts and Pex, that utilize specification constructs for advanced testing, runtime checking, and static checking of object-oriented .NET programs.
Article
Full-text available
During the last 10 years, code inspection for standard programming errors has largely been automated with static code analysis. During the next 10 years, we expect to see similar progress in automating testing, and specifically test generation, thanks to advances in program analysis, efficient constraint solvers, and powerful computers. Three new t...
Article
This document provides a short, step-by-step tutorial for the Moles frame- work (6, 3). Moles is a framework that allows to replace any .NET method with your own delegate. Moles supports interface, abstract classes, sealed types, static classes and methods, etc... This tutorial assumes that the reader is familiar with some basic notions of unit tes...
Article
In software development, the notion of a test stub refers to dummy implemen- tation that can replace a possibly complex component to facilitate testing. While the idea of stubs is simple, most existing frameworks that can help to create and maintain dummy implementations are actually quite complex themselves. We have developed a new lightweight fra...
Article
This document provides a short, step-by-step tutorial for the Stubs frame- work (6, 3). This tutorial assumes that the reader is familiar with some basic notions of unit testing (2).
Article
This document provides a short, step-by-step tutorial on how to write isolated unit test for applications using SharePoint Services, by using the Moles frame- work (4, 2) and applying the Pex framework to generate a test suite with high code coverage. This tutorial assumes some basic notions of unit testing (1) and SharePoint Services application d...
Article
Full-text available
A common problem faced by modern mobile-device platforms is that third-party applications in the marketplace may leak private information without notifying users. Existing approaches adopted by these platforms provide little information on what applications will do with the private information, failing to effectively assist users in deciding whethe...
Article
Full-text available
The process of achieving high structural coverage of the pro- gram under test can be automated using Dynamic Sym- bolic Execution (DSE), which generates test inputs to it- eratively explore paths of the program under test. When applied on real-world applications, DSE faces various chal- lenges in generating test inputs to achieve high structural co...

Citations

... Block-based programming environments, like Scratch [39] and Blockly [18], are very popular at the primary school level, as they provide helpful visual cues to students when constructing programs [52]. Scratch is designed to support learners between the ages of 8 and 16 and its simplified counterpart, ScratchJr, targets learners between 5 and 7 1 . Statistics show that the age distribution for students new to Scratch peaks at 12, with relatively few students between the ages of 7 and 9 2 . ...
... These materials were developed through the RPP by leveraging the expertise of elementary education researchers and practitioners. After viewing this educational content, students are routed to a walk-through in the Microsoft MakeCode platform [3], a coding environment in which students can use code blocks to create programs to run on a virtual micro:bit. As an example, Figure 6 shows an intermediate step of the second learning activity, which the students undertake after learning about accelerometers in general, and how the accelerometer on the micro:bit works. ...
... As shown in Fig. 2, the BLE protocol stack architecture includes three parts: applications, host, and controller. Detailed information can be obtained from the Bluetooth specification 12 website, whereas below, we define each part of the stack and briefly introduce the relationships. ...
... CoBlox [168] Blockly Interface for Roberta a single-armed industrial robot. MakerArcade [135] MakeCode Create gaming experiences through physical computing. UNC++Duino [18] BlocklyDuino Program robots to teach CS concepts. ...
... The first phase of data analysis started by identifying how many students had achieved the transfer from one language to another, and correctly solving the MakeCode Challenge. The students had worked with a block-based programming language (MakeCode), which may facilitate basic programming learning, especially in children and beginners (Devine et al., 2018;Pérez-Marín et al., 2020). Therefore, the block-based programming activities were expected to be easier to understand and explain for the students, as opposed to the Python program, a programming language that was mostly unknown to them. ...
... Microsoft MakeCode (https://www.makecode.com) is a platform and accompanying web app for simplifying the programming of microcontroller-based devices in the classroom. [5] For each device, MakeCode provides a customized end-to-end experience in the web browser consisting of code editors, device simulator, debugger, compiler to machine code, and linker to a pre-compiled C++ runtime, as well as a documentation and tutorial system. The BBC micro:bit (see Figure 1(a)) is one example of a physical computing device that MakeCode supports [1]. ...
... Again, such feature would also be useful in a research context, and was one of the reasons that led Microsoft to develop the www.rise4fun.com web service, that allows researchers to easily deploy their tools on the web and collect humantool interactions for posterior mining [1] (besides other advantages of web tools, like increased exposure, since the need for downloading and installing is eliminated, and promoting reliability given the large amount of test cases that can be collected for free). One of the most popular examples available via Rise4Fun, and the inspiration for developing Alloy4Fun, is www.pex4fun.com, ...
... Given this importance, it comes as no surprise the upsurge of attention that JavaScript has received from the industry and the academia in recent years. Much of this attention is focused on the design and implementation of efficient Just-in-Time (JIT) compilers for this programming language [6,7,8,9]. ...
... Parameterized mock objects [11] can be used to general- ize mock objects and address the preceding issue by simu- lating the various possible return values automatically. Pa- rameterized mock objects are related to Parameterized Unit Tests (PUTs) [13] used by Pex [12] in test generation. ...
... Xiao et al. [59] proposed a user-aware privacy control mechanism to track how sensitive data was used inside mobile apps. The authors employed static analysis to extract information flows from apps. ...