Introduction to Automated Analysis

External: Coursera Courses ↗ · Coursera

Open Course on External: Coursera

Free to audit · Opens on External: Coursera

Introduction to Automated Analysis

Coursera · Beginner ·⚡ Algorithms & Data Structures ·6mo ago

Key Takeaways

Introduces state-of-the-art techniques for automated analysis using approaches to automatically generate tests and prove software meets requirements

Original Description

This course introduces state-of-the-art techniques for automated analysis. Automated analysis encompasses both approaches to automatically generate a very large number of tests to check whether programs meet requirements, and also means by which it is possible to *prove* that software meets requirements and that it is free from certain commonly-occurring defects, such as divide-by-zero, overflow/underflow, deadlock, race-condition freedom, buffer/array overflow, uncaught exceptions, and several other commonly-occurring bugs that can lead to program failures or security problems. The learner will become familiar with the fundamental theory and applications of such approaches, and apply a variety of automated analysis techniques on example programs. After completing this course, a learner will be able to: - Understand the foundations of automated verification: randomization and symbolic representations - Distinguish the strengths and weaknesses of random testing, symbolic analysis, static analysis, and model checking - Use a variety of state-of-the-art static analysis and automated testing tools for automated verification - Create executable requirements as an oracle suitable for automated testing and symbolic analysis - Understand how the choice of oracle affects fault-finding for automated analysis strategies. - Use automated testing to achieve full mutation coverage - Create a test plan that utilizes both manually-written tests and automated tests towards maximizing rigor, minimizing effort and time, and minimizing test costs. This course is intended for learners interested in understanding the principles of automation and the application of tools for analysis and testing of software This knowledge would benefit several typical roles: Software Engineer, Software Engineer in Test, Test Automation Engineer, DevOps Engineer, Software Developer, Programmer, Computer Enthusiast. We expect that you have some familiarity with the Software development Life-Cycle, an
AI explanation not available for this lesson yet
This lesson is still being prepared for the AI tutor. In the meantime, explore lessons that are ready.
Browse explainer-ready lessons →

Related Reads

📰
Trapping Rain Water: Understanding Data Structure Choices from a Beginner’s Perspective
Learn to solve the Trapping Rain Water problem by understanding optimal data structure choices and array traversal techniques
Medium · Programming
📰
The Grid Problem That Looks Easy Until You Need the Lexicographically Smallest Path
Learn to find the lexicographically smallest path in a grid, a problem that seems easy but requires careful consideration of path construction and comparison
Medium · Programming
📰
The Algorithm That’s Practically O(1) — But Provably Isn’t
Learn about an algorithm that behaves like O(1) but isn't, and how to analyze its complexity
Medium · Programming
📰
Knight Attack Made BFS Feel Like a Recipe, Not a Template
Learn how to apply BFS to solve the Knight Attack problem with a Python solution
Medium · Python
Up next
Quant Interview Question #quant
quantprof
Watch →