  We consider the concatenation of a convolutional code (CC) with an optimized
cyclic redundancy check (CRC) code as a promising paradigm for good short
blocklength codes. The resulting CRC-aided convolutional code naturally permits
the use of serial list Viterbi decoding (SLVD) to achieve maximum-likelihood
decoding. The convolutional encoder of interest is of rate-$1/\omega$ and the
convolutional code is either zero-terminated (ZT) or tail-biting (TB). The
resulting CRC-aided convolutional code is called a CRC-ZTCC or a CRC-TBCC. To
design a good CRC-aided convolutional code, we propose the distance-spectrum
optimal (DSO) CRC polynomial. A DSO CRC search algorithm for the TBCC is
provided. Our analysis reveals that the complexity of SLVD is governed by the
expected list rank which converges to $1$ at high SNR. This allows a good
performance to be achieved with a small increase in complexity. In this paper,
we focus on transmitting $64$ information bits with a rate-$1/2$ convolutional
encoder. For a target error probability $10^{-4}$, simulations show that the
best CRC-ZTCC approaches the random-coding union (RCU) bound within $0.4$ dB.
Several CRC-TBCCs outperform the RCU bound at moderate SNR values.
