Programming from first principles

  • Source
    [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.
  • [Show abstract] [Hide abstract]
    ABSTRACT: This work is concerned with the problem of tracing the equilibrium path in large displacement frictionless contact problems. Conditions for the detection of critical points along the equilibrium path are also given. By writing the problem as a system of non-linear B-differentiable functions, the non-differentiability due to the presence of the unilateral contact constraints is overcome. The path-following algorithm is given as a predictor-corrector method, where the corrector part is performed using Newton's method for B-differentiable functions. A new type of displacement constraints are introduced where the constraining displacement node may change during the corrector iterations. Furthermore it is shown that, in addition to the usual bifurcation and limit points, bifurcation is possible or the equilibrium path may have reached an end point even if the stiffness matrix is non-singular.
    Computational Mechanics 01/1992; 10(3):231-246. · 2.43 Impact Factor
  • Source
    [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.