Although generalization and discrimination are commonly used together in machine learning, little has been understood about how these two methods are intrinsically related. This paper describes the idea of complementary discrimination, which exploits semantically the syntactic duality between the two approaches: discriminating a concept is equivalent to generalizing the complement of the concept, and vice versa. This relation brings together naturally generalization and discrimination so that learning programs may utilize freely the advantages of both approaches, such as learning by analogy and learning from mistakes. We will give a detailed description of the complementary discrimination learning (CDL) algorithm and extend the previous results by considering the effect of noise and analyzing the complexity of the algorithm. CDL’s performance on both perfect and noisy data and its ability to manage the tradeoff between simplicity and accuracy of concepts have provided some evidence that complementary discrimination is a useful and intrinsic relation between generalization and discrimination.