This paper summarizes our experiences and findings in teaching the concepts of parallel computing in two undergraduate programming courses and an undergraduate hardware design course. The first is a junior-senior level elective course Object-Oriented Programming using C++ and Java. The second is a sophomore-level required course on Advanced C Programming. The third course, Introduction to Digital System Design, is also a sophomore-level required course. We will describe how parallel concepts have been integrated in the courses, the assessments, and the results.