In this course, formal methods that model the software development process will be studied. Fundamental and practical methodologies and theories, including set theory and the foundations of software engineering will be emphasized. Applications to formal specifications, object-oriented programming and data modeling will be examined. Topics include set theory, relations and functions, induction and recursion, symbolic logic, complex models, and application case studies. (S)