UNDERSTANDING THE PRINCIPLES OF COMPUTER PROGRAMMING