[Edu-sig] Progamming advice

David MacQuigg macquigg at ece.arizona.edu
Wed Apr 8 04:12:54 CEST 2009


At 09:35 AM 4/7/2009 -0400, Gary Pajer wrote:

>I am but a poor physicist and self-taught (out of necessity) programmer, aside from one course in FORTRAN in 1973.  Until this discussion I was not at all familiar with the terms  TDD,  unittest, design pattern, class model, state model, interaction model.  And thanks for the pointers to Fowler, and Dive Into Python.  I really do feel like I'm looking at a pile of lumber, nails, hammers, and saws, and being expected to build a house. My apps are getting complex, and seat-of-the-pants isn't working so well anymore.

Sounds like we have similar backgrounds.  You are exactly the type of non-programmer professional that I have in mind for the "CS2" class I have been thinking about.  http://ece.arizona.edu/~edatools/index_classes.htm  CS majors have a sequence of classes to learn all about CS, with a lot of emphasis on tools and techniques used by professional programmers.  Non-programmers get only one freshman-level class in C or Java, and miss a lot of the really good stuff that could be distilled from the three courses taught to CS majors, stuff like OOP, that is helpful to an individual writing his own programs. 

I really believe we can do this in one semester without making it seem rushed or overwhelming.  One good design will teach the concept of design patterns.  Most of the others are not that useful anyway.  Many of the tools only improve productivity if you use them all the time, and get in the way if you have to stop and review the manual because you were working on something else for six months.

Send me some examples of early versions of your programs, and I'll help make them into a sequence that will serve as good examples for students.  See the sequence OhNo.py for what I have in mind.  This example is a bit artificial, but perhaps some of your real-world programs could be the basis of something much better.

-- Dave



More information about the Edu-sig mailing list