This study aimed to investigate an effectiveness of unidirectional and reciprocal teaching strategies on programming learning supported by web-based learning system (VPen); particularly, how differently effective these two teaching strategies would work. In this study novice programmers were exposed to three different conditions: 1) applying no strategies, 2) applying unidirectional teaching strategies, and 3) applying reciprocal teaching strategies during learning. The results demonstrated that most students had positive perceptions toward VPen and the strategies. In the aspect of cognitive level of programming concept and program writing, students who used unidirectional teaching strategy outperformed students who did not use any strategy. The reason is that unidirectional teaching strategy facilitated students not only to write program codes but also to explain the structure and logic of codes to peers. On the other hand, students who used reciprocal teaching strategies outperformed students who used unidirectional teaching strategy on level of cognition of program concept and program writing. The reason is because the reciprocal teaching strategies, besides facilitating students to write program codes and to explain about them to peers, enabled students to interact with peers through questioning and clarifying each other's codes. This study suggests applying reciprocal teaching strategies to enable students' interaction, which facilitates learning, particularly of novice programmers. That is, students without prior knowledge and skills may obtain assistance from peers when they experience learning difficulties while the instructor is unavailable.