Notes on Programming Methodology