Introduction to program schemas with applications to program slicing. Abstract; A program schema defines a class of programs, all of which have identical statement structure, but whose functions and predicates may differ. A schema thus defines an entire class of programs according to how its symbols are interpreted. A slice of a schema is obtained from a schema by deleting some of its statements. We show that the static slicing problem defined using programs can be expressed as a corresponding problem defined using the semantics of schemas. In particular, Weiser's static slicing algorithm, which uses only the data and control dependence relations given by a program, is essentially defined on schemas. We show that Weiser's algorithm does not always give minimal acceptable slices, and discuss conditions under which we have proved that it does compute a minimal slice.