Title: A Formal Language for Design Patterns Authors names: Amnon H. Eden, Joseph (Yossi) Gil, Amiram Yehudai Contact name: Amnon Eden email address: eden@math.tau.ac.il Postal address: Amnon Eden, The Department of Computer Science, School of Mathematics, Tel Aviv University, P.O.Box 39040, Tel Aviv 69978, Israel. Personal address: Amnon Eden, P.O.Box 53387, Tel Aviv 61533, Israel. Phone number: (+972 3) 6470907 Fax number: (+972 3) 6484570 The abstract of this article follows: This article sets forth a rigorous approach to the concept of a 'design pattern language'. We present a method of using a programming language to manipulate constructs of ordinary OOP language (such as classes and relations). We show that the specification of many design patterns can phrased as algorithms in this metaprogramming environment. The advantage is in delivering a precise method of defining design patterns. In addition, we present a 'patterns wizard', a tool that automates the application of patterns by metaprogramming techniques without hiding the source code text from the programmer. We conclude with three case studies that demonstrate how the application of design patterns can be automated using metaprogramming techniques. Keywords: Design patterns, metaprogramming, the programmer's apprentice.