Basic principles of programming