The first part of this paper describes requirements of courseware for teaching a computer programming language. Besides typical requirements for a CBT material such as interactivity and availability of hypertext facilities, additional needs must be satisfied. For example, courseware in question must be able to interact with tools such as compilers and specialized editors. The second part of our paper deals with the implementation issues of a hypothetical courseware on an IBM PC compatible machine. We examine the feasibility of using existing authoring systems and then describe the implementation of the core program using Asymetrix ToolBook and of the other components using the development tools for the Microsoft Windows 3.0 programming environment. We show that the selected environment can be used to create a powerful learning system which provides a variety of hypertext facilities such as user modifiable links, margin notes, and highlighting. In addition, this system includes a specialized programming editor and a database of examples that are essential for learning a programming language.