This lecture introduces the Foundations of Software course, focusing on the mathematical study of program behaviors. Topics include parsing, domain-specific languages, parser combinators, and the basic idea of defining functions for language recognition. The course emphasizes operational techniques and type systems, providing a deep understanding of core language features and powerful tools for language design.