This introductory programming course, taught by Professors Fischer and Schwerhoff, uses Java to introduce fundamental programming concepts. It also explores computational and programmatic thinking, covering topics like EBNF for understanding syntax trees and Hoare logic for program verification.

The course begins with basics such as data types, control flow, common data structures, and I/O operations before gradually moving on to more advanced topics like object-oriented programming (inheritance, abstraction, encapsulation, polymorphism), interfaces, Java collections, etc…

Having experience in programming with various languages, I must say this was the most well-structured, logical, and rigorous introduction to any language I’ve encountered. Professors Fischer and Schwerhoff explained key details, highlighted common pitfalls, and provided numerous examples, making the learning process thorough and engaging.

This course is excellent for beginners but also valuable for those with prior programming experience who want a deeper understanding. While accessible, it does go beyond the basics, covering concepts such as Hoare logic, interfaces, polymorphism, function overloading, variable shadowing, type casting, and generics. Overall, it provides a solid foundational understanding of programming and Java.

Lecture Notes

Other Stuff


2 items under this folder.