Course Type
This is a face-to-face course, which requires attending the class on campus during the scheduled times. See attendance policy in this document. Any temporary changes to this format (e.g., any one-time change to remote instruction) will be communicated in advance by RU email and Blackboard announcement.
| Instructor | Sam Stites, Ph.D. |
| Office Location | AUD 336C |
| Primary Contact | [email protected] (will typically respond within 24 hours) |
| Other Contact | Office phone 312-341-3813 (available 9am-5pm weekdays; during other times, you can leave a voicemail).You can also use Discord when it is activated. |
| Course dates | Full semester, 16 weeks |
| Class starts | 9/1/2026 |
| Class ends | 12/15/2026 |
| Grades available | 12/25/2026 |
| Last Day for "W" grade | 10/30/2026 |
| Course hours | 3 |
Course contact expectations:
- Read your RU email at least once a day
- Access the Course Blackboard Site at least once a week.
- Check the course Discord for announcements / communication
Student Drop-In (Office) Hours:
Wednesdays @ 2:00pm-4:00pm in AUD 336C or Zoom, or by appointment (book with calendly, or send an email)
Required texts:
I. Sommerville. Software Engineering, Pearson, 2016.
Optional texts:
Titus Winters, Tom Manshreck and Hyrum Wright. Software Engineering at Google, O’Reilly, 2020.
- This book is effectively a manual that describes the software engineering practices at Google, and the rationale behind those practices. This resource is freely available online.
Mark Richards and Neal Ford. Fundamentals of Software Architecture, O’Reilly, 2020.
- An overview of software architectural patterns and their role in successful software projects.
Martin Kleppmann. Designing Data-Intensive Applications, O’Reilly, 2017.
- A practical and comprehensive guide going over architectural decisions for processing and storing data.
Tools we will use:
- Discord, for team communication,
- TypeScript as implementation language
- Vitest as Testing Framework
- Visual Studio Code as our IDE
- Github Projects, for project management, and
- (optionally) Tuple.app which can be used for remote pair programming
I will post a link to the Discord which you will be expected to join, updating your user name to be your full name. You will also get an invitation to join the Atlassian class workspace. Accepting the invites are required to receive credit on the software design assignments.
Discord can be run as a web-based or desktop application. All software packages are also available as mobile apps, if desired.
Course prerequisites:
CSIA/CST 250 Computer Science II (C- grade or higher) OR CSIA/CST 354: Introduction to Programming (C grade or higher)
Course description:
Per the course catalog:
Provides an overview of the software engineering process and software life-cycle models. Gives a detailed study of the analysis, specification and design phases. Students will work in teams to gain experience in software development methodology, software analysis and design, and developing a prototype.
RU’s learning goals:
The University’s three overall learning goals for undergraduate students are:
- Effective communication
- Knowledge of discipline-focused content
- Awareness of social justice and engagement in civic life
Course learning objectives and outcomes:
By the end of the course, students should be able to:
- Describe software engineering and explain its importance to the organization and practitioners including its role in developing various types of software systems.
- Differentiate between several software process models including plan-driven models and agile development methods including agile practices and the SCRUM approach.
- Explain requirements and requirements modeling including scenario modeling and behavioral modeling.
- Examine design concepts including pattern-based design and design tools
- Describe architectural and component-level design concepts.
- Explain user experience design and design for mobility and their importance to software.
- Examine software quality and quality assurance, testing practices and approaches.
- Describe software process improvement and emerging trends in software engineering.
Methodology:
The first four weeks will consist of lectures, in-class activities, and a quiz over the first unit. Over the remaining weeks, the course will shift to a flipped classroom format, in which prerecorded lectures will be watched asynchronously and class time will be used for lecture Q&A sessions, collaborative time for working on group software design assignments, and Scrum activities for those assignments.
List of topics covered:
- Requirements
- Software Test Adequacy
- Code-Level Design Principles
- Interaction-Level Design Patterns
- Concurrency Patterns
- Software Process
- React
- Distributed Systems Architectures
- Tests With Larger Scope
- Continuous Development
- Ethics and Equity in SE
Grading
There will be individual projects and a team project (in a group of 3-4 members). The overall grading breakdown is:
- 30% Individual projects (10% for deliverable 1, 20% for deliverable 2)
- 40% Team project (including peer evaluations / surveys)
- 5% Participation in synchronous class, practice activities
- 25% Quizzes and Examinations
Assignment of team project grades:
In cases where team members do not equally contribute to the project, we may assign different grades to different individuals, up to an extreme of deducting 50% of the team project grade for a student (which might arise to 100% deduction for not contributing to the project at all). We will evaluate each individual’s contribution on the basis of a variety of factors, including progress reports at weekly meetings, through inspecting version control history, through each students’ self-reflection, and through each students’ peer evaluation {during and/or} at the end of the project. We will make regular efforts to collect and distribute this feedback throughout the project — our ultimate goal is for all students to participate and receive full marks.
Grading grievances:
If you have concerns regarding the grading of your work, please let us know right away by opening a regrade request. All regrade requests must be submitted within 7 days from your receipt of the graded work. If your regrade request is closed and you feel that the response was not satisfactory, you may appeal to the instructor via email within 48 hours.