This thesis investigates several problems related to classical and dynamic coloring of graphs, and enumeration of graph attributes. In the first part of the thesis, I present new efficient methods to compute the chromatic and flow polynomials of specific families of graphs. The chromatic and flow polynomials count the number of ways to color and assign flow to the graph, and encode information relevant to various physical applications. The second part of the thesis focuses on zero forcing - a dynamic graph coloring process whereby at each discrete time step, a colored vertex with a single uncolored neighbor forces that neighbor to become colored. Zero forcing has applications in linear algebra, quantum control, and power network monitoring. A connected forcing set is a connected set of initially colored vertices which forces the entire graph to become colored; the connected forcing number is the cardinality of the smallest connected forcing set. I present a variety of structural results about connected forcing, such as the effects of vertex and edge operations on the connected forcing number, the relations between the connected forcing number and other graph parameters, and the computational complexity of connected forcing. I also give efficient algorithms for computing the connected forcing numbers of different families of graphs, and characterize the graphs with extremal connected forcing numbers. Finally, I investigate several enumeration problems associated with zero forcing, such as the exponential growth of certain families of forcing sets, relations of families of forcing sets to matroids and greedoids, and polynomials which count the number of distinct forcing sets of a given size.