Fundamental Concepts and Formal Semantics of Programming