ACM Transactions on Computing Education

Subscribe to ACM Transactions on Computing Education feed
Updated: 51 min 38 sec ago

Teaching Introductory Programming: A Quantitative Evaluation of Different Approaches

Sun, 12/28/2014 - 19:00
Theodora Koulouri, Stanislao Lauria, Robert D. Macredie

Teaching programming to beginners is a complex task. In this article, the effects of three factors—choice of programming language, problem-solving training, and the use of formative assessment—on learning to program were investigated. The study adopted an iterative methodological approach carried out across 4 consecutive years. To evaluate the effects of each factor (implemented as a single change in each iteration) on students’ learning performance, the study used quantitative, objective metrics. The findings revealed that using a syntactically simple language (Python) instead of a more complex one (Java) facilitated students’ learning of programming concepts. Moreover, teaching problem solving before programming yielded significant improvements in student performance.

Smartphones, Studio-Based Learning, and Scaffolding: Helping Novices Learn to Program

Mon, 12/22/2014 - 19:00
Susan Reardon, Brendan Tangney

This article describes how smartphones, studio-based learning, and extensive scaffolding were used in combination in the teaching of a freshman Introduction to Programming course. To reduce cognitive overload, a phased approach was followed in introducing programming concepts and development environments, beginning with the visual programming environment Scratch and culminating with Java development for Android smartphones. Studio-based learning, a pedagogical approach long established in the fields of architecture and design education, was used as the basis for a collaborative social constructivist—and constructionist—approach to learning. Smartphones offered students the potential to develop applications for a context that is both immediate and clearly relevant to the ways in which they utilize and interact with technology.

Children Programming Games: A Strategy for Measuring Computational Learning

Mon, 12/22/2014 - 19:00
Linda Werner, Jill Denner, Shannon Campe

This article reports the results of a study of the relationship of computer game programming to computational learning (CL). The results contribute to the growing body of knowledge about how to define and measure CL among children by proposing a new concept, Game Computational Sophistication (GCS). We analyzed 231 games programmed by 325 11 and 12 year olds with a range of prior computer experience who attended a voluntary technology class during or after school. Findings suggest that students’ games exhibited a range of GCS: programs composed of sequences of simple programming constructs; programs composed of programming constructs, some of which are used to implement higher-order patterns; and programs composed of game mechanics built from combinations of patterns “glued” together with simple programming constructs.

A Qualitative Study of Students' Computational Thinking Skills in a Data-Driven Computing Class

Thu, 12/11/2014 - 19:00
Timothy T. Yuen, Kay A. Robbins

Critical thinking, problem solving, the use of tools, and the ability to consume and analyze information are important skills for the 21st century workforce. This article presents a qualitative case study that follows five undergraduate biology majors in a computer science course (CS0). This CS0 course teaches programming within a data-driven context and is part of a university-wide initiative to improve students' quantitative scholarship. In this course, students learn computing concepts and computational thinking by writing programs in MATLAB that compute with data, by performing meaningful analyses, and by writing about the results. The goal of the study reported here is to better understand the thought processes students use in such a data-driven approach.

Using UML Modeling to Facilitate Three-Tier Architecture Projects in Software Engineering Courses

Sun, 10/26/2014 - 20:00
Sandeep Mitra

This article presents the use of a model-centric approach to facilitate software development projects conforming to the three-tier architecture in undergraduate software engineering courses. Many instructors intend that such projects create software applications for use by real-world customers. While it is important that the first version of these applications satisfy the customer by providing the functionality the customer expects and perform reliably and efficiently, it is equally important to be able to accommodate the customer's change requests over the period of the product's lifetime. The challenges in achieving these goals include the lack of real-world software development experience among the student developers and the fact that postdeployment change requests will almost certainly have to be handled by students who are not among the original developers.

Integrating Testing into Software Engineering Courses Supported by a Collaborative Learning Environment

Sun, 10/26/2014 - 20:00
Peter J. Clarke, Debra Davis, Tariq M. King, Jairo Pava, Edward L. Jones

As software becomes more ubiquitous and complex, the cost of software bugs continues to grow at a staggering rate. To remedy this situation, there needs to be major improvement in the knowledge and application of software validation techniques. Although there are several software validation techniques, software testing continues to be one of the most widely used in industry. The high demand for software engineers in the next decade has resulted in more software engineering (SE) courses being offered in academic institutions. However, due to the number of topics to be covered in SE courses, little or no attention is given to software testing, resulting in students entering industry with little or no testing experience.

Scenario-Based Programming, Usability-Oriented Perception

Sun, 10/26/2014 - 20:00
Giora Alexandron, Michal Armoni, Michal Gordon, David Harel

In this article, we discuss the possible connection between the programming language and the paradigm behind it, and programmers’ tendency to adopt an external or internal perspective of the system they develop. Based on a qualitative analysis, we found that when working with the visual, interobject language of live sequence charts (LSC), programmers tend to adopt an external and usability-oriented view of the system, whereas when working with an intraobject language, they tend to adopt an internal and implementation-oriented viewpoint. This is explained by first discussing the possible effect of the programming paradigm on programmers’ perception and then offering a more comprehensive explanation.