The document outlines key considerations for developing effective tutorial software: it should provide extensive interactivity, thorough user control, appropriate pedagogy with logical sequencing of lessons/examples/exercises, adequate feedback capabilities, appropriate graphics that support topics, and record keeping of student progress. While drill software reinforces concepts, tutorial software allows self-paced learning but may contradict constructivism by delivering direct instruction instead of hands-on learning. Developing high-quality tutorial software is challenging due to difficulties in programming, inclusion of suitable graphics, and determining what/how to teach and sequencing of lessons.