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 12:00 (noon) to 13:25 (1:25pm) U.S. Pacific time, live in person in 195 Anstett (on 13th Ave in front of Lillis)
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.

Online discussions

We will pilot a discussion forum under development by a team of current and recent UO students who took CIS 422 together in Winter 2021. We will provide feedback to this team, and we will likely also ask them to share their experience attempting to grow a project from a prototype developed in CIS 422 into a professional-level application.

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.