Computer Science
 

Verification and Validation

Verification and Validation
Foundational topics in verification and validation; the application of logic to building correct systems. Covers logics to formally specify properties of systems, verifications of basic systems, and advanced topics in formal verification for complex systems.
C S
486
 Hours3.0 Credit, 3.0 Lecture, 0.0 Lab
 PrerequisitesC S 312
 NoteStudents are allowed 1 repeat of each C S undergraduate course (all 100-, 200-, 300- or 400-level courses). This includes all students who received any grade including those who withdraw (receive a "W" grade) from a C S course. Students must wait 1 semester/term before being allowed to take a course they have failed twice. Petitions for exceptions to the policy can be completed at cs.byu.edu/undergraduate-handbook/retake-policy-cs-courses/.
 TaughtFall
 ProgramsContaining C S 486
Course Outcomes: 

Formally reason about concurrent systems and executions

Formally reason about concurrent systems and executions

Define correctness in concurrent systems

Define basic correctness principles of concurrent systems including deadlock, live-lock, safety, and general liveness.

Analyze concurrent objects for correctness

Use tools to analyze concurrent objects for correctness and performance

Learn best-practices for spin locks and monitors

Learn best-practices for spin locks and monitors

Discuss wait-free versus lock-free implementations

Compare and contrast wait-free and lock-free properties in concurrent objects

Understand and use concurrent data structures

Understand and use concurrent data structures

Correctly use barriers and fences

Correctly use barriers and fences

Have working knowledge of tools and techniques for testing c

Have working knowledge of tools and techniques for testing concurrent programs

Be familiar to libraries to support concurrent programming i

Be familiar to libraries to support concurrent programming in C, C , C#, and Java

Describe future trends in multi-processor programming

Describe future trends in multi-processor programming