The focus of this dissertation is on the fundamental capacity bounds of wireless ad hoc networks. We establish upper and lower bounds on the capacity to shed light on what is theoretically possible and what is currently achievable. In the first part of the dissertation, we introduce and describe a method to find an upper bound on the capacity of wireless networks with arbitrary topology, size and traffic demands. The upper bound not only provides a yardstick against which the throughput of an existing wireless ad hoc network scheme can be gauged, it also provides insight into how to design better routing and medium access control protocols for wireless networks. Using the upper bound, we examine the behavior of networks of different size, under different channel conditions, and with different traffic patterns. Numeric results indicate that, when the channel conditions are known precisely, shadow and multipath fading increase capacity; and that the capacity increases with network size when full traffic patterns are considered but decreases when directional traffic patterns are considered. In the second part, we obtain the performance of an optimistic protocol based on CSMA/CA and compare it against the upper bound. There is a significant gap between the two results, especially when considering large networks operating in the high SNR region. In the third part, we describe a new time-division scheduling scheme derived from the upper bound. In addition, we make an improvement to the schedules that increases the capacity significantly, even for small to medium size networks. Our schedules perform better than the protocol based on CSMA/CA, for medium to high SNR regions. Moreover, they also perform well against the upper bound when there is a directional traffic pattern, but not as well when there is a full traffic pattern. Finally, we examine the effects of time-varying fading and mobility on the schedules. We conclude that our schedules perform well in an environment where the channel changes slowly relative to the schedule update rate