The multicore architectures are increasingly important in system design. Understanding the multicore architecture and multicore programming techniques is essential in system education. Therefore it is necessary to amend traditional content of system education to help students learn and gain experience in software development for multicore devices. In this paper, we present our newly funded education program. In addition, we focus on multi-core technologies. Our focus is also on programming models and how to devise parallel programs, as this is a shared ground between embedded multi-core systems and high-performance parallel systems. Two types of lab modules are developed: multicore system software lab modules and application lab modules. Together the lab modules can give students clear understanding of the principles and practice of parallel programming on multicore systems. Also the parallel design patterns are applied to help students to architect the software in order to develop robust multicore applications. The lab modules of real world applications let students experience the benefits of parallel programming and the computation power of multicore systems. Finally, discussions with design patterns with our two lab modules are given.