When teaching computer programming to novices, forget "objects early," "objects later," and "back to basics."
Computational thinking has been promoted in recent years as a skill that is as fundamental as being able to read, write, and do arithmetic. However, what computational thinking really means remains speculative. While wonders, discussions and debates will likely continue, this article provides some analysis aimed to further the understanding of the notion.… (More)
Novice programmers should be taught not only the value of faithfully representing objects but, even more important, multiple programming paradigms as well.
A software package implementing Schwarz-Christoffel Conformal transformation (or mapping) of doubly connected polygonal regions is fully described in this article from mathematical, numerical, and practical perspectives. The package solves the so-called accessory parameter problem associated with the mapping function as well as evaluates forward and inverse… (More)
Design plays a critical role in the software's quality and long-term success. Yet, software design, as a systematic process, is not sufficiently understood, and its practice in the real world is highly varied. As a result, teaching software design remains a challenge in terms of lacking widely recognized and accepted pedagogy and even learning materials.… (More)
Interface, as an object-oriented programming construct, has been one of the most difficult concepts for students to understand and apply properly. Textbooks often only address the shallow side of usefulness of interfaces, and some may even mislead as to when and how an interface should be used. This article argues that the interfaces can only be effectively… (More)
In this paper, we first present an assessment on students' software design abilities based on qualitative data from a design class. We will then provide, using the assessment as a backdrop, a discussion on the nature of software design, the challenges of teaching design, and ways to improve design education.