We obtain improved semidefinite programming based approximation algorithms for all the natural maximum bisection problems of graphs. Among the problems considered are: MAX n/2-BISECTION - partition the vertices of the graph into two sets of equal size such that the total weight of edges connecting vertices from different sides is maximized; MAX n/2-VERTEX-COVER - find a set containing half of the vertices such that the total weight of edges touching this set is maximized; MAX n/2-DENSE-SUBGRAPH - find a set containing half of the vertices such that the total weight of edges connecting two vertices from this set is maximized; and MAX n/2-UNCUT-partition the vertices into two sets of equal size such that the total weight of edges that do not cross the cut is maximized. We also consider the directed versions of these problems, such as MAX n/2-DIRECTED-BISECTION and MAX n/2-DIRECTED-UNCUT. These results can be used to obtain improved approximation algorithms for the unbalanced versions of the partition problems mentioned above, where we want to partition the graph into two sets of size k and n - k, where k is not necessarily n/2. Our results improve, extend and unify results of Frieze and Jerrum, Feige and Langberg, Ye, and others. All these results may be viewed as extensions of the MAX CUT algorithm of Goemans and Williamson, and the MAX 2-SAT and MAX DI-CUT algorithms of Feige and Goemans.