Smart products that can connect to the Internet to exchange data are becoming ubiquitous. Mechanical engineers play an increasing role in innovating and designing smart products and manufacturing systems that incorporate the Internet of Things (IoT) technologies. However, the current mechanical engineering curriculum has not kept pace. For the last three years, we have been designing, implementing and revising a new IoT course for mechanical engineering students. In this paper, we present the latest revisions of the new course based on the experience gained and the assessment data collected in the previous offerings. Also, we present the smart products designed by student teams. The course contains active learning and project-based learning components to provide interactive, hands-on experience in and out of class. A smart flowerpot device was integrated into the lectures as an active learning platform. At the end of the semester, student teams work on a project to design and build smart products with IoT capabilities. To help students manage their project development processes effectively, we introduced software engineering concepts and the agile method, which are often used in software development companies. The paper concludes with assessment details from the recent offering of the new course. This project was funded by a grant from the NSF-IUSE program.