Albany Programming Course Supplement

Preface

 "PERSONS attempting to find a motive in this narra- tive will be prosecuted; persons attempting to find a moral in it will be banished; persons attempting to find a plot in it will be shot."

-- Mark Twain


 

This book is experimental.

Supplemental statement of curriculum goals

Our first intention is to provide additional support for certain expected learning goals in our lower division computer science major curriculum.  The goals shall be expressed as demonstrable skills for our students.

  1. Complete programs: The student shall write a working Java application that functions and is structured according to a written description appropriate for the programming assignment and course background, learning goals, and the student's preparation.
  2. Incremental development and testing: The student shall demonstrate or submit a record showing that the programming assignment was completed with a sequence of working Java application versions. A relatively small additional functionality is added or debugged at each version. A strategy of using completed functionality to develop, test and debug added functionality is displayed. In some assignments, the strategy shall include experimentation with algorithm or design alternatives, sometimes including erroneous situations.
  3. Tracing: The student shall make written accounts for the operation of programs in terms of appropriate diagrams and/or explanations that record, in execution order, the changes or results of code operation in terms of previous states.
    Clear distinctions shall be made between what is intended and what program code does.
  4. Precision of key programming concepts: Students shall demonstrate understanding of certain problematic concepts by (1) answering questions and (2) writing code in accordance with them.  Specifically: variable, object, value, type, class, declaration, instantiation, reference type, primitive type, function call, return and return value, etc..
  5. Solving complex problems: Use and understanding of course topics: programming language features, data structures, data modeling, software design and development processes, etc; appropriate for the course or assignment, shall be demonstrated in  appropriately complex contexts, in addition to isolated contexts in which the topic is introduced and may be assessed.  Students shall combine the use of topic material with previously taught material and with the solution of the detailed problems intrinsic to programming and software design
  6. Command line, file and directory literacy: Fluency and conceptual understanding of an appropriate repertoire of practical skills shall be demonstrated in that they efficiently support (and not hinder) the development and demonstration of all the practical learning goals.

Pedagogical approaches

Worked examples of

  • Specifications and corresponding completed programs.
  • Problem analysis and solution processes.
  • Questions and answers interleaved with instructional presentation.
Practice assignments following worked examples.

Questions for homework or discussions interleaved with the presentation.

The phenomenon of implicit or tacit described by Reber, etc is addressed with the presentation of structure directly followed by application practice.

Observational learning is supported with review notes for problem solving activity demonstrated or participated in during classes.

Precise, consistent and scientifically informed usage of terminology.  Precise use of diagrammatic conventions.  Diagrams should be combined with careful verbal descriptions and presentations and exercises for developing appropriate visualization skills of students whose thinking habits are less visually inclined.     

The sequence of instruction and assignments must be in accordance with the intellectual structure of the subject, specifically in the form of priority dependencies on particular concepts and dependencies on particular levels of fluency in deploying those concepts.  For example, while it is well-recognized that objects are characterized by behavior together with state, the ability to recognize, analyze, code uses of and design of the state variables, i.e., instance variables is prior to method design because an object with behavior alone is little more than a glorified subroutine.  Similarly, successful method design and implementation requires fluency with local variables including method parameters because of their necessity for coding of non-trivial behavior.

The concepts that location of information is data separate from the information itself, and that information can be analyzed by means of its location are utilized in our "Fast Chinese Food Ordering and Billing System" problem.  That problem utilizes the location concept prior to and independently of arrays. Two programming strategies are [currently] included in that problem: One is independent of the control structure of method calling and return.  Instead, it utilizes boolean variables to simulate components of process state.

Cognitive load theoretical considerations: Development of solutions from direct analysis in favor of application of formulas. Division of more complex analysis and solutions into small, meaningful steps.  Avoidance of certain "destination feedback" [ The paradox of the guided user: assistance can be counter-effective" by Christof van Nimwegen, 31 maart 2008 published by SIKS, the Dutch (http://igitur-archive.library.uu.nl/dissertations/2008-0401-200600/index.html) ]which relieves "germane cognitive load" but reduces learning. (Sweller, Van Merrienboer and Pans)  Monitoring (with in class quizzes, possibly encouraging discussions) to distinguish cognitive load requirements of  "intrinsic", "germane" and "extraneous" elements so that overload is avoided.

Encouragement to consciously predict the consequences of multiple alternatives, as a alternative to learning from experience. (Cleeremans and Jimenez)

Assessment from easily observable results. (Temple Grandin among others, including educational assessment literature.).

Recognition of increasing formalization accompanying conceptual complexity in contemporary programming practice.

Students should be taught to develop the thinking modes that are effective for the subject rather than the subject be reformulated into less natural presentations.  However, multimodal views should be used in the teaching.  Redundancy due to different presentation modes should not be avoided. The proposition that a subject itself should be reformulated (and expressed less effectively for its practitioners) to accommodate different learning or thinking modes of students  is explicitly rejected[Fall 10 retreat speaker?]. 

Note that reformulating a subject itself is very different from the use of diverse creatively imaginative presentations, motivations and exercises designed and verified to train the diverse minds of beginners into the modes most effective for the skillful.

 





There has been error in communication with booki server. Not sure right now where is the problem.

You should refresh this page.