1 Welcome to CIS3750
CONTENT
- 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 typical that students in this course come from other degrees and have experiences that include 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.
Further, you should expect everything we do in this class to contribute in some way to the course deliverables. Almost every classroom activity will include time to develop your assignments, lab demos, and final report. Use your time wisely.
We will loosely follow the Waterfall Design Process to understand the methods presented in this course. 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 requiring a single developer, it may not be necessary to write a requirements document; you may choose 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 write 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 used by any company will have evolved and developed over time to suit the needs of that company.
CIS3750 has been set up so that it mimics a software design company. The methods you will learn have been carefully selected because they represent a broad set of tools that any good software developer should know. We will use these tools to develop a solution to a challenge 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 will 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. It is 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 we get as much out of our classroom activities and guarantee our discussions are as robust and rich as possible, you must 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. Some or all of our class time will be lecture-based. Even in these cases, however, efforts will be made to present examples structured around our classroom project.
During most class meetings and labs, 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 develop foundational skills. Foundational skills are not discipline-specific but have been ranked by industry as skills they want their new employees to have – even above 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 about our community partner’s project or 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.
Our classroom will include students from several different disciplines. While most students will come from Computer Science or Software Engineering, we may have students from 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. They 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 your specific version of CIS3750 for up to 4 months before you ever walk 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. If they provide food insecurity or poverty-related services, you can bet they know more about them 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 that work to improve our communities.
- In most cases, our community partners have limited computer science or software design knowledge. More specifically, they don’t speak the same jargon that we do.
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. Our community partners must be shown the respect and dignity 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 what 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.
Asking the client about the project is useful 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 professor. The usefulness of the professor might be debatable but the responsibility for gathering and writing specifications falls to the student. This is one of the key learning outcomes and deliverables of the course. While the instructor will guide you, you must work with the client to understand the system they need you to design.
In particular, you will be asked to offer advice or lessons about the design process, and working with a community partner. 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 you found it lacking. Or you were expecting very little from a method but were surprised by the outcomes. Or maybe at some point in the semester, you realize it would have made sense to ask the community partner a specific question. Whatever it is, record it so that we can share what we’ve learned about the process or work with a community partner with future cohorts.
Based on previous course cohorts, the two most important pieces of advice include 1) start early, and 2) ask the community partner a lot 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 the final project, as they have never worked with a community partner. 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 the industry already, you have likely learned some of the methods we will study. You may have learned them at a deeper level than what this course will offer – or perhaps in a slightly different way. You may also have learned about other methods we won’t present in this course or methods 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. We must provide everyone an opportunity to learn the basics before introducing them to other methods. This doesn’t mean we can’t share our experiences, 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 have other ideas on the implementation of 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 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.