1 Welcome to CIS3750
CONTENT
- About CIS3750
- How To Use What You Learn
- How Is CIS3750 Taught?
- How the Semester Flows
- What Skills Will You Build in CIS3750?
- Lessons & Advice From Last Year
- What Might Your Final Project Look Like?
- The Wil Wheaton Law
- A Final Thought
About CIS3750
Welcome to CIS3750 – Systems Analysis & Design in Applications.
CIS3750 is a required third-year course for students in Computer Science in the School of Computer Science at the University of Guelph. Students from other programs may also take the course and often bring valuable experiences from co-op placements, internships, previous employment, or other academic backgrounds.
For some of you, this may be your first formal exposure to software design. Others may already have experience working with software teams, requirements, or development processes. Whatever your background, this course is designed to help you build a strong foundation in software analysis and design.
Over the semester, you will learn a broad set of methods and tools that support the development of good software. These methods will help you better understand problems, communicate ideas, work with clients, and design thoughtful software solutions.
Most importantly, you should expect that nearly everything we do in this course will connect to a course deliverable in some way. Classroom activities, labs, discussions, and workshops are intentionally designed to help you make progress on assignments, prototypes, demonstrations, and your final report. Use this time wisely.
Throughout the semester, we will loosely follow the Waterfall Design Process as a way of organizing the topics and methods covered in the course. Don’t worry if this process is unfamiliar to you right now—we will explore it together and revisit it throughout the semester.
How To Use What You Learn
Throughout CIS3750, you will learn and practice many different software design methods. One of the most important things to remember, however, is that software design is not one-size-fits-all.
Outside of the classroom, the methods you use will depend on the size of the project, the people involved, available resources, timelines, and the organization you are working with. Different situations call for different approaches. For example:
- Small projects completed by one developer may not require a detailed requirements document. A small collection of user stories and notes may be enough to guide development.
- Medium-sized projects involving a small development team may benefit from use cases, timelines, prototypes, and a more formal set of requirements.
- Large projects involving multiple teams will often require extensive planning and documentation, including formal requirements, timelines, UML diagrams, testing plans, and detailed design documents.
The important takeaway is this: good software designers adapt their methods to the situation.
The methods used to design software also vary from one workplace to another. Every organization develops its own preferred processes, tools, and expectations over time. Some of these practices may look very different from what we cover in CIS3750, while others may feel very familiar.
The goal of CIS3750 is not to convince you that there is only one “right” way to design software. Instead, the goal is to introduce you to a broad set of tools and approaches so that you can build a strong foundation and make informed decisions in future projects.
To help you develop this foundation, CIS3750 is designed to feel a bit like a software design company. Throughout the semester, you will work with a team to solve a real challenge presented by a community partner (an organization or group working to address a community need).
Together, you will work with the community partner to better understand the challenge they are facing, identify user needs, and design a thoughtful software solution. Along the way, you will practice many of the tools and methods introduced in the course.
In reality, smaller or medium-sized software projects might not use every method we explore in this course. However, we will intentionally practice a broad range of approaches so that you leave CIS3750 with a flexible toolkit you can adapt to future projects.
Think of this course as an opportunity to experiment, build confidence, and expand your understanding of how good software gets designed.
How Is CIS3750 Taught?
CIS3750 may feel different from many courses you have taken before.
Rather than relying mainly on lectures, this course emphasizes active learning, teamwork, and real-world problem solving. You will still encounter lectures and demonstrations throughout the semester, but much of your learning will happen by discussing ideas, working with classmates, applying software design methods, and solving authentic challenges.
In short: CIS3750 is a course where you learn by doing.
To help explain what this means, it is useful to understand four important ideas that shape the course:
- Flipped learning
- Active and experiential learning
- Community-engaged learning
- Foundational skills
What is a Flipped Classroom?
CIS3750 uses a teaching approach known as a flipped classroom.
In a traditional classroom, much of the class time is spent listening to lectures and taking notes. In a flipped classroom, some of the learning happens before class, while class time is used for discussion, activities, teamwork, and applying ideas.
This means that before coming to class, you will often be expected to:
- complete assigned readings,
- review slides or videos,
- think about questions related to the material, or
- prepare for an activity.
Why do this?
Because class time is more valuable when we can spend it working with ideas rather than only hearing about them.
Coming prepared allows you to participate more confidently, ask better questions, and get more out of discussions and classroom activities.
That said, this does not mean every class will be entirely activity-based. There will still be times when we pause to explain concepts, review examples, or work through challenges together. When lectures do happen, they will often be connected directly to our classroom project so that the material feels relevant and practical.
Active & Experiential Learning
CIS3750 is designed to be an active and experiential learning classroom.
This means you will spend time practicing the methods and tools we discuss rather than simply reading about them.
Throughout the semester, you can expect activities such as:
- teamwork and collaborative problem solving,
- reflection and discussion,
- prototyping and design activities,
- peer feedback,
- case studies,
- hands-on software design exercises.
In many courses, assignments are completed and submitted only to be graded and rarely revisited. CIS3750 works a little differently.
Most classroom activities are intentionally designed to help you make progress on your assignments, labs, prototype, demonstrations, and final report. The work you complete during class often contributes directly to your project.
For this reason, participating in classroom activities matters. They are not “extra work” — they are part of the learning process.
Community-Engaged Learning
One of the things that makes CIS3750 unique is that you will work with a community partner.
A community partner is an organization or group working to address a real community need. In previous years, community partners have included organizations focused on food security, disability support, public health, sustainability, education, and social wellbeing.
Rather than designing fictional software for a made-up scenario, your team will work on a real challenge for a real organization.
Together with your community partner, you will:
- learn about the challenge they are facing,
- identify user and organizational needs,
- ask questions and gather information,
- design and prototype a potential software solution.
Your community partner is also a domain expert — someone with deep knowledge and lived experience related to the problem area. While we may know more about software design, they know far more about the challenge they are trying to solve.
This means one of the most important things you can do in CIS3750 is ask thoughtful questions and listen carefully.
Community partners are an important part of the course, and they give a significant amount of their time to support your learning. They visit class, answer questions, provide feedback, and work alongside students throughout the semester.
Because of this, it is important that we approach these relationships with professionalism, humility, and respect.
We are fortunate to work with organizations willing to share their time, expertise, and challenges with us. Our responsibility is to honour that contribution by being prepared, engaged, respectful, and open to feedback.
Foundational Skills
CIS3750 is not only about learning software design.
The course is also designed to help you build foundational skills — transferable skills that can be applied across careers, disciplines, and workplaces.
These include skills such as:
- teamwork,
- communication,
- leadership,
- problem solving,
- reflection,
- openness to feedback,
- recognizing personal and professional biases,
- communicating with people outside of Computer Science.
Many employers consistently rank these skills as being just as important as technical knowledge. In some cases, they are considered even more important.
Throughout the semester, you will have opportunities to practice both technical software design skills and foundational professional skills.
How the Semester Flows
At first glance, CIS3750 can feel like a lot. You will work with a team, meet with a community partner, learn new software design methods, complete assignments, participate in labs, and develop a solution to a real-world challenge.
That may sound overwhelming at first.
The good news is that the course is intentionally structured so that each part builds on the last. Rather than trying to learn everything at once, you will gradually move through the software design process over the semester.
Think of the course as unfolding in four phases.
Phase 1: Understanding the Problem
The semester begins by focusing on understanding the challenge. During this phase, you will:
- meet your team,
- learn about your community partner,
- ask questions,
- identify client and user needs,
- begin gathering requirements,
- and explore what makes software useful and meaningful.
At this stage, it is completely normal to feel uncertain.
Many students initially want to jump directly into designing solutions or building prototypes. However, one of the most important lessons in software design is this: Good solutions begin with understanding the problem.
Phase 2: Organizing Ideas & Requirements
Once you better understand the problem, the focus shifts toward organizing information and making decisions. During this phase, you will begin to:
- write and refine requirements,
- identify priorities,
- think about timelines,
- estimate effort,
- identify dependencies,
- and consider risks, ethics, accessibility, and unintended consequences.
This phase often feels messy, and that is okay. Real software design rarely follows a perfectly straight path.
You may revisit earlier ideas, change your assumptions, or rethink priorities based on new information from your community partner.
That is part of the process.
Phase 3: Designing & Prototyping Solutions
Once your team has a stronger understanding of the problem, you will begin designing possible solutions. This phase includes activities such as:
- brainstorming ideas,
- paper prototyping,
- use cases,
- wireframes,
- UML diagrams,
- and gathering feedback from users and community partners.
The goal is not perfection. Instead, the goal is to explore ideas, ask better questions, and improve your thinking through feedback and iteration.
You will likely discover that your first idea is not always your best idea, and that is normal.
Phase 4: Refinement & Communication
Toward the end of the semester, the focus shifts toward improving your work and communicating your recommendations. During this phase, teams often:
- refine prototypes,
- revisit assumptions,
- strengthen recommendations,
- prepare demonstrations,
- and reflect on lessons learned.
By this point, most students are surprised by how much they have learned; not only about software design, but also about teamwork, communication, uncertainty, and working with real clients.
What Skills Will You Build in CIS3750?
By the end of CIS3750, you will likely leave with far more than a better understanding of software design. You will also develop skills related to teamwork, communication, problem solving, planning, and working with real clients and community organizations. Some of these skills will feel familiar. Others may be completely new.
You are not expected to master everything immediately.
Instead, the goal is gradual growth over the semester.
Software Design Skills
Throughout the course, you will practice skills that help software teams better understand problems and design thoughtful solutions. These include learning how to:
- ask good questions,
- identify community partner and user needs,
- write and refine requirements,
- prioritize competing ideas,
- identify risks and dependencies,
- create use cases,
- develop prototypes,
- communicate software ideas clearly,
- and evaluate potential solutions.
Perhaps most importantly, you will practice learning how to think critically about problems before jumping straight into solutions.
Project & Team Skills
Software design rarely happens alone. Most software projects involve working with people who bring different experiences, ideas, and expertise. In CIS3750, you will practice skills such as:
- teamwork and collaboration,
- giving and receiving feedback,
- navigating disagreements respectfully,
- organizing tasks and responsibilities,
- managing time and uncertainty,
- communicating professionally,
- and working toward shared goals.
These skills are not always easy, but they matter.
In many cases, learning how to work effectively with others is just as important as learning technical skills.
Professional & Foundational Skills
CIS3750 is also designed to help you build foundational skills – skills that can be applied across careers, disciplines, and workplaces. These include:
- communication,
- leadership,
- reflection,
- problem solving,
- adaptability,
- openness to feedback, and
- recognizing personal biases.
Throughout the semester, you will work with community partners who bring deep knowledge of real-world challenges. This means you will regularly practice communicating with people who think differently, use different language, and bring expertise outside your own.
That experience is often one of the most valuable parts of the course.
Lessons & Advice From Last Year
One of the traditions of CIS3750 is that each class leaves advice for the students who come after them.
At the end of the semester, you will be asked to reflect on your experiences in the course and share lessons you wish someone had told you earlier. Think of this as an opportunity to mentor future students – helping them learn from both your successes and your mistakes.
As you move through the semester, it may be helpful to keep notes about things that surprise you, challenges you encounter, or lessons you wish you had learned sooner. For example:
- Was there a method or tool you expected to love, but found frustrating?
- Did a classroom activity end up being more useful than you expected?
- Was there a question you wish you had asked your community partner earlier?
- Did your team discover a strategy that helped everyone work more effectively?
Whatever the lesson, write it down. Your reflections may help future students navigate the course more successfully.
One memorable piece of advice from a former student reads:
“Always ask the clients. Dan is more than useless getting specs.”
While written with humour, this advice highlights an important lesson about software design.
Your community partner is the domain expert. They understand the challenge area far better than anyone else in the classroom — including the instructor. One of your responsibilities in CIS3750 is learning how to ask thoughtful questions, gather information, and clarify uncertainty.
The instructor can guide the process and help you think critically, but you are responsible for understanding the problem and gathering the information needed to design a thoughtful solution.
Based on feedback from previous cohorts, two pieces of advice consistently rise to the top:
- Start earlier than you think you need to.
- Ask your community partner lots of questions.
Other lessons shared by previous students include:
About the Design Process
- Start early and work consistently.
- Stay flexible – your ideas will evolve.
- Trust the process, even when things feel uncertain.
- Communicate regularly with your team.
- Divide work thoughtfully and fairly.
- Spend time planning before jumping into solutions.
About Working With a Community Partner
- Ask lots of questions.
- Listen carefully to feedback.
- Do background research before meetings.
- Set up communication tools early.
- Be personable and professional.
- Keep a positive attitude, especially when challenges arise.
What Might Your Final Project Look Like?
It is completely normal to feel uncertain about the final project – especially if this is your first time working with a client or community partner.
Many students enter CIS3750 wondering:
- What are we actually expected to build?
- How polished does the final project need to be?
- What does a successful project look like?
The good news is that you are not expected to figure this out on your own.
Every year, students in CIS3750 work with a community partner to better understand a challenge and design a thoughtful software solution. While no two projects are exactly the same, past student teams have successfully developed meaningful prototypes, reports, and recommendations that supported real organizations.
Most importantly: the students who completed these projects were at the same stage of learning that you are now.
The goal of CIS3750 is not perfection. The goal is to demonstrate thoughtful software design, meaningful engagement with the community partner, and growth in your understanding of the design process.
Below are examples of projects completed by previous CIS3750 students.
Example 1: Encouraging Healthy Behaviours with Community Living Cambridge
Students worked with Community Living Cambridge, a non-profit organization supporting individuals with developmental disabilities.
Their challenge involved designing a web and mobile application to encourage healthy behaviours, with a particular focus on medication adherence.
The following video highlights the work completed by a previous CIS3750 team and gives an example of what a final project presentation might look like.
Example 2: Air Quality Monitoring at the University of Guelph
In another offering of CIS3750, students worked with University of Guelph staff and faculty to design a tool that supported classroom air quality monitoring.
The goal was to help staff and students make informed decisions about indoor air quality, particularly during the COVID-19 pandemic.
This example demonstrates how software design can support health, wellbeing, and decision making in complex environments.
Example 3: Trick Or Eat for Food Security
Students also worked with Meal Exchange to support the Trick or Eat campaign through software design.
This project explored how technology could be used to strengthen food security initiatives and improve community engagement.
As you watch these examples, remember: you are not expected to build a perfect system in one semester.
Instead, your goal is to:
- understand the problem,
- work collaboratively with your team and community partner,
- apply software design methods thoughtfully,
- and create a meaningful prototype or recommendation.
You may be surprised by how much can be accomplished in a single semester when people work together toward a common goal.
The Wil Wheaton Law
Many of you will arrive in CIS3750 with different experiences.
Some of you may have worked in industry, completed co-op placements, contributed to software projects, or taken courses that introduced software design methods. You may already be familiar with techniques we will cover in this course — and in some cases, you may even have learned alternative approaches.
That diversity of experience is a strength.
One of the benefits of CIS3750 is that we can learn from one another. Students often bring valuable examples, practical insights, and different perspectives to class discussions.
At the same time, our classroom includes students with very different backgrounds and levels of experience. Some students may be encountering software design concepts for the first time.
Because of this, we need to create a learning environment where everyone has the opportunity to build a shared foundation before exploring more advanced or alternative approaches.
This does not mean that your previous experience is unimportant. Quite the opposite — your experiences can enrich classroom discussions and help others learn. However, course deliverables must demonstrate mastery of the methods and concepts covered in CIS3750 before alternative approaches can be substituted.
If you have ideas for different tools, methods, or ways of approaching the course project, please discuss them with the instructor first. In many cases, there may be flexibility — but it is important that any changes still support the learning goals of the course.
Working With Community Partners
Because our community partners have demanding full-time jobs and many competing responsibilities, there may be times when responses are slower than we would like.
This is normal.
Working with real organizations means working within real-world constraints. Patience, flexibility, and professionalism are important parts of the process.
At times, we may need to make reasonable assumptions to keep moving forward, pause while waiting for feedback, or adapt timelines based on the needs of the project. Occasionally, the instructor may also need to make decisions to help keep the course moving.
This can sometimes feel frustrating — and that is okay.
Learning to navigate uncertainty, shifting priorities, incomplete information, and changing timelines is part of real-world software design.
Respecting the Learning Environment
You may occasionally disagree with how a method is taught, feel frustrated by a process, or wish the project were structured differently.
That is completely normal.
You are encouraged to ask questions, share concerns, and discuss ideas. In fact, thoughtful disagreement and constructive feedback are important parts of learning.
At the same time, frustration or disagreement should not interfere with another student’s opportunity to learn.
If concerns arise, please talk with the instructor. Most challenges can be addressed through conversation, clarification, and problem solving together.
Above all else, CIS3750 works best when we approach the classroom with curiosity, patience, professionalism, and respect for one another.
Or, as actor and writer Wil Wheaton famously put it:
“Don’t be a dick.”
Simple advice — but surprisingly effective.
If we follow that principle, support one another, and approach challenges with good intentions, we will likely have a successful semester together.
And yes — taking the I Am A Gryphon pledge probably helps too.
A Final Thought
Students often enter CIS3750 expecting to learn how to design software. And you will. But many students leave realizing they also learned:
how to collaborate, communicate, adapt, ask better questions, and solve meaningful problems with other people.
Those are skills that will continue to matter long after the semester ends.