This collaborative project creates a multithreaded programming (MTP) course targeting general-purpose multi-core processors for the senior-level and graduate-level students in computer science and computer engineering. In order to overcome the difficulty of teaching and learning multi-core programming, problem-based learning (PBL) is used in this course to ease students' transition from the single-threaded programming model to MTP. PBL-oriented course materials are developed, including real-life multi-core programming problems, mini-lectures, lesson plans, lab manuals, reference materials, etc. The course is taught at the collaborating institutions in two consecutive semesters without and with PBL, and the effectiveness of PBL is evaluated through analyzing data collected from a variety of sources, including pre-tests and post-tests, in depth interviews, and general evaluation forms. The project outcomes are disseminated through websites, email lists, CDs, publication, and presentations at professional conferences.