Foundations of Programming: Fundamentals