CS 361 Software Engineering

Class Meetings

Lectures: Tuesday and Thursday 4:00 - 5:20 PM in WNGR 153

Staff

Instructor: Michael Hilton
Email: hiltonm [at] eecs.oregonstate.edu
Office hours: Tuesday 10-11, Friday 1-2 Location: Kelley 2087

TA: Nicolas Nelson
Email: nelsonni [at] oregonstate.edu
Office hours: Monday Wednesday 2-3 Location: Kelley Atrium

TA: Shane McKee
Email: mckeesh [at] onid.oregonstate.edu
Office hours: Thursday 11:30-12:30, Friday 2-3 Location: Kelley Atrium

Important Dates

January 5: First day of classes

FINAL: WNGR 153 from 6:00-7:50, Tuesday March 15th.

Schedule

  • NOTE:This schedule is tentative and may change
  • Date Topic Lecture Slides Readings due Assignments
    Tue, Jan 5 Introduction Introduction Syllabus
    Software Engineering Talk by Mary Shaw
    Assignment 0 Assigned
    TL;DR post Github username to Piazza, Signup for a group on Canvas (maybe), Run project and make Pull Request.
    Thurs, Jan 7 Collaboration and TDD Collaboration And TDD Github Flow Introduction
    Introduction to TDD
    Tues, Jan 12 TDD and User Stories TDD and User Stories User Stories
    INVEST
    FizzBuzz example
    Assignment 1 Assigned
    Thurs, Jan 14 User Stories and Architectural Patterns User Stories and Architectural Patterns Architectural patterns
    Tues, Jan 19 More Architectural Patterns More Architectural Patterns
    Thurs, Jan 21 More Architectural Patterns Project Management and Risk Risk Management
    Tues, Jan 26 Review Assignment 1 Assignment 2 Assigned
    Thurs, Jan 28 Paper Prototypes Paper Protypes Paper Prototypes
    Paper Prototyping Myths
    Tue, Feb 2 UML Diagrams UML Diagrams UML Diagrams (NOTE: We only covered a subset of these in class)
    Thurs, Feb 4 UML Class Diagrams UML Class Diagrams UML Class Diagrams
    UML Class Diagram Examples
    Tues, Feb 9 Review Assignment 2 Assignment 3 Assigned
    Thurs, Feb 11 Design Patterns Design Patterns Design Patterns Reference
    Java Design Patterns
    Tuesday, Feb 16 AntiPatterns AntiPatterns AntiPatterns
    Code Smells and Refactorings
    Thursday, Feb 18 Code Review and Pair Programming CodeReview
    Tuesday, Feb 23 Assignment 4 and Resume Suggestions
    Thursday, Feb 25 Guest speaker, Sarah Cooly
    Tuesday, March 1 Team Working Session
    Thursday, March 3 Open Source and #MobProgramming Open Source and #MobPrograming Open Source Initiative
    Mob Programming

    Activities

    Class Participation: There will be opportunities for class participation throughout the term

    Writing Assignment: As this is a Writing Intensive Class, there will be a 2000 word essay which we will revise multiple times, as per University Policy

    Final: There will be a comprehensive final

    Group Project: The main focus of this course will be the Group project. There will be 4 milestones each which will be two weeks long.

    Grading

    Class Participation: 10%

    Writing Assignment: 20%

    Final: 20%

    Group Project: 50%

    Due Dates and Lateness

    Each team will be allowed 3 late days for their group project. These days can be used individually or in a single block. All writing assignments will be due in class. The group projects will be mostly submitted online, although some design documents will be delivered in hard copy form.

    Students with Disabilities

    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.

    Statements on Plagiarism

    Reuse and building upon ideas or code are major parts of modern software development. As a professional programmer you will never write anything from scratch. This class is structured such that all solutions are public. You are encouraged to learn from the work of your peers. I won't hunt down people who are simply copying-and-pasting solutions, because without challenging themselves, they are simply wasting their time and money taking this class. Please respect the terms of use and/or license of any code you find, and if you reimplement or duplicate an algorithm or code from elsewhere, credit the original source with an inline comment.

    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.
    • Demonstrate the ability to compose a document of at least 2000 words through multiple aspects of writing, including brainstorming, drafting, using sources appropriately, and revising comprehensively after receiving feedback on a draft.