CS458 Dynamic Analysis of Software Source Code, Fall 22

Announcement


Administrative Information

  • Instructor: Moonzoo Kim

    Office: 2434 (located at the east wing)
    Phone: 042-350-3543
    E-mail: moonzoo.kim @ gmail.com
    Office hour: Tues 4:00-5:00 PM
    (reservation e-mail is preferred)

  • Teaching assistants: Ahcheong Lee (ahcheong.lee@gmail.com)
  • Lecture hours: Tue/Thur 2:30 - 3:45 PM
  • Lecture room: E3 Rm#2111 (and through Zoom)
    • I plan to make a face-to-face lecture on Tues and an online lecture on Thurs
    • the plan may change later depending on the academic performance of the class participants.
    • Zoom link for Thurs class: https://kaist.zoom.us/j/5258253316
  • Prerequisite: proficiency in C/C++ programming and Linux utilities
    • Due to the high load of TA, TA will not provide help for basic C/C++/Linux questions.
    • Highly recommend to take CS458 after taking CS230 System Programming first
  • Grading: attendance/class participation/quiz: 25%, HW: 50%, final exam:25%
    • You should turn on your web cam when you participate an online class; class attendance will not be counted otherwise.
    • Late HW will be accepted with 10% penalty of the max score in 1 day, 30% penalty of the max score in 3 days. HW will not be accepted after then.
      • Hint: many questions of exams are from the homework.
    • All programming HWs you submit must be able to be replayed by executing a single script file on a TA's server account (i.e., submitted HW should not have a dependency on your home directory, environment, etc.). Also, the replayed execution must demonstrate the same output to the submitted hw. You will get 10% penalty of the max score otherwise.
      • For your programming HWs, you should not use external libraries which are not available on the server machines. If you really need an external library, you have to ask TAs to install it on the server machines.
    • More than 7 absences of the class will get F grade
      • Late attendance shall be counted as 1/3 absence.
      • If a student is not able to attend a class due to an important event (e.g., attending conf., etc.), he/she should submit 1 week prior notice to the professor.
  • The official language in the class is English. All students should submit all written documents such as homework, project reports, exam, etc. in English; 20% penalty of the max score otherwise.
  • Questions and answers can be done through KLMS
  • Excerpts from 강의평가
    • "실질적으로 써먹을 수 있는 내용을 많이 배워서 보람찼습니다"
    • "과제가 많이 어려운것 같았다. 과제에 대한 도움을 수업에서 좀 더 주었으면 좋겠다."

Syllabus

This class covers automated SW testing/verification techniques to detect SW bugs effectively and efficiently. In particular, this class focuses to teach techniques that automatically generate test cases to achieve high code coverage and, thus, to detect many bugs.

The class aims to teach practical applications of advanced testing/verification techniques as well as their underlying algorithms. This class guides students to use various open-source software testing/verification tools through HWs and learn the underlying mechanisms to maximize the performance of automated testing/verification.


Course Material


Course Schedule

Part I: Overview of software complexity and testing

“Software testers do not make software; they only make them better.” – Anonymous

Part II: Source code coverage criteria for effective SW debugging

“It’s hard enough to find an error in your code when you’re looking for it; it’s even harder when you’ve assumed your code is error-free."— Steve McConnell

Part III: Model checking and test oracles

Part IV: Concolic testing (a.k.a., dynamic symbolic execution)

Part V: Verification engine - SAT/SMT solver


Homework Assignments