Despite extensive changes in technology and methodology, anecdotal and empirical evidence (e.g., Davis et al., 1997) consistently suggests that communication and problem-solving skills are fundamental to the success of an IT professional. As two of the most valued skills in an IT graduate, they should be essential components of an effective education program, regardless of changes in student population or delivery mechanisms. While most educators would concur with this view, significantly more emphasis is generally placed on teaching the tools and techniques that students will require in their future careers, and a corresponding amount of energy is expended in attempting to identify what those tools and techniques might be. In contrast, successful problem solving is often seen either as an inherent capability that some students already possess or as a skill that some will magically acquire during the course of their studies. Data modeling as an activity, by which we mean the gathering and analysis of users’ information needs and their representation in an implementable design, is largely one of communication and problem solving and, consequently, provides an excellent opportunity for explicitly teaching these skills. Data modeling is generally considered to be one of the more difficult skills to teach (e.g., Hitchman, 1995; Pletch, 1989), particularly if the student has no previous understanding of physical data structures (de Carteret & Vidgen, 1995). The essential constructs, such as entities, attributes or objects, may be elegant in their powerful simplicity, but their combination into a useful design is a complex process of categorization in which there is “considerable room for choice and creativity in selecting the most useful classification” (Simsion, 1994 p.82). Data modeling requires not only the ability to communicate about and to solve a problem, but also to create possible solutions and then choose between them. Herein lies the difficulty. It is not enough to learn what the different constructs are, or even to study simple textbook examples of how to put them together. The student must really understand the problem, be able to create and recognize a number of possible ways in which the problem can be solved, and then exercise considerable critical skills in choosing between them. This chapter examines these issues and describes various ways in which final-year undergraduate students, taking a specialist module in data modeling, have been encouraged to develop, and have confidence in, their creative and critical ability to solve problems in a disciplined and systematic way.