Course Syllabus

Some links in this tab are only accessible to registered students.


The main goal of this class will be help students develop the skills that will enable them to build high quality software, in a professional manner. This includes writing code that is reliable, well designed, meets the requirements, and can be done in a reasonable amount of time. We will also discuss important skills necessary for working with others while developing software including version control, peer reviews, issue tracking, and testing.

Topics covered

  • Introduction to Software Engineering
  • Software Development Processes
  • Requirements Elicitation
  • Software Design and Architecture
  • Configuration Management and Project Management
  • Software Specifications and Testing
  • Ethics in Software Development.

Class expectations

  • There will be two 120 minute classes per week. In addition, you should expect to spend 8 additional hours per week on reading, study, and projects.
  • We will use Slack to discuss questions/problems.
  • Email only when you have personal or grade related questions. If you email questions about the assignments, we will not answer them.
  • You can find the Slack signup link in the Canvas Syllabus page.
  • You are expected to regularly check your email for announcements from Canvas so not to miss important announcements.
  • You are expected to be prepared for class, participate in discussions, ask and answer questions.
  • We will cover some material in class that is not covered in the reading material; your assignments and test questions may be based on that material. In particular, many of the details necessary to complete assignments will be presented in class. Thus, it is to your benefit to attend class. Because late arrivals are distracting, we also ask that you arrive to class on time.

Course Objectives

At the completion of this course, students will be able to:

  • Select the most appropriate software process model to use in a particular situation.
  • Synthesize requirements for a realistic software system and write a requirements specification document. Model system requirements using one or more semi-formal notations such as UML, dataflow diagrams, entity-relationship diagrams, or state diagrams.
  • Design software systems at an architectural level and at lower levels, using one or more techniques, such as object-oriented design or agile methods, and express these designs in design specification documents.
  • Validate designs and adjust the specification or design as necessary.
  • Describe several methods of estimating the cost and developing a schedule for a programming project.
  • Participate effectively in a team environment.
  • Produce professional-quality software-related documents.
  • Develop and articulate content knowledge and critical thinking in the discipline through frequent practice of informal and formal writing.
  • Demonstrate knowledge/understanding of audience expectations, genres, and conventions appropriate to communicating in the discipline.

Slides will be put up before or immediately after the lecture on Canvas.

To see the schedule of things you are required to turn in currently, refer the table below.


Item Percentage Description
Project 60% Teams (~4 students per group) will implement a software project throughout the term. There will be 4 stages submitted by the teams throughout the term.
Class participation 10% During the class, we will ask participation questions. We will also have several in-class interviews of people in different sectors of the software industry throughout the term; you will be expected to submit at least one question for them prior to the interview. We will also have several in class activities during the term.
Final Exam 30% A comprehensive final exam will be given during the allocated final exam time slot.

The final letter grades will be assigned using the scheme below:

Grade Range
A 93-100%
A- 90-92%
B+ 87-89%
B 83-86%
B- 80-82%
C+ 77-79%
C: 73-76%
C- 70-72%
D+ 67-69%
D: 63-66%
D- 60-62%
F: 0-59%

Final scores will be rounded the nearest integer.

Questions about grades

The TAs will grade all your submissions, unless otherwise noted. If you have any concerns, contact them via email as noted in the Where to go for help?. Any concerns about grades should be communicated within 3 days of receiving the grade.


"Accommodations are collaborative efforts between students, faculty and Disability Access Services (DAS). Students with accommodations approved through DAS are responsible for contacting the faculty member in charge of the course prior to or during the first week of the term to discuss accommodations. Students who believe they are eligible for accommodations but who have not yet obtained approval through DAS should contact DAS immediately at 541-737-4098."

Students with documented disabilities who may need accommodations, who have any emergency medical information the instructor should be aware of, or who need special arrangements in the event of evacuation, should make an appointment with the instructor as early as possible, and no later than the first week of the term. Class materials will be made available in an accessible format upon request.


Late Policy

Each group will be allowed 2 late days on the Project assignments only. These days can be used separately or in a single block. Each day gives you 24 extra hours (e.g. if the original deadline is Friday at 5PM, using a day will push it back to Saturday at 5PM). All group members must agree to use the late days and notify the professor/TAs prior to the original due date. The late days are atomic (you cannot split them further). In all other cases, late assignments will not be accepted.

Communication Methods

The Slack workspace is the primary communication mode for this class. Use the appropriate channel for communication related to an assignment.
Email should be used for anything that contains sensitive information. So if you have a question about a grade or want to request an extension, do so via email. All emails should have the exact characters (yes, include the parantheses) [CS361] at the start of the subject so that they get priority in my inbox. In addition, every time you reply to an email thread it knocks it to the back of the queue because email gets processed in order of the most recent emails last. So be careful sending multiple replies as it might bump you back in the queue.
Canvas Comments
Canvas comments should only be used by students to add commentary prior to grading and by myself and the TAs to give feedback. If you need to communicate something to myself or the TAs after your assignment has been graded do so via Email. We will not see comments posted to your assignment submission after it has been graded.
Canvas Mail
The TAs and myself try the best we can to monitor Canvas email. But there are less options to sort and filter mail via that system so there is a much higher likely-hood that we will miss things that get sent via Canvas mail. So I suggest you do not use it.

TA Office Hours

Monday Matthew Meyn 4:00 - 5:00 pm
Wednesday Roli Khanna 1:30 - 2:30 pm KEC Atrium


Contacting the TAs


Contacting the Instructor

Samarendra Hedaoo:

Office hours with the Instructor are available by appointment.

Option 1: Sign up for any 30-min timeslot on Friday here

Option 2: Email at, FOUR different time slots for the next 72 hours and I can almost always accommodate one of them.

All technical questions, as well as questions about assignments, quizzes, or anything that you learn in class (unless they are related to your grade), should be posted on Slack so that all students can benefit from them.


Communication Timelines

You can expect a response to emails within 48 weekday hours. So if you send an email at 8am on Monday, you should have a response by 8am on Wednesday. If you send an email at 10pm on Thursday, you should have a response by 10pm on Monday.

Do not expect communication on the weekends, though I do my best to look for urgent questions that are preventing you from making progress and answering them, even on the weekend. The more specific the question, the more likely you are to get help.


Code Sharing

You will not get in trouble for sharing code on Slack in order to solve problems. The communication guide actually mandates that you share portions of your code if you want to ask a good question. If you are worried that you are posting too much code, mark it private and ask a TA or Instructor to review it.

You will get in a great deal of trouble if you copy code without citing it. See the policy on plagiarism. Code from lectures is not your own, code from StackOverflow is not your own, code from the node.js documentation is not your own. If it is not your code you must cite it. If you cite it, you must provide documentation in very great detail of what it is doing so that I know you understand the code you are using.

Course Summary:

Date Details Due