For a calendar of technical society meetings in the Mid-Hudson Valley
go to and/or to MHVLUG's calendar at Hudson Valley STEM.

This page was last updated Mar 20, 2013.

Poughkeepsie Chapter of the Association For Computing Machinery aaa ccccccc mmmmm mmmmm a a cc cc mm mm mm mm aa aa cc c mm mm mm mm aaaaaaaaa cc mm mmm mm aa aa cc c mm m mm MEETING NOTICE aa aa cc cc mm mm aa aa cccccccc mm mm Program: Writing Zero Defect Programs Speaker: Luther Woodrum About the Topic A program: 1. Must always get the right answer. 2. Must never fail. 3. Must run fast enough to be usable. 4. Should run as fast as can be expected to run for the application. 5. Should be as simple as possible, but no simpler. 6. Should be as easy to understand as possible. 7. Should be easy to add or change function. This talk presents the various ways of writing programs over the past 60 years, such as via program generators, classes, functions, or macros. The talk discusses methods that have been used to write programs in commercial use that were error free from the first release. They ranged in size from hundreds of lines of code to tens of thousands of lines, and once, a million lines. Now there is a new way to specify logic that is parameterized by sets of predicates. Introducing Curt, a new tool. Curt is a combinatorial parametric logic string implication system. (Just so you don't waste time trying to figure out what Curt stands for, it stands for as little as possible, which is very curt indeed and CPLSIS is unpronouncable.) Curt helps you write the shortest source program that satisfies the above requirements, regardless of the programming language, because the output from Curt can be in any languge, including English. Curt enables you to express the logic for a finite state machine, where states are sets of predicates, and rules use logical expressions to control actions between state transitions. The logic defines the actions for transitions and the predicates for the next state. Curt enumerates all states of the finite state machine, and generates the logic (currently for C++ or Java examples) for the transitions from each state to a next state, and for the actions to execute. Typically the state space is a set of all subsets of a cartesian product of other sets. For example, if there are four predicates, there are 16 subsets of possible true or false instantiations. A state transition is a single branch instruction, sometimes indexed, as in a switch statement, A completeness check finds all state transitions that are not covered. A consistency check finds all rules that imply inconsistent actions. Curt has been in use since 2008. It has enabled writing zero defect logic for programs where the Curt source code is less than one line per program. About the Speaker I was 18 years old when my mother set up an interview for a job as a computer operator with an insurance company in Chicago. I had just finished a one year course in radio-tv repair and had built TV sets from components on breadboards. I knew combinatorial mathematics and was in my second year of calculus. During the interview the interviewer asked what the book was that I had with me. (It was Susanne Langer's "Introduction to Symbolic Logic"; I was 3/4ths of the way through it.) He then asked if he could borrow it and walked away saying, "They'll never believe this." He came back and said, "How would you like to be an actuarial programmer?". First I had to take a 2 hour exam. I finished it in 45 minutes. I got the job. The training for being a programmer on the IBM 705 consisted of our being given the machine instruction manual and being told that it was like a calculator, but much more elaborate since it had registers. And, once we knew how to program the machine, could we please do time series analysis. Four years later I had left the insurance company and was getting a tan in California. When the SE on the account found out that I had gone, he called me with the message that I could go to IBM Poughkeepsie for an interview. I already knew sorting, having by then written a program for what are now called pivot tables. I joined IBM in 1961 and worked on sorting, indexing, and storage allocation using radix partition trees (RPTs). Eventually this led to a component of MVS, called RPTS. One example of the power of RPTs: the QTIMER program took 56 hours to run. After I rewrote it using RPTs, it took just under one hour. I retired as a Senior Programmer in 1987. I am now working on ways to index DNA and to understand as much as possible about it, since this is a key to future medical knowledge. When: 7:30 pm, Monday, Mar 25, 2012 Where: Presentation Room (2d floor, Rm 2023) <-------- !!! Hancock Center, Marist College <-------- !!! Directions: Building 15 on the map at Parking: You can park on the east side of Route 9, across from the former Main Entrance, or at the black dot, Number 27, on the map at Cost: Free and open to the public Dinner: 6 pm, Palace Diner, 845.473.1576 Map and menu: All are welcome to join us for dinner. We thank Marist College for hosting the chapter's meetings. Refreshments are served after the meeting. For further information, email or call 845.522.1971. P - L - E - A - S - E P - O - S - T

Site Map. This page is available on the web at