The world around us becomes immersed in technology, which is ultimately driven by programming and governed by its laws. We believe that high-level knowledge of means for programming ‒ past, present, and most importantly, future ‒ is of crucial interest to many.
This course is designed to teach almost anyone about the essence of programming, about the diverse types of existing programming paradigms, about how programming has evolved over the years, and, significantly, about what it will entail in the future.
In the main part of the course, we will present some visual, diagrammatic programming languages, and some of the more recent playful and intuitive approaches to programming. We hope to help people interested in technology, as well as computer science students, to better understand the various approaches to programming, which are becoming increasingly important in our lives. This course is meant to “Liberate Programming” – to provide more people with the understanding of what programming is and how it works.s
Introduction to programming, the development of programming langauges, reactive systems and the definition of programming.
Visual programming languages and visual formalisms. The challenges of visual languages, and overview of possible languages.
Introduction to the executable programming language of Statecharts. Concepts of hierarchy and orthogonality.
Advanced statecharts and the semantics of statecharts. Can be skipped by less technical students.
Programming with stories. The paradigm of behavioral programming. The executable language of live sequence charts (LSCs).
Playful programming and programming by demonstration. Controlled natural language and interfaces to programming, show & tell, drag & drop.
Advanced concepts in LSCs. Choice, forbidden scenarios and more. Can be skipped by less technical students.
Survey of fun programming languages and learning robots. Discussion on the future of programming, and summary.
None, introduction to CS a plus.