Congestion control in wireline networks has been studied extensively since the seminal work by Mazumdar et al in 1998. It is well known that this global optimization problem can be implemented in a distributed manner. Stability and fairness are two main design objectives of congestion control mechanisms. Most literatures make the assumption that the number of flows is fixed in the network and each flow has infinite backlog for transfer in developing congestion control schemes. However, this assumption may not hold in reality. Thus, there is a need to study congestion control algorithm in the presence of dynamic flows. It is only until recently that short-lived flows have been taken into account. In this thesis, we study utility maximization problems for networks with dynamic flows. In particular, we consider the case where each class of flows arrives according to a Poisson process and has a length given by a certain distribution. The goal is to maximize the long-term expected system utility, which is a function of the number of flows and the rate (identical within a given class) allocated to each flow. Our investigation shows that, as long as the average work brought by the arrival processes is strictly within the network stability region, the fairness and stability issues are independent. While stability can be guaranteed by, for example, a FIFO policy, utility maximization becomes an unconstrained optimization. We also provide a queueing interpretation of this seemingly surprising result and show that not all utility functions make sense under dynamic flows. Finally, we use simulation results to show that our algorithm indeed maximizes the expected system utility.