This lecture introduces the basics of functional programming in Scala, covering elements of programming, evaluation strategies, conditionals, and value definitions. It explores the example of computing square roots with Newton's method, emphasizing lexical scope and blocks in Scala. The lecture also delves into the evaluation strategy of Scala, including call-by-name and call-by-value, and discusses termination, nested functions, and scoping rules. Practical exercises are provided to reinforce the concepts discussed.