Block-based programming environments are very popular for introducing children to programming. Unfortunately, they are not accessible to many children with visual or motor impairments. In this paper we outline why blo...
详细信息
Block-based programming environments are very popular for introducing children to programming. Unfortunately, they are not accessible to many children with visual or motor impairments. In this paper we outline why block-based environments should be made accessible for these children, describe current efforts to make environments accessible, and describe how developers can incorporate accessibility into their own block-based programming environments.
In recent times, programming environments like Visual Studio are widely used to enhance programmer productivity. However, inadequate accessibility prevents Visually Impaired (VI) developers from taking full advantage ...
详细信息
ISBN:
(纸本)9781450356206
In recent times, programming environments like Visual Studio are widely used to enhance programmer productivity. However, inadequate accessibility prevents Visually Impaired (VI) developers from taking full advantage of these environments. In this paper, we focus on the accessibility challenges faced by the VI developers in using Graphical User Interface (GUI) based programming environments. Based on a survey of VI developers and based on two of the authors' personal experiences, we categorize the accessibility difficulties into Discoverability, Glanceability, Navigability, and Alertability. We propose solutions to some of these challenges and implement these in CodeTalk, a plugin for Visual Studio. We show how CodeTalk improves developer experience and share promising early feedback from VI developers who used our plugin.
Block-based programming environments are often used for teaching novice students, including at the undergraduate level. Despite the simplification these tools offer, undergraduates still require additional support, of...
详细信息
Block-based programming environments are often used for teaching novice students, including at the undergraduate level. Despite the simplification these tools offer, undergraduates still require additional support, often learning programming by themselves or in large section courses with little instructional support. programming environments that provide adaptive support hold great promise for meeting this need. This paper presents the early design and piloting of Prime, a learning environment under development that provides scaffolded support for novices in block-based programming. A pilot study with Prime compared two implementations of the functionality for moving between programming subtasks: one with a static “Next Step” button for advancing through subtasks at any time, and one with a responsive button that only appeared once the current subtask was completed. Analysis of students' code quality showed that students in the responsive condition achieved higher quality code in later programming tasks. The results highlight design considerations and opportunities for adaptively supporting novices in block-based programming.
When learners use programming environments and languages or interact with them to construct their own knowledge, they create artifacts. These artifacts are a great source of insights into how learners use programming ...
详细信息
When learners use programming environments and languages or interact with them to construct their own knowledge, they create artifacts. These artifacts are a great source of insights into how learners use programming environments. Better knowledge of how learners use programming environments help us develop the theory of teaching programming languages. To this end, we analyzed a sample of 550,000 Snap!-projects, containing almost five million scripts, making this the first automated analysis of Snap!-projects of this magnitude. The majority of our initial results are in line with analyses of Scratch-projects of comparable scale: code smells such as standard names in sprites are found both in the Scratch-community and in these projects, and the complexity of projects in both languages is comparable. We also evaluated projects with regards to other factors, such as sprite naming, and the usage of blocks across the different categories. From our results, we can gain further insights into how learners use block-based programming environments, which ultimately assists us in developing teaching strategies for block-based languages.
The trends in hardware architecture are paving the road towards Exascale. However, these trends are also increasing the complexity of design and development of the software developer environment that is deployed on mo...
详细信息
ISBN:
(纸本)9781728112473;9781728112466
The trends in hardware architecture are paving the road towards Exascale. However, these trends are also increasing the complexity of design and development of the software developer environment that is deployed on modern supercomputers. Moreover, the scale and complexity of high-end systems creates a new set of challenges for application developers. Computational scientists are facing system characteristics that will significantly impact the programmability and scalability of applications. In order to address these issues, software architects need to take a holistic view of the entire system and deliver a high-level programming environment that can help maximize programmability, while not losing sight of performance portability. In this talk, I will discuss the current trends in computer architecture and their implications in application development and will present Cray's high level parallel programming environment for performance and programmability on current and future supercomputers. I will also discuss some of the challenges and open research problems that need to be addressed in order to build a software developer environment for extreme-scale systems that helps users solve multi-disciplinary and multi-scale problems with high levels of performance, programmability, and scalability.
Parallel surveys of introductory programming courses were conducted in Australasia and the UK, with a view to examining the programming languages being used, the preferred integrated development environments (if any),...
详细信息
ISBN:
(纸本)9781450351034
Parallel surveys of introductory programming courses were conducted in Australasia and the UK, with a view to examining the programming languages being used, the preferred integrated development environments (if any), and the reasons for these choices, alongside a number of other key aspects of these courses. This paper summarises some of the similarities and differences between the findings of the two surveys. In the UK, Java is clearly the dominant programming language in introductory programming courses, with Eclipse as the dominant environment. Java was also the dominant language in Australasia six years ago, but now shares the lead with Python;we speculate on the reasons for this. Other differences between the two surveys are equally interesting. Overall, however, there appears to be a reasonable similarity in the way these undergraduate courses are conducted in the UK and in Australasia. While the degree structures differ markedly between and within these regions - a possible explanation for some of the differences - some of the similarities are noteworthy and have the potential to provide insight into approaches in other regions and countries.
Title: Procedural code integration in streaming environments Author: Mgr. Michal Brabec Department: Department of Software Engineering Supervisor: David Bednárek, Ph.D. Abstract: Streaming environments and simila...
详细信息
Title: Procedural code integration in streaming environments Author: Mgr. Michal Brabec Department: Department of Software Engineering Supervisor: David Bednárek, Ph.D. Abstract: Streaming environments and similar parallel platforms are widely used in image, signal, or general data processing as means of achieving high perfor- mance. Unfortunately, they are often associated with domain specific program- ming languages, and thus hardly accessible for non-experts. In this work, we present a framework for transformation of a procedural code to a streaming ap- plication. We selected a restricted version of the C# language as the interface for our system, because it is widely taught and many programmers are familiar with it. This approach will allow creating streaming applications or their parts using a widely known imperative language instead of the intricate languages specific to streaming. The transformation process is based on the Hybrid Flow Graph - a novel inter- mediate code which employs the streaming paradigm and can be further convert- ed into streaming applications. The intermediate code shares the features and limitations of the streaming environments, while representing the applications without platform specific technical details, which allows us to use well known graph algorithms to work with the...
For decades, computing speeds seemingly doubled every 24 months by increasing the processor clock speed, thus giving software a "free ride" to better performance. This free ride, however, effectively ended b...
详细信息
For decades, computing speeds seemingly doubled every 24 months by increasing the processor clock speed, thus giving software a "free ride" to better performance. This free ride, however, effectively ended by the mid-2000s. With clock speeds having plateaued and computational horsepower instead increasing due to increasing the number of cores per processor, the vision for parallel computing, which started more than 40 years ago, is a revolution that has now (ubiquitously) arrived. In addition to traditional supercomputing clusters, parallel computing with multiple cores can be found in desktops, laptops, and even mobile smartphones. This ubiquitous parallelism in hardware presents a major challenge: the difficulty in easily extracting parallel performance via current software abstractions. Consequently, this paper presents an approach that reduces the learning curve to parallel programming by introducing such concepts into a visual (but currently sequential) programming language called Snap!, which was inspired by MIT's Scratch project. Furthermore, our proposed visual abstractions can automatically generate parallel code for the end user to run in parallel on a variety of platforms from personal computing devices to supercomputers. Ultimately, this work seeks to increase parallel programming literacy so that users, whether novice or experienced, may leverage a world of ubiquitous parallelism to enhance productivity in all walks of life, including the sciences, engineering, commerce, and liberal arts. (C) 2017 Elsevier Inc. All rights reserved.
Users of heterogeneous computing systems face two problems: first, in understanding the trade-off relationships between the observable characteristics of their applications, such as latency and quality of the result, ...
详细信息
Users of heterogeneous computing systems face two problems: first, in understanding the trade-off relationships between the observable characteristics of their applications, such as latency and quality of the result, and second, how to exploit knowledge of these characteristics to allocate work to distributed computing platforms efficiently. A domain specific approach addresses both of these problems. By considering a subset of operations or functions, models of the observable characteristics or domain metrics may be formulated in advance, and populated at run-time for task instances. These metric models can then be used to express the allocation of work as a constrained integer program. These claims are illustrated using the domain of derivatives pricing in computational finance, with the domain metrics of workload latency and pricing accuracy. For a large, varied workload of 128 Black-Scholes and Heston model-based option pricing tasks, running upon a diverse array of 16 Multicore CPUs, GPUs and FPGAs platforms, predictions made by models of both the makespan and accuracy are generally within 10 percent of the run-time performance. When these models are used as inputs to machine learning and MILP-based workload allocation approaches, a latency improvement of up to 24 and 270 times over the heuristic approach is seen.
暂无评论