Theoretical Introduction to Programming