SOFTWARE ENGINEERING I (CS_361_001_W2025)

banner_home.png

NOTE: Some links on this page may only be accessible to registered students.

Welcome to CS361: Software Engineering I

Start Here

Please begin the course by clicking the Start Here button.

Start Here Button

The objective is to provide a general introduction to software engineering. Specifically, you will be introduced to important concepts such as software development processes and project management. You will learn the essentials of software design, modeling, and testing, from requirements specification to software quality assurance. Throughout this course, you will engage in a term-long team project, which will constitute 50% of your final grade. In addition, there will be weekly homework formative assignments, accounting for the remaining 50% of your grade. These assignments are intended to reinforce concepts introduced each week, fostering active learning through discussion, collaboration, and the practice of various software engineering approaches in project implementation and management. While there will be some programming, the primary focus of this course is on processes, tools, and methods rather than coding. I have carefully selected the course content to include foundational concepts that are essential for meeting the stated objectives. Advanced topics have been omitted to maintain a focus on these fundamentals.

Course Learning Outcomes

By the end of this course, you should be able to:

  • Communicate technical information effectively, both orally and in writing.
  • Synthesize requirements for a realistic software system and write a requirements specification document.
  • Select the most appropriate software process model for various situations.
  • Model system requirements using UML notations.
  • Design software systems using UML notations.
  • Validate designs and adjust the software specifications or design as necessary.
  • Effectively use software tools such as Teams and GitHub for project management and team collaboration in a software engineering context.
  • Participate effectively in a team environment.
  • Produce professional-quality software-related documents

Course Contents

The scope and the need for software engineering

  • Software engineering processes
  • Software development life cycle
  • Requirements engineering
  • Agile software development
  • Scrum
  • UML modeling and diagram notations
  • Software project management
  • Software project planning, scheduling
  • Software Testing 

Meet the Instructor

Hi everyone, I'm Dr. Raffaele De Amicis, the instructor for Software Engineering I (CS361). I am an Associate Professor of Virtual and Augmented Reality and Software Engineering at Oregon State University. Over the course of my career, I have been the Principal Investigator on several multidisciplinary projects funded by organizations such as the National Science Foundation, the U.S. Economic Development Administration, the National Security Agency, the Oregon Manufacturing Innovation Center, the European Commission, and the North Atlantic Treaty Organization, with a total budget of over $52 million. I have authored 3 books, contributed to 30 scientific journal papers, and written or co-authored more than 177 peer-reviewed conference papers. Additionally, I have advised 7 Ph.D. students, 21 M.S. students, and 32 REU students.

I look forward to working with you all this term and helping you build the skills necessary for success in software engineering.

NOTE: Some links on this page may only be accessible to registered students.

Syllabus & Schedule

NOTE: Some links on this page may only be accessible to registered students.

 

Steps to Get Help 

  1. Read again the assignment, lecture slides, and/or syllabus
  2. Google/Bing/Open the suggested readings
  3. Ask a friend
  4. Check the Discussion Canvas Section for relevant posts or create a new question <-- This is often the fastest approach
  5. Ask a TA:
    • You can attend office hours in person (see the TA Office Hours page)
  6. Attend Dr. De Amicis' office hours.
    1. Office hours will take place in my office located in the Kelley Engineering Center room 3105 each Monday from 1100 to 1300.

Communication Policy

Please post all course-related questions in the General Q&A Discussion so the entire class can benefit from our conversation.
Avoid using the Canvas mailbox because it doesn't work very well. Please send an email for matters of a personal nature, but be so kind as to use your OSU email to contact me. When you send us an email, you must include the tag "[CS 361]" in your email subject.  When you email your TA or me, you should expect a response within 48 hours.

I will strive to return your assignments and grades for course activities to you within seven business days of the due date.  My TAs will reply to course-related questions in the General Q&A Discussion within [48 hours].

Instructor Information and  Office Hours

Raffaele de Amicis, Associate Professor
Raffaele.deamicis@oregonstate.edu
Office Location 3105 Kelley Engineering Center

Office hours will take place in my office located in the Kelley Engineering Center room 3105 each Monday from 1100 to 1300.

TA Contact Information & Office Hours

TA office hours start Monday of Week 1.

  • General course questions? Post to Discussion.
  • TA: Viacheslav Tekaev - tekaevv@oregonstate.edu -  by Zoom or in person (further details will be published soon).

Additional Academic Support

There are many resources available to help you achieve your goals in each course. Listed below are several that are applicable to all students in all courses:

  • Disability Access Services (DAS) provides accommodations, education, consultation, and advocacy for qualified students with disabilities at Oregon State University. DAS works with students at OSU, OSU-Cascades, across Oregon, and around the world through the OSU E-campus program.
  • The Academic Success Center (ASC) exists to help you locate academic support on campus. Email (success@oregonstate.edu), text (541-444-5906), or visit the website to learn more about available resources for academic support.  
  • The Writing Center. can help you with many different writing projects. Their peer writing consultants support all aspects of the writing process, from brainstorming and organization to questions of grammar and usage.
  • Academic Advisors can help you navigate the university and its many processes. If you find yourself struggling in a course, are interested in the S/U grading options, or have questions about policies and regulations, reach out to your academic advisor as soon as possible.
  • At the Oregon State University Libraries and Press, we are driven to create services and spaces that help students, faculty, and staff — across all of OSU’s units and colleges — achieve these goals. OSULP includes the Valley Library in Corvallis, routinely selected by students as the Best Place to Study on Campus.
  • TA: Mark Trinh - trinhm@oregonstate.edu - Monday 1-2PM, Tuesday 1-2PM (Pacific), or by scheduled appointment. (Starting Week 2)

NOTE: Some links on this page may only be accessible to registered students.

Course SW Tools & Textbooks

 There is no required textbook for this class, but the following books constitute a very good reference for this course, consequentially their systematic consultation is warmly advised:

    • Software Engineering: a Practitioner's Approach by Roger Pressman and Bruce Maxim
      • https://search.library.oregonstate.edu/discovery/fulldisplay?docid=alma991033427901865&context=L&vid=01ALLIANCE_OSU:OSU&lang=en&search_scope=CourseReserves&adaptor=Local%20Search%20Engine
    • Handbook of Software Engineering Methods by Lara Letaw 
      • The book is available online via this link: https://open.oregonstate.education/setextbook/
    • Object-Oriented and Classical Software Engineering by Stephen R. Schach
      • https://search.library.oregonstate.edu/permalink/01ALLIANCE_OSU/1c3q896/alma991051730101865
    • Software Engineering,  by Ian Sommerville
    • Ethical Engineering: A Practical Guide with Case Studies,
      • This book is available online via this link:
      • https://search.library.oregonstate.edu/permalink/01ALLIANCE_OSU/1c3q896/alma991135626301865
  • During the course, you will also benefit from a combination of lectures and notes, we will also use freely accessible, openly licensed text, media, and other digital assets. Furthermore, the course will include readings from various conferences and journals where Software Engineering research is published.
  • If you are worried about your writing skills, the Undergraduate Research & Writing Studio and the Online Writing Suite are available to all students. We have a lot of dedicated people working there, including advocates for ELL and international students. Please visit http://writingcenter.oregonstate.edu/ (Links to an external site.) or email me if you have questions or want to be in touch with someone at the center.

Open Access Textbook Resources

Related Online Links and Web Resources

 Git and GitHub

 TEAM COMMUNICATION 

 

Accessibility Statements

This course uses technologies that may support accessibility in different ways. Please refer to the accessibility statement for each technology provider for details as to the level and types of accessibility that are supported.

Follow this link to access Accessibility Statements for commonly used software.

Accessibility Tools for Canvas

The following tools are embedded within each module of your course. 

ReadSpeaker - is a tool that reads text on Canvas course pages aloud.

TextAid - is an additional tool that allows users to have nearly any text highlighted and read aloud, including documents, Web sites, text composed by a user, and more. If this tool is not enabled in your course, please ask your instructor to enable it.

For more information, please visit the ReadSpeaker Text Aid link.

If you have questions about accommodations related to a documented disability, contact the Disability Access Services (DAS) office: https://ds.oregonstate.edu/. The DAS office serves students on all campuses.   

 

Canvas Technical Support

For 24/7 support for courses offered in Canvas, click the Help link in the lower left corner of any Canvas course site. Or, call the Canvas Support Hotline at 844-329-3084. You may also find helpful answers in the Canvas Student Guide.

Copyright & Ownership of Materials

  • The materials on this course website are only for the use of students enrolled in this course for purposes associated with this course and may not be retained or further disseminated.
  • Course materials are cited within the Syllabus and Modules based on the copyright policy of each item.
  • When copyright permission is required, OSU or Ecampus have contacted the copyright owner.
  • When a fair use determination has been made, this has been documented.
  • Images that are not cited have been obtained from the public domain or via a paid subscription or are images taken by the instructor.

Please get in touch with the instructor if you have any questions about the copyright and ownership of materials presented in this course.

Privacy Policies for External Tools

Follow this link to access Privacy Policies for commonly used external tools that require the user to create an account.

Student Resources

From the bike shop to the food pantry, OSU has dozens of resources available. The student experience website has the most comprehensive list of resources available to students. Selecting the “Campus” on the right menu will allow you to find resources available to you, and the filter settings can narrow the list of resources to specific service categories.  You can then read a brief description of the service and use the links to find more information about each service and how to access it.

Technical Support 

Additional technical support for use of software and browsers can be accessed through the OSU Service Desk. You can access the OSU Service Desk via phone at 541-737-8787 or through the online form: Submit a Help Request .

Term-Long Project: An Overview 

The term-long team project is a comprehensive endeavor that spans the entire duration of a course or term. Instead of being a single, isolated task, it's a compilation of multiple assignments. Each of these assignments is strategically placed to evaluate student learning upon the completion of specific instructional modules. The end goal for each team is clear: produce functional software. The software will be assessed, and your team will be graded, through a set of User Acceptance Tests that constitute the last course project assignment. However, it's vital to understand that while the software should work, it doesn’t necessarily have to be ready for commercial production or be exceptionally groundbreaking. In essence, the term-long team project is a holistic exercise in understanding, implementing, and managing a software project, encapsulating the many facets of software engineering and project management.

Course project assignments are introduced and initiated in the classroom. The procedure for these assignments generally involves two phases. It begins in the classroom with the introduction of the assignment and some initial preparatory tasks. Following this, teams are given the autonomy to complete their work outside the classroom confines. The duration required for completion can vary based on the assignment's complexity.

One of the distinct advantages of initiating the assignments in class is the immediate clarity they offer. Should students face any confusion or challenges, they can promptly turn to the instructor (me or the TAs) for real-time guidance. This ensures quick resolution of any doubts or misunderstandings. Additionally, the environment of a physical classroom inherently fosters discussion and teamwork, further elevating the learning experience.

For a more detailed description on the course project, go here.

Homework assignments

Homework assignments are designed for learning and self-assessment. The assignment with the lowest grade will be dropped from your final score. These assignments are individual tasks, though they may occasionally begin in class. Their purpose is to reinforce the concepts introduced each week, helping you identify any gaps in your knowledge and areas needing further study. 

They can take various forms, including quizzes to assess your understanding of key concepts or practical activities that require hands-on application, such as using Git or creating diagrams with PlantUML.

 

 

 

Course Summary:

Course Summary
Date Details Due