Overview

Students come to Object-Oriented Software Engineering (OOSE) with diverse backgrounds. For some, OOSE is their first chance to work on a real software project. Others come to OOSE with previous experiences, such as internships or work in the software industry. Regardless of your background, OOSE aims to improve your skills as a software engineer while enjoying the process of developing a project with fellow students.

Self-regulated Learning

I want to make it clear that OOSE is not your typical course. I won't be "teaching" you how to build software systems. You should already have some knowledge in this area and use this class to expand on it independently. You will encounter challenges, especially technical ones, and it is expected that you will find ways to overcome them without relying on assistance from the teaching staff. You are encouraged to explore external resources and learn independently or with your peers to achieve this goal.

You can consider me as a manager or supervisor rather than your instructor!

This course is designed based on the idea of academic self-efficacy and promotes self-directed learning.

  • Self-directed learning is when you take the initiative and responsibility for your education. You choose, manage, and assess your learning activities. You can set goals and determine what is valuable to learn. The teacher provides support, guidance, and advice. Peers provide opportunities for collaboration.
  • Self-efficacy refers to the beliefs you have in your abilities to think and act in ways that are aligned with your learning goals.

I will assist you in setting clear and specific goals that are challenging yet achievable within your capabilities. You will collaborate with your peers to accomplish these goals. The instructional team will evaluate your progress by providing honest and explicit feedback, such as grades.

Self-regulated learning is not for everyone!

If you prefer a setting where you are taught (in a more traditional sense) to develop modern software applications, consider taking EN.601.280 Full-Stack JavaScript (disclosure: I also teach that course! Feel free to use its lecture notes as a supplementary resource for this class).

Time Commitment

Let's do the math! Your team should plan to work collectively like a full-time junior software developer engineer (SDE). Typically, a full-time SDE works 40 hours per week. In reality, it is often more than that, sometimes significantly more! If there are at least five people in your team, that means each person should plan to dedicate, on average, 8 hours per week to OOSE (excluding course meetings).

The Project

The main component of OOSE is a term-long software project of your choosing. By "you," I mean your team! Team formation and project ideation go hand-in-hand. Sometimes, students form teams and then collectively come up with a project idea. In other cases, several students team up around a project idea.

Please actively participate in the "team formation" and "project ideation" threads on the course discussion board.

The purpose of the course project is to provide you with the opportunity to experience software development and its practices. The end goal is not just the product itself; rather, the project serves as a vehicle to help you develop your technical and teamwork skills.