Object-Oriented Programming (OOP) has gained wide acceptance and is being taught at a relatively early level at some institutions. The use of Formal Methods (FM) at the introductory level is unusual, but its use has been demonstrated to have concrete benefits for students in the first computer science (CS) course. The objective of this project is to integrate OOP and FM into an early CS sequence, leading to a sophomore course in which OOP and FM are combined in an introduction to object-oriented design. This course becomes a capstone of what precedes it and a gateway to what follows. The plan to accomplish this goal is to build on Troeger's demonstrated success in teaching the first CS course using FM, and the success demonstrated here and elsewhere in using OOP in the second course. This will yield a blend of FM and OOP in the second course, traditionally called Data Structures. The blend will be at an elementary level, of course, but real. Then in the capstone/gateway course, object-oriented design is introduced as a continuation of these ideas, applied to larger and more realistic problems and with more of the OOP methodology brought in. The intended audience for this project is every school teaching computer science. This project is expected to have a major impact on how CS is taught. The department is planning to disseminate results through workshops, papers and presentations, and two textbooks for which it already has contracts.