ABSTRACT The role of algorithms in discrete mathematics continues to grow in importance. It can sometimes be difficult to appreciate the dynamic behavior of an algorithm, given only its static description. We believe a deeper level of understanding about these algorithms is formed by executing them, discovering their properties and modifying them to solve related problems. This paper describes several laboratory activities intended for a discrete mathematics course aimed at mathematics and computer science majors.