View Single Post
Old Sep 7th, 2005, 9:10 AM   #2
Infinite Recursion
Programming Guru
 
Infinite Recursion's Avatar
 
Join Date: Jul 2004
Location: United States
Posts: 3,467
Rep Power: 8 Infinite Recursion is on a distinguished road
Send a message via MSN to Infinite Recursion Send a message via Yahoo to Infinite Recursion
Hello Heather, welcome to the forums...

All: Sorry for the long post, no other way to really respond to it and keep the readability... Mods feel free to trim it.

1. What kind of programming do you do? (in terms of, what kind of algorithms do you write? what language do you code in? do you do more of algorithm design, or software design? what types of algorithms/software specifically have you coded/do you code?)

- Client / Server programming, database, cryptography, compression, parallel processing, distributed computing, artificial intelligence, data warehousing, decision support systems, robotics, navigation, educational enhancement, authentication, directory services.

2. How do you ensure that your program/algorithm is correct? (do you do any type of formal proof? test cases? how do you choose your test cases? how do you ensure that these test cases cover the cases that will ultimately come into play when your algorithm/program is used?)

- No formalities, in short... I think like the user. Enter in faulty data on purpose. Try to break the system by any and all means necessary.

3. To what degree do you ensure that your program/algorithm is correct? (is it correct according to specific inputs, or a range of inputs, or expected inputs, inputs according to program specifications, or all possible inputs?)

- Inputs of all possible ranges, usually exceeding the program specifications.

4. Please give an example (or more than one example!) where a program or algorithm you wrote was not fully correct. Did this cause any type of serious problem? How did you find out that it wasn't correct? How did you fix it?

- Writing an encryption algorithm that was a derivative of 3DES... when not correct, remote machines cannot interact with the master server, causing communication between labs to fail. Found out because transactions were piling up and errors were returned in the logs. Spent a few hours debugging and ended up adding one line of code to rotate the string two positions.

5. Please give some reasons why program correctness is very important in your field. (for example, if you program an artificial heart, the person might die if you have an error in your program!)

- If a programmer that is employed by an airline writes faulty programs for reservations, there will be a lot of irate customers to deal with, worse yet... if the autopilot fails, the plane has a potential to drop from the sky.

6. What advice do you offer to a student who is thinking about going into your field, as far as program correctness is concerned? How much error checking should he/she expect to do? Is program correctness a life/death, or in any other way a really big deal in your field of programming?

- In general, an incorrect program is a useless program. It either meets the specs or doesn't. 10% of your time will be writing code, 90% will be debugging.

7. How can someone in your field prevent program errors while he/she is still in the process of designing his/her algorithm? Or, while he/she is still in the process of coding up the program?

- There is no one way to safeguard against program errors. Make extensive use of error handlers and exit gracefully in the event of failure if you are unable to recover the process.

8. Do you do any collaboration in writing software or algorithms? If so, how do you prevent errors and ensure program correctness when working in a team?

- Typically, the algorithm is at my discretion, although it is used by a team. I provide the team with a basic list of functions associated with the algorithm and provide comments in the code. Often times, extensive documentation follows more complex applications.

9. Any other comments/case studies/stories you may have are greatly appreciated!

- When working for the government be prepared for politics. If your way may seem to be the right and most logical way to do something, chances are there are twenty reasons it can't be done that way and none of them have technical factors involved, just mere opinions and policy.
__________________
http://jasonpowers.net

"There are a thousand hacking at the branches of evil to one who is striking at the root."
Infinite Recursion is offline   Reply With Quote