Fundamentals of computer programming