learning objectives: * define software verification * define software validation * create a formal specification of a simple program * use a tool to perform verification of a simple program activities: * Watch first ~25 minutes of Verification and Validation - MIT OpenCourseWare - MIT 16.842 Fundamentals of Systems Engineering + https://www.youtube.com/watch?v=-63JXElqPaY [1:37:48] + slides: https://ocw.mit.edu/courses/aeronautics-and-astronautics/16-842-fundamentals-of-systems-engineering-fall-2015/lecture-notes/MIT16_842F15_Ses9_Ver.pdf * Read / Watch The verifying compiler: A grand challenge for computing research + https://dl.acm.org/citation.cfm?id=602403 + https://www.gresham.ac.uk/lectures-and-events/the-verifying-compiler-a-grand-challenge-for-computing-research-of-the-21st [50:54] * Read Hacker-Proof Coding + https://cacm.acm.org/magazines/2017/8/219596-hacker-proof-coding/fulltext * Program Verification Activity (http://faculty.cs.tamu.edu/ritchey/courses/csce489/spring20/homework/program_verification_activity.txt) extra: * watch and review any software verification or validation video - post title, link, review on Piazza * create a formal specification in ACSL of any algorithm not in the documentation, implement it, and prove correctness with the WP plug-in of Frama-C - post files and instructions on Piazza assignments: * work on build-it phase of project