1 Welcome to CIS3750

CONTENT

A cartoon image of a grey Gryphon. It is holding a pointer stick and pointing to something to its right.

  • About CIS3750
  • How To Use What You Learn
  • How Is CIS370 Taught?
    • Flipped & Active Experiential Learning
    • Interdisciplinary & Community-Engaged
  • Lessons & Advice From Last Year
  • What might your final project look like?
  • The Wil Wheaton Law


About CIS3750

Welcome to CIS3750 – Systems Analysis & Design in Applications.

This course is a required third-year course for students studying Computer Science or Software Engineering in the School of Computer Science at the University of Guelph. However, it is quite typical that students in this course come from other degrees (such as Engineering, Mathematics & Statistics, or Business), and have had a varied set of experiences that includes on-the-job training, co-op semesters, or possibly internships. For some of you, this will be your first exposure to software design.

Whatever your background training and experience, you can expect this course to provide you with an introductory overview of many different methods and tools that can be used to help you design good software. For those of you interested in diving deeper into some of these topics and methods, you will get that opportunity in CIS3760 and other related courses.

Further, you should expect everything that we do in this class to contribute in some way to the course deliverables. Almost every classroom activity will provide you the opportunity to develop your assignments, lab demos, and final report. Use your time wisely.

To better understand the methods that are presented in this course, we will loosely follow the Waterfall Design Process. If you are unfamiliar with the Waterfall Design Process, follow the link to learn more.

Course Calendar Description


CIS3750 – An introduction to the issues and techniques encountered in the design and construction of software systems. The theory and models of software evolution. Topics include requirements and specifications, prototyping, design principles, object-oriented analysis and design, standards, integration, risk analysis, testing, and debugging.

The Academic Calendars are the source of information about the University of Guelph’s procedures, policies, and regulations which apply to undergraduate, graduate, and diploma programs. You can find more information here.

How To Use What You Learn

While we will learn about and practice many different methods in CIS3750, it is important to realize that outside of this classroom, you will likely pick and choose from the available methods depending on the software project you are designing.

  • For small-sized projects that require a single developer, it may not be necessary to develop a formal requirements document; you may opt instead to create a list of user stories and work from there.
  • For medium-sized projects that include a small team of developers, it might make sense to create a set of use cases that describe what the system will do.
  • For large-sized projects with multiple teams, it will probably make sense to have a formal requirements document, complete with Gantt charts, use cases, and UML diagrams.

The point is that software design is not a one size fits all activity, and the methods you use will vary based on the size and complexity of the project, and the amount of time you have to complete it.

The methods that you select to develop software will also depend on the company for which you work. Each software company will have its own set of protocols and standard practices – some that will be different than those we learn in the course, and some will be similar. Whatever the case, the methods that are used by any company will have evolved and developed over time to best suit the needs of that particular company.

CIS3750 has been set up so that it mimics a software design company. That is, the methods that you will learn have been carefully selected because they represent a broad set of tools that any good software developer should know. And we will use these tools to develop a solution to a challenge that is presented to us by a real client.

More specifically, you’ll spend most of your time applying the methods you learn while working on a project for a community partner. In particular, you’ll work with them to understand a unique community need, then develop and prototype a solution with them.

Although the community project wouldn’t be classified as a large-sized project, you will still be required to demonstrate proficiency for each of the methods we cover. Again, while it is unlikely that all of these methods would be used for a medium- or small-sized project, we are going to approach our community partner’s challenge with every method and tool we cover in the course.

How Is CIS3750 Taught?

CIS3750 is not your typical classroom. If it were described in only a few words, it would be called a flipped and active experiential learning-based interdisciplinary and community-engaged classroom. But what exactly does this mean?

Flipped & Active Experiential Learning

CIS3750 is taught using a style known as a flipped classroom. That is, instead of presenting material using the sage on the stage format (where the professor lectures at you), almost all of our classes will be activity and discussion based.

To ensure that we get as much as we can out of our classroom activities, and to guarantee that our discussions are as robust and rich as possible, it is your responsibility to review the necessary course materials before you arrive at class. This will also be your opportunity to clarify the concepts that you will have covered in your pre-class readings.

This does not mean that every class is going to be completely active. There will be times when some or all of our class time will be lecture-based. Even in these cases, however, efforts will be made to present examples that are structured around our classroom project.

During most class meetings and labs, however, you can expect CIS3750 to be a very active space – with elements of improvisation, team-based research, reflection, and more.

Finally, the classroom activities have been developed to help you achieve specific discipline-based learning outcomes of the course, but also to help you to develop foundational skills. Foundational skills are those skills that are not specific to a single discipline but have been ranked more and more often by industry as skills they want their new employees to have – even above the discipline-specific skills.

To support our learning journey, you might want to participate as a class in developing a set of class notes. Specifically, you can use this link to add notes and comments pertaining to our community partner’s project, or about topics covered in class that you can all access, edit, and share. Click here to access the document.

If you are ever unsure of the purpose behind an activity, make sure to ask.

Foundational skills

“Aptitude and knowledge acquired through personal experience such as schooling, jobs, classes, hobbies, sports etc. Basically, any talent developed and able to be used in future employment.”

Foundational skills include but are not limited to, teamwork, leadership, communication within and between groups, communication outside of a discipline, problem identification, problem-solving, openness, and recognition of biases.

Interdisciplinary & Community Engaged

CIS3750 is an interdisciplinary classroom.

At the most basic level, our classroom will include students from several different disciplines. While the majority of students will come from Computer Science or Software Engineering, it is possible that we will have students who are studying Mathematics & Statistics, Business, or Computer Engineering in the class.

However, we will also have a community partner in the classroom who will be our client and will provide a semester long challenge for us to solve. In the past our community partners have included the Guelph Wellington Food Round Table, The SEED Community Food Project, Transition Guelph, The Appleseed Collective, The Agricultural Research & Extension Trust of Malawi, Meal Exchange, and Community Living Cambridge.

What is common about our community partners?

  • In all cases, our community partners are actively involved in the development and delivery of your specific version of CIS3750 for up to 4 months prior to you ever walking through the classroom door.
  • In all cases, our community partner is prepared to continue working on the project beyond the confines of the CIS3750 classroom. This means that our community partner is in this for the long haul; and is willing to continue working with students who want to continue development after CIS3750 ends.
  • In all cases, the community partner is a domain expert for the types of services they provide. That is, if they are providing services related to food insecurity or poverty, you can bet they know more about food insecurity or poverty than we do. They are an incredible resource for us.
  • In all cases, the community partner is giving their time to contribute to your education even though they know that the project you are working on for them likely can’t be completed in a single semester. Often this means they are volunteering time to help you master the learning outcomes of the course – including the time it takes to 1) visit the class at least four times throughout the semester, 2) review documents you’ve developed, and 3) provide answers to questions that arise throughout the semester.
  • In most cases, our community partners are not-for-profit or charitable organizations who work to improve the lives of people in our communities. Many of them are working for or with emergency food providers.
  • In most cases, the community partners have limited computer science or software design knowledge. More specifically, they don’t speak the same lingo that we speak.

Our community partners are critical to the success of the course, and it is important to recognize how fortunate and privileged we are to have them. It is essential that we treat our community partners with the respect and dignity that they deserve.

We will explore more about community-engaged learning and working with community partners in Chapter 2.

Lessons & Advice From Last Year

At the end of the course, you will be asked to reflect on the entire semester and the things that you have learned in CIS3750, and you will be tasked with identifying lessons or advice for the next cohort of students.

“Always ask the clients. Dan is more than useless getting specs.”

This was a piece of advice that a student opted to provide in 2017. While it might read as a harsh assessment of the instructor, it’s worth considering.

First, asking the client is an incredibly useful piece of advice because they are the domain expert. No one in the class will know as much about their challenge as they will; not even the prof. Second, the usefulness of the instructor might be debatable but the responsibility for gathering and writing specifications falls to the student. In fact, this is one of the key learning outcomes and deliverables of the course. While the instructor is there to guide you, it is your responsibility to work with the client to understand the system they need you to design.

In particular, you will be asked to offer advice or lessons pertaining to the design process, and working with a community partner. Think of this as your way of mentoring future students; allowing them to learn from your mistakes and successes.

To facilitate this process, it may make sense to document any comments or thoughts you have as we work through the course content. Perhaps you were expecting a particular method to be extremely useful, but in practice, you found it lacking. Or perhaps you were expecting very little from a method but were surprised by the outcomes. Or maybe at some point in the semester, you realize that it would have made sense to ask the community partner a specific question. Whatever it is, write it down so that we can share what we’ve learned about the process or work with a community partner with future cohorts.

Based on previous offerings of the course, the two most important pieces of advice include 1) start early, and 2) ask the community partner lots of questions. Other lessons and pieces of advice that have been passed down by previous students in the course include:

  • The Process: start working early; have flexible design thinking; trust the process and the teaching team; be open to planning; delegate, divide, and conquer; foster and develop good team communication; and build a good team rubric.
  • Working with a community partner: ask lots of questions; take feedback & advice; do your research; set up and join Slack early; keep a positive attitude; and be personable.

Reflections From A Former CIS3750 Student

Joel Gascho was an undergraduate student in the fall 2017 offering of CIS3750. The following reflection is based on two blog posts [1, 2] he wrote about his experiences inside and outside of a community-engaged classroom.


In the fall of 2017, students of CIS3750 were tasked with solving a problem for Community Living Cambridge (CLC), a non-profit organization that works with individuals with developmental disabilities to live more independent lives. Our goal was to design an engaging web and mobile app to help them make positive health choices; particularly with a focus on medication adherence. For about a year now I’ve been involved in the development of the app, first in

CIS3750, then in CIS4900, and CIS4910. Initially, I saw the promise of this project, but the impact it could have has become more evident to me.

The practice of students designing and developing software with a community partner shows potential for solving overlooked problems faced by communities. Students are provided with the opportunity to learn methods of software development and gain practical experience working with an outside party, all while doing something good for the world. I find learning in this way to be gratifying, as the collaboration with the community could lead to software that could actually be used, instead of an assignment that gets graded and filed away, probably never to be looked at again.

My involvement with this project has given me a new perspective, showing me there are different

approaches one can take to develop software of this nature. While our app is not finished, seeing what just a few students can do has really impressed me. Not to say there aren’t drawbacks; students often lack experience and have limited time for development. Additionally, there are no established guidelines for students to undergo long-term collaborative development. With further exploration of this process, techniques to improve its efficiency and effectiveness could be discovered, possibly encouraging the incorporation of similar projects into more computer science programs.

Regardless, this project has opened my eyes to the opportunities for people with skills like mine to make a positive impact on the world.

What might your final project look like?

Many students are nervous about what the final project might look like, as they have never worked with a community partner before. To give you an idea of what your final project might look like, check out this video report. The students of this cohort of CIS3750 were tasked with developing tools to support healthy behaviours for Community Living Cambridge.

 

Another final video report is provided below for a different project. In this case, students were tasked to work with the University of Guelph faculty to develop a tool to support good air quality in classrooms on campus and share data so that staff and students could make better choices for their health, particularly in light of the ongoing COVID-19 pandemic.

And finally, here’s a short video that describes a project where students worked with Meal Exchange to develop a tool to support the Trick or Eat campaign.

The Wil Wheaton Law

Since some of you have worked in industry already, it is very likely that you have learned some of the methods that we will present. You may have learned them at a much deeper level than what this course will offer – or perhaps in a slightly different way. You may also have learned about other methods that we won’t present in this course, or have learned about methods that are unique to a particular employer.

All of this is great, as it means that we will have a diverse set of experiences in our classroom on which to draw as we set off over the next semester. However, it also can pose challenges that we should be aware of so that they don’t derail the class or the work we are trying to complete.

Our diverse experiences mean that not everyone in the class has had a chance to learn about some of the methods we will cover. It is important that we provide those students with the opportunity to learn the basics before introducing them to other methods. This doesn’t mean that we can’t share the knowledge we have, but course deliverables must demonstrate that each student has a mastery of the course topics before other methods will be considered.

If you are unsure of the methods you should use, or if you have other ideas on how to implement the course project, you must receive written approval from the instructor before using them.

Additionally, because our community partners have full-time and highly demanding jobs, there will be times when they won’t be able to respond to us as quickly as we’d like. We need to be flexible and open to these sorts of delays. In most situations, we simply need to be patient as we wait for their response, however, we may also – as a class – make certain assumptions to keep things moving, or (in rare situations), the instructor might make an executive decision.

Whatever the case, if you are unhappy that we are using a particular method, if you feel that the community partner isn’t doing enough, or if you have any other concerns – set up a meeting to discuss this with the instructor. At no time should you derail another student’s learning in the classroom, in the lab, or as part of a group meeting because of your potential dissatisfaction with anything related to the course.

This isn’t to say that things can’t and won’t be frustrating, and this isn’t to say that you aren’t allowed to have your own opinions or to feel strongly about something; they can be, they likely will be at some period during the semester, and you are. But you shouldn’t use this as justification for preventing others from learning the required course content.

Of course, most of the challenges we might face in class can easily be avoided by subscribing to the Wil Wheaton Law, and taking the I Am A Gryphon pledge.

Review Questions

License

Community-Engaged Systems Analysis & Software Design Copyright © 2024 by Daniel Gillis and Nicolas Durish. All Rights Reserved.

Share This Book