In this paper we describe the organization of a project course in model-based software engineering currently taught at Carnegie Mellon University. We mention several limitations encountered, in particular on the system design level, when we involved the students increasingly in iterative development. We motivate the need to include artifact modeling in the course to better support iterative development as well as the need for generalized modeling to provide a better integration of artifact models with models for project management, communication and documentation. We present a candidate development methodology that supports artifact modeling and illustrate a general information modeling environment that complements and extends artifact modeling to better support iterative team-based software engineering.