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. You can find the Slack  link on the Sidebar in Canvas. You have been automatically added to the workspace, so you don't need to sign-up.
  • Email only when you have personal or grade related questions. If you email questions about the assignments, we will not answer them.
  • You are expected to regularly check your email for announcements from Canvas so not to miss important announcements.

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 50% 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.
Guest Lectures 10% We will also have several 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.
In-class activities 10% During the class, we will ask participation questions and have activities. 

Final Exam

(paper, descriptive)

30% A comprehensive final exam will be given during the allocated final exam time slot. More details about the Exam will be given as the Final Week approaches

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 TWO 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 with the entire team copied on the email. The late days are atomic (you cannot split them further). In all other cases, late submissions will not be accepted.

Communication Methods

The Slack workspace is the primary communication mode for this class.
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 parentheses) [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 once 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   10:00 am - 11:00 am Brijesh Bhuva KEC Atrium
Wednesday         11:00 am - 12:00 pm       Kamilla Aslami  KEC Atrium
Thursday   10:00 am - 11:00 am Mian Xie  KEC Atrium
Friday   03:00 pm - 04:00 pm Dhruv Jawalkar KEC Atrium


Contacting the TAs

  • Kamilla Aslami       (
  • Brijesh Bhuva         (
  • Dhruv Jawalkar     (
  • Mian Xie                     (

Contacting the Instructor

Samarendra Hedaoo:

Office hours with the Instructor are available by appointment at

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