Object-Oriented Software Engineering (or as we like to call it, OOSE) is a course about developing software that others can understand, maintain, and grow. It comes in three parts:
Principles (Lectures): In lectures, we discuss the principles discovered by software engineers over decades of practice, for example, design patterns, refactoring techniques, and so forth. Each lecture is followed by an individual assignment.
Practice (Group Projects & Laboratory Sessions): You form groups of 5–6 students and work on a project of your choosing throughout the course. Laboratory Sessions are time in class for you to work on your project. A staff member advises your group, helping you along the way and reviewing your progress.
Technology (Online Videos): In lectures, we need tools with which to communicate the principles we want to discuss. In group projects, you need these tools to actually develop software. These are tools like programming languages, version control systems, and so forth, that are best learned at your own pace, so we cover them in online videos.
Some students come to OOSE when they’re new to programming—they’re fresh out a data-structures course. For these students, OOSE is their first opportunity to work on a big code base that needs to be maintained over a long period. They learn how to collaborate with other developers and become more confident of their skills.
Other students come to OOSE after having worked in industry for several years. For these students, OOSE is a way to learn the principles behind what they have picked up from experience. Also, OOSE is a playground for them to try new tools and contribute to open-source software.
Regardless of your level of experience, OOSE is a course for you to become a better software engineer and have fun developing a project with your colleagues.