In this paper we describe a singly exponential algorithm for computing the
first Betti number of a given semi-algebraic set. Singly exponential algorithms
for computing the zero-th Betti number, and the Euler-Poincar\'e
characteristic, were known before. No singly exponential algorithm was known
for computing any of the individual Betti numbers other than the zero-th one.
We also give algorithms for obtaining semi-algebraic descriptions of the
semi-algebraically connected components of any given real algebraic or
semi-algebraic set in single-exponential time improving on previous results