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 only 1 retake of C S 486. This includes students who have failed or withdrawn (received a "W" grade). If after 1 retake, a student needs to retake the course again, the student must wait 1 semester/term before being allowed to take any C S course and must follow the petition process at cs.byu.edu/retake-policy. This policy does not apply to classes dropped before the add/drop deadline. Petitions for exceptions to the policy can be completed at cs.byu.edu/retake-policy.
 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