ECS 260 Software Engineering

Fall 2015


Lecture time: TR 4:40p-6:00p
Location: 2016 Haring
Credits: 4 credits

Instructor Teaching Assistant
Cindy Rubio-González Ching-Lan (Alan) Chen
crubio AT ucdavis DOT edu clchen AT ucdavis DOT edu
TR 6:00p-7:00p
    3039 Kemper Hall
MW 1:00p-2:00p
    55 Kemper Hall

Course Overview

This course will explore concepts and research in the area of software engineering, with particular emphasis on software development, testing and debugging. Topics include black-box testing (boundary value analysis, random testing, differential testing), white-box testing (structural testing, mutation testing, symbolic execution), model checking, automated debugging, and various software development methodologies including agile software development.

Syllabus [PDF]
Lecture slides can be found on the SmartSite page for the class.

Tentative Course Schedule

Date Topic Readings Homework
9/24 Course Overview
    Research Skills
How to Read an Engineering Research Paper by William G. Griswold
    Writing Good Software Engineering Research Papers by Mary Shaw [ICSE'03]
    No paper reviews due for this lecture
9/29 Introduction to Testing "Introduction to Software Testing" by P. Ammann and J. Offutt, Chapter 1
    No paper reviews due for this lecture
10/1 Black-Box Testing No reading assignments due Homework #1:
    Black-Box Testing
10/6 Random Testing
An Empirical Study of the Reliability of UNIX Utilities [Commun. ACM 95]
    Feedback-Directed Random Testing [ICSE'07]
    Paper review due 11:59pm Mon Oct 5th
    List of team members due 11:59pm Tue Oct 6th
10/8 Symbolic Execution DART: Directed Automated Random Testing [PLDI'05]
    Guest Lecture by Daniel DeFreez
    Paper review due 11:59pm Wed Oct 7th
    Homework #1 due 11:59pm Thu Oct 8th
10/13 Symbolic Execution KLEE: Unassisted and Automatic Generation of High-Coverage Tests for Complex System Programs [OSDI'08]
    Paper review due 11:59pm Mon Oct 12th
Homework #2:
    Testing using KLEE
10/15 Guest Lecture Guest Lecture by Bogdan Vasilescu: Distributed Software Development using Git
    When do Changes Induce Failures? [MSR'05]
    Quality and Productivity Outcomes Relating to Continuous Integration in GitHub [FSE'15]
    Paper review due 11:59pm Wed Oct 14th
10/20 Environment Mocking Declarative Mocking [ISSTA'13]
    No paper reviews due for this lecture
10/22 Proposal Presentations No reading assignments due
    Project Proposal due 11:59pm Thu Oct 22nd
10/27 LLVM Tutorial No reading assignments due
    Homework #2 due 11:59pm Tue Oct 27th

10/29 LLVM Tutorial No reading assignments due
    Bring your laptop!
Homework #3: LLVM
11/3 Model-Based Testing No reading assignments due
11/5 Model Checking Automatic Predicate Abstraction of C Programs [PLDI'01]
    No paper reviews due for this lecture
    Milestone #1 due 11:59pm Thu Nov 5th
11/10 Project Feedback No reading assignments due
11/12 Delta Debugging Simplifying and Isolating Failure-Inducing Input [TSE'02]
    Hierarchical Delta Debugging [ICSE'06]
    Paper review due 11:59pm Wed Nov 11th
    Homework #3 due 11:59pm Thu Nov 12th

11/17 Statistical Debugging Scalable Statistical Bug Isolation [PLDI'05]
    Paper review due 11:59pm Mon Nov 16th
11/19 Performance Precimonious: Tuning Assistant for Floating-Point Precision [SC'13]
    No paper reviews due for this lecture
11/24 Agile Software Development No reading assignments due
    Milestone #2 due 11:59pm Tue Nov 24th
Project Demo
11/26 No class Thanksgiving Holiday
12/1 Guest Lecture
Guest Lecture by Eddie Aftandilian from Google: Static Analysis at Google
    Tricorder: Building a Program Analysis Ecosystem [ICSE'15]
    Paper review due 11:59pm Mon Nov 30th
12/3 Extreme Programming No reading assignments due
12/10 Project Presentations Project Presentations 3:30pm-6:15pm Thu Dec 10th
    Final Project Report due 8:00am Fri Dec 11th


Acknowledgments

This course is inspired by software testing and analysis courses designed by Professors Koushik Sen, Tao Xie, and Darko Marinov.