Software Design & Human-Computer Interaction: From First Principles to Future Paradigms
This path begins with fundamental computational models and the critical analysis of software complexity, progressing to the historical evolution and future of programming paradigms. It culminates in a forward-looking perspective on notation, design, and the human-computer interface.

Curriculum sequence
6Procedures and Processes: The Substitution Model, Recursion & Iteration
This lecture establishes the foundational understanding of computation through procedures, processes, and the substitution model, essential for grasping how software executes.
Simple Made Easy
Building on computational fundamentals, this lecture introduces critical vocabulary to diagnose and address accidental complexity in software, a common pitfall in design.
Hammock Driven Development
With an understanding of complexity, this lecture provides a philosophical framework for deep, deliberate thought in software design, emphasizing problem decomposition over reactive development.
The Future of Programming
Leveraging insights into thoughtful design, this lecture offers a historical critique of programming paradigms, challenging assumptions about current tools and inspiring new approaches.
On Notation: Principles and Impact in Computing
Following a critique of existing paradigms, this lecture delves into the profound impact of notation on computing systems, highlighting its role in shaping expressiveness and design.
Critiquing CS Education and Reinventing Programming
Finally, this lecture synthesizes the path by critically examining current CS education and research, advocating for a return to fundamental principles and ambitious innovation in programming and HCI.





