All computing devices we currently use are parallel machines. This includes the whole range from portable devices to supercomputers. Until recently, parallel computing at the undergraduate level was considered an advanced elective topic in most computer science and engineering departments. If this continues, undergraduate students will not be competitive in the market. If they decide to go to graduate studies, they will be late in acquiring parallel computing skills. In this paper we discuss the challenges and insights in designing an undergraduate parallel computing course in computer science department. These insights stem from our experience in offering this course for six years, once per year.