A central task of coding theory is the design of schemes to reliably transmit data though space, via communication systems, or through time, via storage systems. Our goal is to identify and exploit structural properties common to a wide variety of coding problems, classical and modern, using the framework of partially ordered sets. We represent adversarial error models as combinatorial channels, form combinatorial channels from posets, identify a structural property of posets that leads to families of channels with the same codes, and bound the size of codes by optimizing over a family of equivalent channels. A large number of previously studied coding problems that fit into this framework. This leads to a new upper bound on the size of s-deletion correcting codes. We use a linear programming framework to obtain spherepacking upper bounds when there is little underlying symmetry in the coding problem. Finally, we introduce and investigate a strong notion of poset homomorphism: locally bijective cover preserving maps. We look for maps of this type to and from the subsequence partial order on q-ary strings.ii Our goal is to identify and exploit structural properties common to a wide variety of coding problems, classical and modern, using the framework of partially ordered sets.In Chapter 2, we introduce the main ideas. We use the notion of a combinatorial channel to represent an adversarial or worst-case error model. We define partially ordered sets (posets), poset homomorphisms, and the other fundamental concepts. We describe a simple method for forming combinatorial channels from posets and identify a structural property of posets that leads to families of channels with the same codes. This leads to ones of our core techniques: bounding the size of codes by optimizing over a family of equivalent channels. In the second half of the chapter, we give examples of previously studied coding problems that fit into this framework. This chapter is based primarily on [1] and also contains some material from [2].In Chapter 3, we apply the methods described in Chapter 2 to the subsequence partial order on q-ary strings. This leads to a new upper bound on the size of s-deletion correcting codes, for fixed s and input length going to infinity. The new bounds improves on the previous best bound whenever the number of deletions is greater than the alphabet size. At the end of this chapter, we look at the partial order on integer compositions. This has many features in common with the subsequence partial order, but many enumerative problems are more tractable. The channels related to the composition partial order also have emerging applications, particularly in DNA storage systems. This chapter is based primarily on [3] and Section 3.8 is based on [1].Chapter 4 covers the linear programming framework for sphere-packing upper bounds. The main contributions are methods for bounding the values 1 of these linear programs when they involve too many variables and constraints to evaluate or even analyze exactly. These methods a...