Skip to content

Latest commit

 

History

History
214 lines (152 loc) · 6.13 KB

File metadata and controls

214 lines (152 loc) · 6.13 KB

Syllabus - Fall 2017

CS1530 Software Engineering

Although the instructor will make a best effort to have the class topic on the day listed, occasionally a change must be made (e.g., a lecture going long, or a guest lecturer unable to make it to class that day). However, these are the topics that will be covered and the expected date that they will be taught.

Required Books

  • McConnell - Code Complete, Second Edition
  • Tsui - Essentials of Software Engineering (third or fourth edition)

Online Resources

WEEK 1 (28 and 30 Aug)

  • (28 Aug) Introduction: What is Software Engineering?

    • Software Engineering vs Programming vs Computer Science
  • (30 Aug) Overview: Designing a Software Product

    • Reading: Brooks, "The Tar Pit" and Brooks, "The Mythical Man-Month" (just the titular essay, not the entire book)
    • Why is this difficult?
    • Overview of the Software Development Life Cycle
    • What goes into a software product aside from code?

WEEK 2 (4 and 6 Sep)

  • (4 Sep) NO CLASS - LABOR DAY

  • (6 Sep) Building a Software System

    • Reading: Tsui, Chapters 1 and 2
    • Overview of requirements, design, testing, estimating
    • How is a system built?
    • Walkthrough: Developing a system from requirements
    • DUE: READING QUIZ 1

WEEK 3 (11 and 13 Sep)

  • (11 Sep) Principles of Software Engineering

    • Reading: Tsui, Chapter 3
    • Why do software projects fail?
    • Fundamental Concepts
    • Davis's Principles
    • Royce's Principles
  • (13 Sep) Overview of Software Process Models

    • Reading: Tsui, Chapter 4
    • Waterfall
    • Incremental and Iterative
    • Spiral
    • CMMI
    • Benefits and Drawbacks of each
    • DUE: READING QUIZ 2

WEEK 4 (18 and 20 Sep)

  • (18 Sep) Our Model: Agile/Scrum

    • Reading: Tsui, Chapter 5 and The Agile Manifesto - http://agilemanifesto.org/
    • Why Agile?
    • Sprints / Sprint Planning / Retrospective
    • Scrum teams
    • Benefits and Drawbacks
  • (20 Sep) Requirements and User Stories

    • Reading: Tsui, Chapter 6
    • Requirement elicitation
    • Requirement analysis
    • Differences between requirements and user stories
    • DUE: READING QUIZ 3

WEEK 5 (25 and 27 Sep)

  • (25 Sep) Software Design and Architecture

    • Reading: Tsui, Chapter 7
    • Phases of design
    • Architectural vs Detailed design ("strategy" vs "tactics")
    • Architectural styles and patterns
  • (27 Sep) Detailed Software Design

    • Reading: Tsui, Chapter 8
    • Design metrics
    • Object-Oriented and Aspect-Oriented Design
    • Coupling and cohesion
    • Basic UI Design Principles
    • DUE: READING QUIZ 4

WEEK 6 (2 and 4 Oct)

  • (2 Oct) Software Project Management

    • Reading: Tsui, Chapter 13
    • POMA - Planning, Organizing, Monitoring, Adjusting
    • Project effort estimation
    • Understanding earned value (EV)
    • Comparing EV vs story points
  • (4 Oct) Software Implementation

    • Reading: Tsui, Chapter 9
    • Software development guidelines
    • Implementation practices
    • DUE: READING QUIZ 5

WEEK 7 (10 and 11 Oct)

Note: Classes that are normally held on Monday are shifted to Tuesday on this week due to the Monday holiday.

  • (10 Oct) MIDTERM 1

  • (11 Oct) EXERCISE 1: Group Selection and Requirements

    • Sprint 1 begins

WEEK 8 (16 and 18 Oct)

  • (16 Oct) EXERCISE 2: Git 911

    • Reading: A Friendly Introduction to Git by Bill Laboon
  • (18 Oct) Gradle and Build Systems

    • Why a build system?
    • Integrating tasks
    • Testing with JUnit

WEEK 9 (23 and 25 Oct)

  • (23 Oct) EXERCISE 3: Pair Programming a Gradle App

  • (25 Oct) Quality Assurance and Quality Software

    • READING: McConnell, Chapters 20-23
    • Sprint 1 ends; Sprint 2 begins

WEEK 10 (30 Oct and 1 Nov)

  • (30 Oct) EXERCISE 4: GUEST LECTURE - Jenny Liu, Product Manager at TurnItIn, on Product Ownership.

    • How does Product Management compare to Program or Project Management?
    • Understanding customer needs
    • Balancing technical requirements with customer requirements
    • Product roadmaps
  • (1 Nov) Defensive Programming

    • READING: McConnell, Chapter 8
    • Protecting programs from invalid input
    • Postel's Principle
    • Dealing with errors and exceptions

WEEK 11 (6 and 8 Nov)

  • (6 Nov) Function/Method-Level Software Development

    • READING: McConnell, Chapters 5 and 10 - 12
    • Accidental vs Essential Complexities
    • Information Hiding and Encapsulation
    • Managing complexity
    • Techniques for ensuring loose coupling
  • (8 Nov) Programming with Concurrency

    • Why program with threads?
    • Threads vs Processes
    • Pitfalls (data races, deadlock, livelock, etc.)
    • Sprint 2 ends; Sprint 3 begins

WEEK 12 (13 and 15 Nov)

  • (13 Nov) Concurrent Programming in Java

    • java.util.concurrent
    • Thread-safe programming in Java
    • Common patterns and anti-patterns
  • (15 Nov) EXERCISE 5: Finding Pi Using Concurrency

WEEK 13 (20 and 22 Nov)

  • (20 Nov) Integration and the Software Pipeline

    • READING: Tsui, Chapter 11
    • Classical models of integration
    • Continuous Integration
    • Sprint 3 ends; Sprint 4 begins
  • (22 Nov) NO CLASS

WEEK 14 (30 Nov and 1 Dec)

  • (27 Nov) Legacy Code

    • Refactoring
    • Sprout and Wrapper methods/classes
    • Pinning tests
    • Finding/modifying seams
    • Finding/modifying inflection points
  • (29 Nov) Trade-offs In Software Engineering

    • Cost / Benefit analysis
    • Making decisions based on the Iron Triangle
    • Examples - Apollo Guidance Computer, Adding Metrics to Web Application

WEEK 15 (6 and 8 Dec)

  • (4 Dec) MIDTERM 2

  • (6 Dec) Software Craftmanship

    • READING: McConnell, Chapters 33 - 34
    • Writing good code - maintainable, testable, etc.
    • Intellectual humility and avoiding complexity
    • Conventions and Abstractions
    • Continuous Improvement
    • Sprint 4 ends