ECS 260 Software Engineering

Spring 2015

Lecture time: TR 9:00a-10:20a
Location: 1342 Storer Hall
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 10:30a-11:30a
    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 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 agile development, among others.

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

Tentative Course Schedule

Date Topic Readings Homework
3/31 Course Overview No reading assignments due
4/2 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
4/7 Introduction to Testing "Introduction to Software Testing" by P. Ammann and J. Offutt, Chapter 1
    No paper reviews due for this lecture
4/9 Testing Techniques No reading assignments due
4/14 Random Testing
An Empirical Study of the Reliability of UNIX Utilities [Commun. ACM 95]
    Feedback-Directed Random Testing [ICSE'07]
    Paper review due 6:00pm Mon Apr 13th
    List of team members due 11:59pm Tue Apr 14th
Homework #1:
    Black-Box Testing
4/16 Symbolic Execution DART: Directed Automated Random Testing [PLDI'05]
    CUTE: A Concolic Unit Testing Engine for C [FSE'05]
    Paper review due 11:59pm Wed Apr 15th
4/21 Symbolic Execution KLEE: Unassisted and Automatic Generation of High-Coverage Tests for Complex System Programs [OSDI'08]
    Paper review due 11:59pm Mon Apr 20th
Homework #2:
    Testing using KLEE
4/23 Proposal Presentations No reading assignments due
    Project Proposal due 11:59pm Thu Apr 23rd
4/28 No class Work on project and homework #2
4/30 Environment Mocking No reading assignments due
5/5 Guest Lecture Guest Lecture by Bogdan Vasilescu: Measuring Software
    A Metrics Suite for Object Oriented Design [TSE'94]
    Paper review due 11:59pm Mon May 4th
5/7 Model-Based Testing No reading assignments due
5/12 LLVM No reading assignments due
    Bring your laptop!
    Milestone #1 due 11:59pm Tue May 12th
Homework #3: LLVM
5/14 Model Checking Automatic Predicate Abstraction of C Programs [PLDI'01]
    No paper review due
5/19 Delta Debugging Simplifying and Isolating Failure-Inducing Input [TSE'02]
    Hierarchical Delta Debugging [ICSE'06]
    Paper review due 11:59pm Mon May 18th

5/21 Statistical Debugging Statistical Debugging for Performance Problems [OOPSLA'14]
    Paper review due 11:59pm Wed May 20th
5/26 Project Feedback No reading assignments due
    Milestone #2 due 11:59pm Tue May 26th
5/28 Agile Software Development No reading assignments due
6/2 Test Driven Development
    Continuous Integration
Evaluating the Efficacy of Test-driven Development: Industrial Case Studies [ISESE'06]
    Continuous Integration in a Social-Coding World: Empirical Evidence from GITHUB [ICSME'14]
    Paper review due 11:59pm Mon Jun 1st
Project Demo
6/4 Integrated Program Analysis
Tricorder: Building a Program Analysis Ecosystem [ICSE'15]
    No paper review due
6/6 Project Presentations Project Presentations 2:30pm-5:30pm Sat Jun 6th
    Final Project Report due 11:59pm Sat Jun 6th


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