- Instructor: Sunbeom So
- Location: EECS B201
- Time: Mon/Wed 16:00-17:30
Software Engineering is an engineering discipline that is concerned with all aspects of SW production process. In particular, SW validation is highly important in the SW process due to the prevalence of SW errors, comprising more than half of the SW development cost. Our focus in this course is to study program analysis methods, which are fundamental and modern technologies that can effectively help the SW validation process.
We will use OCaml programming language for our programming exercises. This instruction assumes that you are using the Linux command line interface.
To install OCaml, simply copy and run the following commands in the terminal.
$ chmod +x setup/install_ocaml_mac.sh; ./setup/install_ocaml_mac.sh; eval $(opam env)
To install OCaml, simply copy and run the following commands in the terminal. I checked that the following commands successfully work for the clean docker image python:3.9.19-slim
.
$ chmod +x setup/install_ocaml_ubuntu.sh; ./setup/install_ocaml_ubuntu.sh; eval $(opam env)
For Windows users, I recommend using WSL.
- WSL setup: We provide a PDF guideline that explains how to install WSL and how to share files between the host OS and the guest OS.
- script: For running this installation script, please refer to p.02 of the above PDF guideline.
After setting up WSL, simply copy and run the following commands in the terminal to install OCaml.
$ chmod +x setup/install_ocaml_ubuntu.sh; ./setup/install_ocaml_ubuntu.sh; eval $(opam env)
To install Z3, simply copy and run the following commands in the terminal.
$ chmod +x setup/install_z3.sh; ./setup/install_z3.sh
$ ocaml --version
The OCaml toplevel, version 5.1.1
$ z3 --version
Z3 version 4.13.0 - 64 bit
By registering for this course, I will assume you agree with the policy below.
- All assignments (i.e., writing code) must be your own work. No discussions are allowed.
- You should not share/show your code.
- You should not post your code on public websites.
- You should not modify other students’ code.
- I will have a one-on-one meeting with each student under suspicion. If you fail to prove your integrity in the meeting (e.g., failing to answer my questions about the details of your submissions), I will consider that you committed academic misconduct, even if you do not admit to your cheating.
- Cheating on assignments will result in an F.
My lecture slides are based on those from the following courses. I sincerely appreciate their authors for providing materials that have greatly enhanced the quality of this course.
- AAA615:Formal Methods and COSE212:Programming Languages courses taught by Prof. Hakjoo Oh at Korea University
- CS398L:Automated Logical Reasoning course taught by Prof. Isil Dillig at UT Austin
- CIS547:Software Analysis course taught by Prof. Mayur Naik at UPenn