This course provides a detailed understanding of object-oriented information and data modeling, and how to use models to represent, analyze, and act on knowledge. This course gives a deeper insight into the foundations of modeling, and emphasizes the use of modern software engineering practices, such as patterns, to represent and process information for common modeling problems.