Interesting articles encountered during coding for IJCCI teaching programming languages
[Sheil, 1980] Sheil, B. A. (1980). Teaching procedural literacy (presentation abstract). Proceedings of the ACM 1980 Annual Conference (pp. 125–126). New York, NY, USA: Association for Computing Machinery. URL: https://doi.org/10.1145/800176.809944, doi:10.1145/800176.809944
10.1145/800176.809944 The naive way to teach a skill is to teach the surface characteristics of its expert performance. The cost of this naivete, however, is that one eventually runs afoul of both the genetic dependencies between sub-skills and the need to capture (and teach) the relationships between the various expert behaviors. Sooner or later, a transition to a more “deep structured” approach must be made.Programming instruction is currently making such a transition. Traditional methods of instruction in terms of surface characteristics of the programming task, such as specific computers and programming languages, are gradually yielding to less media dependent treatment of programming as a problem of structured design (Floyd, 1979). However, while these more abstract design issues are essential concerns of the professional systems engineer, the orientation of basic programming instruction around them is simply moving our focus from one aspect of expert performance to another. This would be tenable were our concern primarily the training of computer professionals but, while we have been developing our understanding of programming, the spread of computing has changed the motivation for programming instruction. What was once professional education has become an important component of literacy.
[Frye & Soloway, 1986] Frye, D., & Soloway, E. (1986). Interface design: a neglected issue in educational software. Proceedings of the SIGCHI/GI Conference on Human Factors in Computing Systems and Graphics Interface (pp. 93–97). New York, NY, USA: Association for Computing Machinery. URL: https://doi.org/10.1145/29933.30865, doi:10.1145/29933.30865
10.1145/29933.30865 The user interface is particularly important for educational software because 1) it must provide an entry to the content domain of the program rather than vice versa and 2) it must be sensitive to the general skill and/or developmental level of the user. In spite of these special characteristics, interface design for educational software has been given little attention. This study evaluates a representative interface from arithmetic software now used in the schools. It was found that the interface caused students a large number of difficulties. These difficulties were sufficient to interfere with the instructional effectiveness of the software. Designing interfaces that will benefit educational software will require careful study of the users of these programs along with an in-depth understanding of the domains being taught.
[Denning et al., 1988] Denning, P., Comer, D. E., Gries, D., Mulder, M. C., Tucker, A. B., Turner, A. J., & Young, P. R. (1988). Computing as a discipline: preliminary report of the acm task force on the core of computer science. Proceedings of the Nineteenth SIGCSE Technical Symposium on Computer Science Education (p. 41). New York, NY, USA: Association for Computing Machinery. URL: https://doi.org/10.1145/52964.52975, doi:10.1145/52964.52975
10.1145/52964.52975 It is ACM’s 40th year and an old debate continues. Is computer science a science? An engineering discipline? Or merely a technology, an inventor and purveyor of computing commodities? What is the intellectual substance of the discipline? Is it lasting, or will it fade within a generation? Do core curricula in computer science and engineering accurately reflect the field? How can theory and lab work be integrated in a computing curriculum?We project an image of a technology-oriented discipline whose fundamentals are in mathematics and engineering — for example, we represent algorithms as the most basic objects of concern and programming and hardware design as the primary activities. The view that “computer science equals programming” is especially strong in our curricula: the introductory course is programming, the technology is in our core courses, and the science is in our electives. This view blocks progress in reorganizing the curriculum and turns away the best students, who want a greater challenge. It denies a coherent approach to making experimental and theoretical computer science integral and harmonious parts of a curriculum.Those in the discipline know that computer science encompasses far more than programming. The emphasis on programming arises from our long-standing belief that programming languages are excellent vehicles for gaining access to the rest of the field — but this belief limits out ability to speak about the discipline in terms that reveal its full breadth and richness.The field has matured enough that it is now possible to describe its intellectual substance in a new and compelling way. In the spring of 1986, ACM President Adele Goldberg and ACM Education Board Chairman Robert Aiken appointed this task force with the enthusiastic cooperation of the IEEE Computer Society. At the same time, the Computer Society formed a task force on computing laboratories with the enthusiastic cooperation of the ACM.The charter of the task force has three components: Present a description of computer science that emphasizes fundamental questions and significant accomplishments.Propose a new teaching paradigm for computer science that conforms to traditional scientific standards and harmoniously integrates theory and experimentation.Give at least one detailed example of a three-
Surveys
[Ulloa, 1980] Ulloa, M. (1980 , July). Teaching and learning computer programming: a survey of student problems, teaching methods, and automated instructional tools. SIGCSE Bull., 12(2), 48–64. URL: https://doi.org/10.1145/989253.989263, doi:10.1145/989253.989263
10.1145/989253.989263 To improve introductory computer science courses and to update the teaching of computer programming, new teaching methods emphasizing structured programming and top-down design have been presented and a variety of automated instructional tools have been developed. The purpose of this paper is: (1) to survey a number of methods and tools used in the teaching of programming; (2) to present, with the aid of this survey, a number of areas where beginning programmers experience difficulties; (3) to present ways of improving some of the tools; and (4) to propose other possible aids.This paper is organized as follows. Section 1 introduces the topic and purpose of the paper. Section 2 reviews several teaching methods discussed in the literature. Section 3 surveys various student- oriented interactive and noninteractive tools. Section 4 discusses nonstudent- oriented aids and presents alternatives by discussing how to adapt similar aids to a student environment. Section 5 provides a summary of the paper and a conclusion. Pertinent problem areas and students’ viewpoints are presented in each section.