Data Communication and Computer Networking is a traditional undergraduate CS course. Classic teaching focuses on communication protocol and algorithm analysis, plus socket programming, and often deploys simulator to reinforce theoretical concepts. However, in our CS department with only undergraduate students, this approach appears to be hard to meet students' expectation to handle real world networking problems. With the goal to stimulate the enthusiasm of our students and tie closely theory and practice, the course is redesigned. In this paper, we present our experience in redesign the course, describe the course structure, assignments and outcomes. Key Words