  We review the recent progress in computational approaches to protein design
which builds on advances in statistical-mechanical protein folding theory. In
particular, we evaluate the degeneracy of the protein code (i.e. how many
sequences fold into a given conformation) and outline a simple condition for
''designability`` in a protein model. From this point of view we discuss
several popular protein models that were used for sequence design by several
authors. We evaluate the strengths and weaknesses of popular approaches based
on stochastic optimization in sequence space and discuss possible ways to
improve them to bring them closer to experiment. We also discuss how sequence
design affects folding and point out to some features of proteins that can be
deigned ''in'' or designed ''out''}
