Advanced Programming


Here is the main course material for Advanced Programming a course I teach at Amsterdam University College. This is a second year Bachelor course for students that have essentially followed only one other computer science course (Programming Your World). The aim of the Advanced Programming course is to explain the concepst of meta-programming and Rascal is used as programming language. The course therefore also forms a gentle (and slow-paced) introduction to Rascal. The sheets for the lectures:
  1. Overview and Organization of the Course Advanced programming [33 sheets].
  2. Overview of Rascal [106 sheets]: gives a high-level overview of the goals of Rascal and the language itself.
  3. Visualization [101 sheets]: an overview of visualization/information visualization/software visualization. Also introduces the Figure library. Visualization is presented this early in the course in order to be able to do all kinds of visulizations during the following lectures.
  4. Lists [49 sheets]: lists with their operators and functions, including list matching. Also discusses testing and test driven development.
  5. Sets: [49 sheets] sets with their operators and functions, including set matching. Discusses various examples like the send + more = money puzzle, Google circles and the stable marriage algorithm.
  6. Relations [82 sheets] Relations with their operators and functions. Discusses examples like analyzing the AUC course catalog, analyzing the TOP 2000 Song List, analyzing the call and component structure of programs, and visualizing relations.
  7. GrammarsAndParsing [83 sheets]: introduces the concepts of formal languages, derivations, ambiguities and parsing.
  8. Language Processors: [71 sheets] explains how to define a complete language (concrete syntax, abstract syntaxt, type checking,and more) and how to embed a defined language in Eclipse.
  9. Software Engineering [62 sheets]: a bird eye's view on various concepts in software engineering.
  10. Ideas for the final project [14 sheets].
Other useful links:
  1. Rascal Web Home
  2. Rascal Tutor
  3. Rascal at GitHub
Back to Paul Klint's Home Page.