Archive for February 16, 2011

7 Principles of Computational Thinking from Software Carpentry

Readers of this blog may recall that Greg Wilson has been developing a course he calls Software Carpentry, providing the computing knowledge that computational scientists and engineers will need.  He just concluded his course with a summary seven principles of computational thinking, based on Jon Udell’s seven principles of the Web. Yet another take, to contrast with the CS:Principles work.

Hello, and welcome to the final episode of Software Carpentry. We’re going to wrap up the course by looking at a few key ideas that underpin everything else we’ve done. We have left them to the end because like most big ideas, they don’t make sense until you have seen the examples that they are generalizations of.

Our seven principles are:

  1. It’s all just data.
  2. Data doesn’t mean anything on its own—it has to be interpreted.
  3. Programming is about creating and composing abstractions.
  4. Models are for computers, and views are for people.
  5. Paranoia makes us productive.
  6. Better algorithms are better than better hardware.
  7. The tool shapes the hand.

via Software Carpentry » Principles of Computational Thinking.

February 16, 2011 at 10:08 am 1 comment

Psychology of Programming: A Great Old Resource made New Again

Many thanks to Alan Blackwell who has resurrected a great old resource and made it available for the psychology of programming and computing education research communities! The book Psychology of Programming (1990) has been out of print for awhile. Alan sought out the chapter authors and secured their permission to post the whole thing on the Web, now available at  I just got an email a couple days ago asking for pointers to literature on how expert programmers read code — this is the kind of resource that I can now suggest for answers to that kind of question.

In Alan’s words:

> I’ve done this with permission from Jean-Michel, Thomas and
> David. Needless to say, this is only for educational and research
> use, since copyright remains with the publishers. I would welcome
> links to updated versions of individual chapters from the
> authors, if those were available.

Here’s the Table of Contents of what he’s made available — links to the PDF available at the site:

Course text

J.-M. Hoc, T.R.G. Green, R. Samurçay and D.J. Gilmore (Eds) (1990).

Psychology of Programming.

Published by the European Association of Cognitive Ergonomics and Academic Press.

Part 1 – Theoretical and Methodological Issues (introduction)

1.1 Programming, Programming Languages and Programming Methods – C. Pair (pp. 9-19)

1.2 The Nature of Programming – T.R.G. Green (pp. 23-44)

1.3 The Tasks of Programming – N. Pennington and B. Grabowski (pp. 45-62)

1.4 Human Cognition and Programming – T. Ormerod (pp. 63-82)

1.5 Methodological Issues in the Study of Programming – D.J. Gilmore (pp. 83-98)

Part 2 Language Design and Acquisition of Programming (introduction)

2.1 Expert Programmers and Programming Languages – M. Petre (pp. 103-115)

2.2 Programming Languages as Information Structures – T.R.G. Green (pp. 118-137)

2.3 Language Semantics, Mental Models and Analogy – J.-M. Hoc and A. Nguyen-Xuan (pp. 139-156)

2.4 Acquisition of Programming Knowledge and Skills – J. Rogalski and R. Samurçay (pp. 157-174)

2.5 Programming Languages in Education: The Search for an Easy Start – P. Mendelsohn, T.R.G. Green and P. Brna (pp. 175-200)

Part 3 Expert Programming Skills and Job Aids (introduction)

3.1 Expert Programming Knowledge: A Schema-based Approach – F. Détienne (pp. 205-222)

3.2 Expert Programming Knowledge: A Strategic Approach – D.J. Gilmore (pp. 223-234)

3.3 Expert Software Design Strategies – W. Visser and J.-M. Hoc (pp. 235-249)

Part 4 Broader Issues

4.1 The Psychology of Programming in the Large: Team and Organizational Behaviour – B. Curtis and D. Walz (pp. 253-270)

4.2 Research and Practice: Software Design Methods and Tools – B. Kitchenham and R. Carn. (pp 271-284)

via Computer Laboratory – Course material 2010–11: Usability of Programming Languages.

February 16, 2011 at 9:55 am 1 comment

Enter your email address to follow this blog and receive notifications of new posts by email.

Join 10,185 other followers


Recent Posts

Blog Stats

  • 2,039,513 hits
February 2011

CS Teaching Tips