This document discusses innovative practices in teaching discrete structures/mathematics and data structures to undergraduate computer science students. It describes course structures at various universities and suggests focusing discrete mathematics on fundamental concepts like logic, proofs, and counting before more advanced topics. For data structures, it recommends teaching implementation to build understanding but also focusing on usage. Projects, multimedia, and games are presented as motivating teaching techniques. Historical sources are proposed to provide context for abstract concepts.