Article

Programming from first principles

0 Followers
 · 
55 Views
  • Source
    • "3. Software Development using Objects-First Approach To implement an engineering approach to software development, we propose an Objects-First Approach to Procedural Paradigm. Our model is loosely based on the work of Richard Bornat [5] "
    [Show abstract] [Hide abstract]
    ABSTRACT: Software development (SD) refers to design and development of software applications. Most educational institutions teach introductory modules in SD using a procedural paradigm and an imperative language. Modules are often delivered in the first semester of the first year of a degree or diploma programme. Whereas, the procedural approach to SD may be considered suitable for teaching programming-in-the-small, it is not entirely appropriate for teaching the principles of programming: there are numerous inherent issues on the approach. This paper discusses the traditional method to teaching SD and suggests an objects-first approach where students adopt a top-down method of learning to develop software. Our model is imperative in nature but introduces functions and modules as basic building blocks for producing software. Thus, students' first programs are written as sequences, selections and iterations of given functions and it is in the later stages of the course, when they write their own modules after they learn the basic constructs of the language. Our method places an emphasis on SD as an engineering activity. This paper also discusses the issues concerning the choice of first programming languages and outlines a complete scheme for teaching a first course in SD.
  • Source
    • "Programming teachers, being programmers and therefore formalists, are particularly prone to the 'deductive fallacy', the notion that there is a rational way in which knowledge can be laid out, through which students should be led step-by-step. One of us even wrote a book [8] which attempted to teach programming via formal reasoning. Expert programmers can justify their programs, he argued, so let's teach novices to do the same! "
    [Show abstract] [Hide abstract]
    ABSTRACT: Learning to program is notoriously dicult. A substantial minority of students fails in every introductory programming course in every UK university. Despite heroic academic eort, the proportion has increased rather than decreased over the years. Despite a great deal of research into teaching methods and student responses, we have no idea of the cause. It has long been suspected that some people have a natural aptitude for programming, but until now there has been no psychological test which could detect it. Programming ability is not known to be correlated with age, with sex, or with educational attainment; nor has it been found to be correlated with any of the aptitudes measured in conventional 'intelligence' or 'problem-solving-ability' tests. We have found a test for programming aptitude, of which we give details. We can predict success or failure even before students have had any contact with any programming language with very high accuracy, and by testing with the same instrument after a few weeks of exposure, with extreme accuracy. We present experimental evidence to support our claim. We point out that programming teaching is useless for those who are bound to fail and pointless for those who are certain to succeed.
  • Source
    • "Unhappy students like those we encountered are probably found in all computing degrees. It is commonly reported that students find programming difficult (Jenkins and Davy, 2000) or that teaching it effectively is challenging (Fincher 1999) and various suggestions are given for making programming classes better (Bornat, 1987, Stein, 1998, Jenkins and Davy, 2000). The existence of unhappy computing students is a problem because in some countries there is a shortage of people with computing skills (von Hellens and Nielsen, 2001, Hill and Knowlton and Nexus Research, 2001). "
    [Show abstract] [Hide abstract]
    ABSTRACT: Yes Yes
Show more