Learn functional programming, design patterns, loop invariants, and more in part 2 of this introductory programming course.
Carlo A. Furia is a senior researcher and lecturer in the Department of Computer Science of ETH Zurich. In his research he develops models, techniques, methods, and tools to support the analysis, rigorous development, and verification of software and systems. He has taught various courses on software engineering, programming languages, and verification at ETH Zurich. He has a PhD in Computer Science from the Politecnico di Milano.
More info here.