A declarative laboratory approach for discrete structures, logic, and computability

19 Overview Many students find it hard to grasp and retai n the ideas presented in courses covering discret e structures, logic, and computability. These subjects provide a foundation for required upper division courses in computer science . Therefore a major effort must be made to improve the learnin g environment for students studying these ideas a t the lower division level . Many of us succeeded academically in spite o f the way we were taught . But how many people hav e not succeeded because of the way material was presented to them? Since people learn in different ways, it makes sense to present students with a va riety of learning experiences . We have created a laboratory component for a year long sophomore course in discrete structures , logic, and computability for students majoring i n computer science or computer engineering . The labs consist of experiments in declarative programming environments . The experiments are designed to reinforce the learning of material o n a daily basis, just like the regular homework assignments . In other words, the lab experiment s are short in duration and relevant to the material covered by each lecture . Short programming labs that correspond t o each lecture should be useful learning tools fo r many traditional courses . The instant feedbac k that students get from wrong assumptions can give them incentive to try something new to experiment and see what happens . The lab component can also encourage the use of laboratory partners, interaction of students, team presenta -