In this paper, a novel approach to web-based education that performs individualized instruction on the domain of programming languages is presented. This approach is fully implemented and evaluated in an educational application module, called fuzzy knowledge state definer (FuzKSD). In particular, FuzKSD performs user modeling by dynamically identifying and updating a student's knowledge level of all the concepts of the domain knowledge. The operation of FuzKSD is based on fuzzy cognitive maps (FCMs) that are used to represent the dependences among the domain concepts. FuzKSD uses fuzzy sets to represent a student's knowledge level as a subset of the domain knowledge. Thus, it combines fuzzy theory with the overlay model. Moreover, it employs a novel inference mechanism that dynamically updates user stereotypes using fuzzy sets. It should be noted that the overlay model and stereotypes constitute two widely used methods for user modeling. However, they have not been combined with fuzzy sets thus far in the literature. The gain from this novel combination is significant as a student level of knowledge is represented in a more realistic way by automatically modeling the learning or forgetting process of a student with respect to the FCMs and thus the system can provide individualized adaptive advice. The application of this approach is not limited to adaptive instruction. It can also be used in other systems with changeable user states, such as e-shops, where consumers' preferences change over time and affect one another. Therefore, the particular module constitutes a novel generic fuzzy tool, which offers dynamic adaptation to users' needs and preferences of adaptive systems.