|Instructor||Kyu Hyung Lee
|Times||TR - 12:30 ~ 13:45
W - 12:20 ~ 13:10
|Location||TR - Building: 1061, Room: 1503
W - Building: 1060, Room: 0531
|Office Hours||Thursday 13:45 ~ 15:00 (after class)|
This is the advanced level course on Software Engineering. This course will focus on recent advances in program verification, debugging and maintenance techniques. A large portion of the course will be devoted to topics in testing and debugging of concurrent applications, distributed applications and mobile applications. The goal of this course is to introduce students to fundamentals and current techniques to generate test cases, identify software problems and correct misbehaving programs. At the end, the students are expected to deeply understand the principles, get familiar with the tools, and acquire experience in applying these techniques.
In addition, each student will address relevant research problem in the area covered by the course. Students will choose relevant research problems, propose solutions and present results by the end of the semester.
There is no textbook required. We will read and discuss academic research papers. All of the papers for the class will be available on-line.
Solid programming and debugging skills (C, C++, Linux) and good understanding of “Operating Systems” and “Software Engineering” concepts are required for this class.
2 or 3 small projects will be assigned in lectures. Late submissions will automatically lose 20% of the total point value per 24hour period.
The research project for this course is open-ended. You can pick any topic as long as there is some direct connection to course topics. You can work individually or with a partner. Research project will be evaluated based on creativity, effort, technical correctness, organization of the experiments, and clarity of presentation.
Each student will be responsible for presenting research papers over the semester. Each presenter will prepare a 30-40 minute talk on the paper that he or she presents. Slides for the talk must be emailed to the instructor by midnight before the class. The presenter also leads another 15-20 minutes of discussion during or after the talk. The presenter will prepare discussion questions that lead to a deeper analysis of the paper’s content, strengths, weaknesses, and future works.
|1/20||1. All You Ever Wanted to Know About Dynamic Taint Analysis and Forward Symbolic Execution [S&P 2010]||David Robinson|
|1/21||7. ShadowReplica: Efficient Parallelization of Dynamic Data Flow Tracking [CCS 2013]||Jonathan Myers|
|1/22||3. A Study of Effectiveness of Dynamic Slicing in Locating Real Faults [FSE 2007]||Jienan Liu|
|1/29||11. PathExpander: Architectural Support for Increasing the Path Coverage of Dynamic Bug Detection [MICRO 2006]||David Robinson|
|2/4||Project proposal presentation|
|2/5||Project proposal presentation|
|2/10||13. Locating Faults Through Automated Predicate Switching [ICSE 2006]||Michael Church|
|2/11||Unleashing MAYHEM on Binary Code [S&P 2012]||Guodong Zhu|
|2/12||16. Comparing Static Bug Finders and Statistical Prediction [ICSE 2014]||Sara Vahid|
|2/24||24. ROOT : Replaying Multithreaded Traces with Resource-Oriented Ordering [SOSP 2013]||Michael Church|
|2/25||22. Understanding and detecting real-world performance bugs [PLDI 2012]||Joey Ruberti|
|2/26||25. Toddler: Detecting Performance Problems via Similar Memory-Access Patterns [ICSE 2013]||Jienan Liu|
|3/3||23. CLAP: Recording Local Executions to Reproduce Concurrency Failures [PLDI 2013]||Mostafa Ads|
|Fault Tolerant Systems|
|3/5||33. Automatically Generated Patches as Debugging Aids: A Human Study [FSE 2014]||Arun Kumar|
|3/17||30. Tolerating concurrency bugs using transactions as lifeguards [MICRO 2010]||Mostafa Ads|
|3/18||Project progress presentation|
|3/19||Project progress presentation|
|3/24||32. Automated Concurrency-Bug Fixing [OSDI 2012]||Sara Vahid|
|3/25||29. Rx: Treating Bugs as Allergies - A Safe Method to Survive Software Failures [SOSP 2005]||Joey Ruberti|
|Web, Mobile, Distributed Systems|
|3/31||10. KLEE: Unassisted and Automatic Generation of High-Coverage Tests for Complex Systems Programs [OSDI 2008]||Sara Vahid|
|4/2||49. HYPNOS: Understanding and Treating Sleep Conflicts in Smartphones [EuroSys 2013]||Jonathan Myers|
|4/7||SymDrive: Testing Drivers without Devices||Guodong Zhu|
|4/8||46. Static Analysis for Independent App Developers [OOPSLA 2014]||Arun Kumar|
|4/9||Phosphor: Illuminating Dynamic Data Flow in Commodity JVMs [OOPSLA 2014]||David Robinson|
|4/14||EvoDroid: Segmented Evolutionary Testing of Android Apps [FSE 2014]||David Robinson|
|4/15||35. Characterizing and Detecting Performance Bugs for Smartphone Applications [ICSE 2014]||Mostafa Ads|
|4/21||Project final presentation|
|4/22||Project final presentation|
|4/23||Project final presentation|
We will strictly follow