Main Menu

4 credits, graded. Pre-requisite CIS 313. CIS major or permission of instructor.
Jump to ...»Duckweb class schedule page. »Logistics.

Navigation: Select (click) summaries like this ...

... to see expanded details.

Overview

CIS 422 is a project-oriented course on software engineering. You will work as teams to construct software systems, including test suites, user guides, maintainance guides, etc. You will be expected to think about principles and issues in software engineering, to read and respond to papers and articles, and to participate in class discussions.

Software is constructed by people. Complex software systems are constructed by teams of people, often over extended periods. The capabilities and limitations of human software developers induce a web of issues in which technical issues (e.g., modular structure) and human issues (e.g., communication within and between teams) interact. Software engineering is the branch of computer science that addresses issues involving humans (and especially teams of people) as software developers.

Years of experience are required to develop real expertise in software engineering. The objective of this introductory course is to prepare you to learn more effectively from real-world experiences. Understanding the broad principles that pervade software engineering, you will be better prepared to learn from experience. Because these principles and issues are fundamental, they appear again and again as popular methods and tools evolve. Yesterday we had structured development, today we have object-oriented development and agile methods, tomorrow we can expect something else ... but the fundamental challenges of teamwork, complexity, and managing change have been with us from the beginning and will be with us for the foreseeable future.

Learning objectives

CIS 422 will introduce you to some of the fundamental issues and approaches in software engineering. It will not make you an expert. It will lay a foundation for continued learning and provide you some basics to get started as a productive member of a software development team.

After successfully completing CIS 422, you will should be able to:

  • Design and construct quality software systems within schedule and resource constraints.
  • Make design decisions that appropriately weigh many goals and constraints, including schedule and resources as well as usability, accessibility, maintainability, testability, efficiency, and internal and external risks.
  • Understand the interplay between product structure (software architecture) and team structure.
    • Assess the consequence of a dependency in code for communication among team members
    • Modularize software design to accommodate division of work among team members
  • Understand the interplay between product structure and team development processes
    • Assess the consequence of hiding or exposing a design decision on development schedule, coordination, and longer term evolution
    • Develop a build plan that supports parallel work and controls risk by providing frequent checks on progress
    • Assess and prioritize risks. Choose risk mitigation tactics appropriate to a particular project, including those arising from factors outside the control of the development team.
  • Work effectively as a team
    • Foster confidence and commitment among team members
    • Hold effective, time-efficient meetings
    • Maintain an appropriate level of awareness of teammates’ activities

While our main primary learning objectives involve a foundation for life-long learning, you will also gain some basic skills in contemporary approaches and technologies. These include:

  • Version control. We will use git.
  • Build systems. These may include Make, CMake, webpack, etc. depending on your project. Your project will be assessed partly on the "out of box experience" for both developers and end users.
  • Testing. You will automate testing to the extent practical, using automated test tools appropriate to your project.
  • Development environments. You have access to the JetBrains suite of IDEs as a student, but you may choose another set of tools if appropriate. You must in particular learn to debug effectively. Debugging is greatly accelerated by appropriate tools.
  • Incremental development. While we will not adopt any particular methodology in full detail, our approach will be loosely based on agile methods in general and scrum in particular, influenced also by the spiral model for risk-based planning and monitoring.
  • Documentation. Your product will include concise but useful documentation for both developers and end-users.

Assessment (Grading)

This is a project-oriented course, and the extent to which the learning objectives have been met will be assessed largely through observing how you have applied them in two team projects. You can learn from adversity as well as success, so you will also have opportunities (i.e., exams) to reflect on what went well and less well in your project and your individual activities, and how your particular experiences relate to the broader themes we have explored in lecture, reading, and discussion.

You will complete a group member evaluation (GME) survey at the midpoint and conclusion of each project. In the GME you will assess your own project performance and those of your teammates. The mid-project GME will be used only to provide constructive feedback and to spot problems in time to deal with them. I will use the end-of-project GME provided by you and each of your teammates in my assessment of your contribution to your team project.

Weights

  • Project 1: 25%
  • Project 2: 45%
  • Exams: 20%
  • Participation: 10%

Teammate evaluation may significantly raise or lower your project grade. Frequent absence will significantly lower your grade. Letting down your team will result in a poor grade regardless of score. Participation includes presentations, live discussion, and constructive contributions to our Piazza discussion.

Grade rubric

Our grading follows CIS department grading standards.

A Excellent performance in all aspects of the class. Although you are not an expert in software engineering, you are very well prepared to apply software engineering principles professionally or in research, and to continue building your knowledge throughout your career. Weighted scores of 90% or higher generally indicate excellent performance.
B Solid performance. You have demonstrated a good understanding of software engineering principles and ability to apply them in a team project. You are prepared to be contribute constructively to a professional software development team. Weighted scores between 80% and 89% generally indicate solid performance.
C Passing. You have demonstrated some grasp of the material, but there are significant gaps in your understanding or your demonstrated ability to apply it. At this point you would be a marginal contributor to a professional software development team. Weighted scores between 70% and and 79% generally reflect C level performance.
D Insufficient performance. In CIS 422/522, a D usually means you have let down your team. Weighted scores between 50% and 69% generally fall into the D range, but evidence that you let down your team will result in a D regardless of score.
F Little or no grasp of the material, and/or negative contribution to your team. An F is rarely given, and usually indicates that you abandoned your team or that your team would have been considerably better off without you.

Estimated Workload

You should expect to spend about 12 hours per week on CIS 422. If your team works smoothly and organizes the work well, you can distribute the work evenly through the term.

In a typical week, you might expect

Hours Activity
3 Lecture and discussion
1 Assigned reading and lecture prep
3 Coordination with teammates
4 Coding and debugging on your own. This will typically include related reading of documentation, e.g., familiarizing yourself with a library or a language feature.
1 Overhead: Documenting your effort, communicating with instructor, etc.

Expect about 5 hours total for exams. Total time for the term should be about 125 hours.

Class Logistics

Lecture (live)
Tuesday and Thursday from 16:15 (4:15pm) to 17:45 (5:45pm) U.S. Pacific time, on Zoom. See Canvas for Zoom link.
Instructor (also live, so far)
Michal Young, 243 Deschutes Hall

Office hours
TBD; also by appointment
Textbook
None. We will read articles from the the web and from the software engineering literature.

Discussion site (Piazza)

CIS 422 Piazza site
We make extensive use of Piazza for discussions, announcements, and distribution of handouts (including lecture slides). You can post questions and comments to our Piazza site anonymously, but I strongly encourage you to start or join open discussions. If something is confusing you or bugging you, there is a good chance it is bugging or confusing others as well.

Piazza and Privacy

Piazza is (or at least claims to be) FERPA-compliant. Be aware that if you opt in to the Piazza ‘careers’ program, Piazza may mine your activity and share summary information with recruiters. Your email address is considered 'directory information' and is public information unless you have chosen to keep it private. Your enrollment in any particular course, such as CIS 399se, on the other hand, is not public information. Although I am not a lawyer, my interpretation UO privacy policy is that I may not inform Piazza of your enrollment in CIS 422 by using your UO email address to have a Piazza invitation sent to you. Instead, I will ask you to sign up for CIS 422 in Piazza using any of your UO email address, your UO CIS email address, or a private email address that you create just for that purpose. If you use a private email address, I will need you to let me know about it.

With these provisions, I believe we can make full use of Piazza without compromising your privacy or violating FERPA. However, if for some reason you do not feel comfortable with this arrangement, contact me about making alternative arrangements for participation in online discussions.

Although we will be using Canvas, please note that comments in Canvas are a very poor substitute for discussion on Piazza. It is easy for me to keep track of unanswered questions and comments on Piazza, to make sure I get to them as quickly as I can. The notification system in Canvas is less functional, and I tend to “lose” Canvas comments. I suggest using Canvas comments only to leave an explanation with a project turn-in (e.g., “I know this project required a Duck, but all I could find was this Goose”).

Policies

Mandatory Attendance

Attendance is required. Missing the first week of class will result in an automatic drop.

Professional Interaction

Teamwork and constructive, professional interaction with peers are core to CIS 422. Teamwork is a part of your grade. Uncivil behavior will result in expulsion; see our policy on interaction.