| Let A(n; d; w) denote the maximum possible number of codewords in an (n; d; w) constant-weight binary code. We improve upon the best known upper bounds on A(n; d; w) in numerous instances for n 6 24 and d 6 12, which is the parameter range of existing tables. Most improvements occur for d = 8; 10, where we reduce the upper bounds in more than half of the unresolved cases. We also extend the existing tables up to n 6 28 and d 6 14. To obtain these results, we develop new techniques and introduce new classes of codes. We derive a number of general bounds on A(n; d; w) by means of mapping constantweight codes into Euclidean space. This approach produces, among other results, a bound on A(n; d; w) that is tighter than the Johnson bound. A similar improvement over the best known bounds for doubly-constant-weight codes, studied by Johnson and Levenshtein, is obtained in the same way. Furthermore, we introduce the concept of doubly-boundedweight codes, which may be thought of as a generalization of the doubly-constant-weight codes. Subsequently, a class of Euclidean-space codes, called zonal codes, is introduced, and a bound on the size of such codes is established. This is used to derive bounds for doubly-bounded-weight codes, which are in turn used to derive bounds on A(n; d; w). We also develop a universal method to establish constraints that augment the Delsarte inequalities for constant-weight codes, used in the linear programming bound. In addition, we present a detailed survey of known upper bounds for constant-weight codes, and sharpen these bounds in several cases. All these bounds, along with all known dependencies among them, are then combined in a coherent framework that is amenable to analysis by computer. This improves the bounds on A(n; d; w) even further for a large number of instances of n, d, and w. Keywords| Constant-weight codes, Delsarte inequalities, doubly-bounded-weight codes, doubly-constant-weight codes, linear programming, spherical codes, zonal codes. I. Introduction A N (n; d; w) constant-weight binary code is a set of binary vectors of length n, such that each vector contains w ones and n w zeros, and any two vectors di er in at least d positions. Given the three parameters: length n, weight w, and distance d, what is the largest possible size A(n; d; w) of an (n; d; w) constant-weight binary code? This question has been studied for almost four decades, and remains one of the most basic questions in coding theory. Although the general answer is not known, various upper and lower bounds on A(n; d; w) have been developed.