Teaching Web Applications Development in a Fully Online Environment: Challenges, Approaches and Implementation