What started as a collection of puzzles and toy problems, has now grown into a full fledged discipline of mathematical thought. Combinatorial Design theory is a relatively young branch of pure mathematics with several applications to engineering, statistical and computer science related problems. The fundamental question that we try to answer here is: How to arrange elements of a finite set into subsets so as to satisfy certain appropriate "balance properties". I shall introduce some elementary concepts in the theory including incidence structures, block designs, Steiner systems and resolvability. No background in the subject will be assumed.