Skip to content

Latest commit

 

History

History
executable file
·
156 lines (116 loc) · 5.23 KB

syllabus.md

File metadata and controls

executable file
·
156 lines (116 loc) · 5.23 KB

Syllabus - Spring 2017

CS1530: Software Engineering

Note that this syllabus is subject to change, but we will cover all of these topics! I may change the ordering based on class/project needs or interests, but these are the topics we will cover.

Required Books

WEEK 1 (16 and 18 May)

Class 1 - Introduction: What is Software Engineering?

  • Software Engineering vs Programming vs Computer Science
  • EXERCISE: Group creation (EX1)

Class 2 - 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 (23 and 25 May)

Class 1 - Agile Development: Theory and Practice

__Reading: "Manifesto for Agile Software Development", http://agilemanifesto.org/

  • Terminology - Sprints, scrums, kanban, retrospective, etc.

Class 2 - Interacting with Stakeholders and Co-workers

  • EXERCISE: Stakeholder interaction (EX2)
  • BEGIN SPRINT 1

WEEK 3 (30 May and 1 June)

Class 1 - Intro to Gradle

  • Building
  • Testing
  • Other tasks
  • EXERCISE: Pair Programming with Gradle (EX3)

Class 2 - Swing Refresher

  • Event-Driven Programming
  • Frames and Panels
  • Layouts
  • Buttons
  • EXERCISE: Pair Programming a Swing Application (EX4)

WEEK 4 (6 and 8 June)

Class 1 - Git Exercise

Class 2 - First Retrospective / Sprint Planning

  • EXERCISE: In-class retrospective and sprint planning (EX6)
  • SPRINT 1 ENDS; SPRINT 2 BEGINS

WEEK 5 (13 and 15 June)

Class 1 - Introduction to Test-Driven Development (TDD)

Reading: Freeman/Pryce, Chapters 1 - 3

  • TFD / TDD
  • The Red-Green-Refactor cycle

Class 2 - Quality Assurance and Quality Software

READING: McConnell, Chapters 20 - 23

  • The QA process and why it is important
  • QA implementation as part of the SDLC
  • Code Reviews
  • Code review exercise (EX7)

WEEK 6 (20 and 22 June)

Class 1 - Software Engineering with TDD

Reading: Freeman/Pryce, Chapters 4 - 6

Class 2 - Programming with Concurrency

  • Why program with threads?
  • Threads vs Processes
  • Pitfalls
  • Thread-safe programming in Java
  • Common patterns and anti-patterns
  • SPRINT 2 ENDS; SPRINT 3 BEGINS

WEEK 7 (27 and 29 June)

Class 1 - Concurrency Exercise

  • Concurrency exercise (EX8)

Class 2 - Integration and the Software Pipeline

  • Classical models of integration
  • Continuous Integration

WEEK 8 (4 and 6 July)

Class 1 - INDEPENDENCE DAY - NO CLASS

Class 2 - Software Design

Reading: McConnell, Chapters 4 -5 and Freeman/Pryce, Chapter 7

  • Top-down vs bottom-up
  • Architecture Models (simple, layered, client-server, n-tier, Big Ball of Mud, etc.)
  • SPRINT 3 ENDS; SPRINT 4 BEGINS

WEEK 9 (11 and 13 July)

Class 1 - Object-Oriented Analysis and Design

  • Overview of UML
  • SOLID Principles
  • DRY

Class 2 - Using Design Patterns

_READING: Freeman/Pryce, Chapters 26 - 27

WEEK 10 (17 and 20 July)

Class 1 - Fiat Voluntas Tua - The Power of the Command Line

  • Command line exercise (EX9)

Class 2 - Legacy Code, Large Systems, and Working On Other People's Code

OPTIONAL READING: Working Effectively With Legacy Code by Michael Feathers (http://www.objectmentor.com/resources/articles/WorkingEffectivelyWithLegacyCode.pdf)

OPTIONAL READING: Testable Java by Michael Feathers (http://www.objectmentor.com/resources/articles/TestableJava.pdf)

  • SPRINT 4 ENDS; SPRINT 5 BEGINS

WEEK 11 (25 and 27 July)

Class 1 - Trade-Offs in Software Engineering

  • Cost / Benefit analysis
  • Making decisions based on the Iron Triangle
  • Examples - Apollo Guidance Computer, Adding Metrics to Web Application
  • EXERCISE: Trade-off Discussion (EX10)

Class 2 - Software Craftsmanship

READING: McConnell, Chapters 33 - 34

  • Writing good code - maintainable, testable, etc.
  • Intellectual humility and avoiding complexity
  • Conventions and Abstractions
  • Continuous Improvement

WEEK 12 (1 and 3 August)

Class 1 - An Overview of Other Software Engineering Methodologies

Reading: McConnell, Chapters 1 - 3

  • Waterfall (BDUF)
  • Prototyping
  • Incremental
  • RAD
  • "Cowboy coding"

Class 2 - Presentations

  • Each group will present their project (~10 min) to the rest of the class
  • SPRINT 5 ENDS