Learning to build and test virtual reality (VR) systems is difficult due to the many required knowledge (e.g. computer graphics, sound processing, simulation, interaction, etc.) and subsystems to worry about (e.g. various sensors, displays, computers, graphics board, etc.). Furthermore, virtual reality contents have to be optimized according to different goals such as its basic function, usability, and presence. Thus, learning and applying a structured approach to designing VR systems is very critical to a successful completion of a meaningful class project. In this paper, we report our experiences in using a development methodology and an authoring support tool called the CLEVR/P-VoT to teach virtual reality to engineering students of advanced levels. CLEVR's central concept is to refine and validate forms, functions and behaviors of the virtual objects and scenes incrementally and hierarchically. P-VoT helps students interactively try out and explore different virtual object/scene configurations and immediately see their impact with respect to system performance, interaction usability, realism, and presence. P-VoT, used in the first stage of the class, is designed at an abstraction level appropriate for even non-computer science major students to quickly learn and understand the need of a structured development approach. Having learned the merits of the structured approach firsthand, the students effectively put it to use in the second stage of the course for implementing a more sophisticated class project.