We propose a novel adaptive technique for detecting moving shadows and distinguishing them from moving objects in video sequences. Most methods for detecting shadows work in a static setting with significant human input. To remove these limitations, we propose a more general semi-supervised learning technique to tackle the problem. First, we exploit characteristic differences in color and edges in the video frames to come up with a set of features useful for classification. Second, we use a learning technique that employs Support Vector Machines and the Co-training algorithm, that relies on a small set of human-labeled data. We observe a surprising phenomenon that Co-training can counter the effects of changing underlying probability distributions in the feature space. From the standpoint of detecting shadows, once deployed, the proposed method can dynamically adapt to varying conditions without any manual intervention, and performs better classification than previous methods on static and dynamic environments alike. The strengths of the proposed technique are the small quantity of human labeled data required, and the ability to adapt automatically to changing scene conditions.