The analysis and design of engineering and industrial systems has come to rely heavily on the use of optimization techniques. The theory developed over the last 40 years, coupled with an increasing number of powerful computational procedures, has made it possible to routinely solve problems arising in such diverse fields as aircraft design, material flow, curve fitting, capital expansion, and oil refining just to name a few. Mathematical programming plays a central role in each of these areas and can be considered the primary tool for systems optimization. Limits have been placed on the types of problems that can be solved, though, by the difficulty of handling functions that are not everywhere differentiable. To deal with real applications, it is often necessary to be able to optimize functions that while continuous are not differentiable in the classical sense. As the title of the book indicates, our chief concern is with (i) nondifferentiable mathematical programs, and (ii) two-level optimization problems. In the first half of the book, we study basic theory for general smooth and nonsmooth functions of many variables. After providing some background, we extend traditional (differentiable) nonlinear programming to the nondifferentiable case. The term used for the resultant problem is nondifferentiable mathematical programming. The major focus is on the derivation of optimality conditions for general nondifferentiable nonlinear programs. We introduce the concept of the generalized gradient and derive Kuhn-Tucker-type optimality conditions for the corresponding formulations.