FUNDAMENTALS OF PROGRAMMING AND PROBLEM SOLVING