EdX

LAFF – On Programming for Correctness (edX)

LAFF – On Programming for Correctness (edX)

Learn to apply formal methods to systematically develop correct, loop-based programs, an essential skill for computer programmers. Is my program correct? Will it give the right output for all possible permitted inputs? Computers are now essential in everyday life. Incorrect programs lead to frustration in the best case and disaster in the worst. Thus, knowing how to construct correct programs is a skill that all who program computers must strive to master.

Class Deals by MOOC List - Click here and see EdX's Active Discounts, Deals, and Promo Codes.

In this computer science course, we will presents "goal oriented programming" the way Edsger Dijkstra, one of the most influential computer scientists, intended. You will learn how to derive programs hand-in-hand with their proofs of correctness. The course presents a methodology that illustrates goal-oriented programming, starting with the formalization of what is to be computed, and then growing the program hand-in-hand with its proof of correctness. The methodology demonstrates that, for a broad class of matrix operations, the development, implementation, and establishment of correctness of a program can be made systematic.

Since this technique focuses on program specifications, it often leads to clearer, correct programs in less time. The approach rapidly yields a family of algorithms from which you can then pick the algorithm that has desirable properties, such as attaining better performance on a given architecture.
The audience of this MOOC extends beyond students and scholars interested in the domains of linear algebra algorithms and scientific computing. This course shows how to make the formal derivation of algorithms practical and will leave you pondering how our results might extend to other domains.
As a result of support from MathWorks, learners will be granted access to MATLAB for the duration of the course.

What you'll learn

  • Develop assertions describing states in a program.
  • Prove programs correct using logic.
  • Build algorithms using goal-oriented programming techniques.
  • “Slice and dice” to discover families of loop-based algorithms for matrix computations.
Go to Class
MOOC List is learner-supported. When you buy through links on our site, we may earn an affiliate commission.

Related Courses

Lernen objekt-orientierter Programmierung (edX) EdX
Technische Universität München - TUM,TUMx

Lernen objekt-orientierter Programmierung (edX)

Leicht zugänglicher Einstieg in die faszinierende Welt der Informatik und die Programmierung mit Java. Dieser Kurs bietet einen leicht zugänglichen Einstieg in die faszinierende Welt der Informatik. Dabei werden insbesondere die objekt-orientierte Programmierung und einfache Algorithmen behandelt. Sie lernen unter anderem, wie man kleine Programme in der populären Programmiersprache Java schreibt.

Aug 28th 2026
5-12 Weeks
Introducción a la programación en Java: escribiendo buen código (edX) EdX
Universidad Carlos III de Madrid - UC3M,UC3Mx

Introducción a la programación en Java: escribiendo buen código (edX)

¡Aprende programación en Java de forma fácil e interactiva y entra en el fascinante mundo de la computación! Este es un curso introductorio para aprender a programar en Java diseñado para enseñar a escribir "buen" código en este lenguaje de programación, entendiendo como "bueno" aquel que es correcto y eficiente.

Self Paced
Self-Paced
Java Programming Fundamentals (edX) EdX
Galileo University,GalileoX

Java Programming Fundamentals (edX)

Your career as a program developer starts here. Gain entry-level programing skills in Java language, and prepare yourself to handle any task that is required in any programming job. Java is one of the most in-demand programming languages today. This course is designed to provide students the basic skills and knowledge on Java.

Self Paced
Self-Paced
How to Code: Simple Data (edX) EdX
The University of British Columbia,UBCx

How to Code: Simple Data (edX)

Learn systematic program design - how to write programs that tell a clear story about what they do, are well-tested, and easy to improve. This programming course takes a unique approach, as it focuses on learning a systematic programming method rather than a programming language. This practical approach will help you channel your creativity so that you can program well in any language.

Self Paced
Self-Paced
HTML5 Coding Essentials and Best Practices (edX) EdX
World Wide Web Consortium - W3C,W3Cx

HTML5 Coding Essentials and Best Practices (edX)

Learn how to write Web pages and Web sites by mastering HTML5 coding techniques and best practices. HTML5 is the standard language of the Web, developed by W3C. For application developers and industry, HTML5 represents a set of features that people will be able to rely on for years to come. HTML5 is supported on a wide variety of devices, lowering the cost of creating rich applications to reach users everywhere.

Self Paced
Self-Paced
Introduction to Object-Oriented Programming with Java I: Foundations and Syntax Basics (edX) EdX
Georgia Institute of Technology,GTx

Introduction to Object-Oriented Programming with Java I: Foundations and Syntax Basics (edX)

Learn the foundational basics of the Java programming language. This course provides an introduction to the Java programming language. It gives students a foundational overview and history of Java, and students will learn about the language’s basic syntax. At the end, they will be able to develop interactive console programs with basic data processing and formatting capabilities.

Self Paced
Self-Paced
Programación para todos (empezando con Python) (edX) EdX
University of Michigan,MichiganX

Programación para todos (empezando con Python) (edX)

Este curso en línea es una introducción "sin prerrequisitos" a la programación en Python. Aprenderás sobre las variables, la ejecución condicional, la ejecución repetida y cómo usamos las funciones. Este curso de Python tiene el objetivo de enseñar a todos lo básico de la programación de computadoras usando Python. Conocerás cómo construir un programa de una serie de instrucciones simples en Python.

Self Paced
Self-Paced
Introduction to Object-Oriented Programming with Java II: Object-Oriented Programming and Algorithms (edX) EdX
Georgia Institute of Technology,GTx

Introduction to Object-Oriented Programming with Java II: Object-Oriented Programming and Algorithms (edX)

Learn the basics of object-oriented programming and algorithms. Students will build on the skills learned from “Introduction to Object-Oriented Programming with Java I: Foundations and Syntax Basics” and learn the basics of writing classes that serve as blueprints of concepts or objects that are represented in a programming problem. Students will leverage the concepts of inheritance, interfaces, and polymorphism to program reusability and flexibility in classes. Finally, students will gain experience walking through and analyzing algorithms that are applied on data (including objects) in many object-oriented programs.

Self Paced
Self-Paced
Introducción a la programación en C: Funciones y punteros (edX) EdX
Universidad Autonoma de Madrid

Introducción a la programación en C: Funciones y punteros (edX)

En este curso aprenderás cómo hacer programas modulares a través de funciones y punteros en el lenguaje de programación C, uno de los más utilizados. Este curso en línea te permitirá aprender más conceptos para ampliar tus habilidades de programación en el lenguaje C. Ahora resolveremos los problemas de forma modular, dividiendo el código en pequeñas partes definidas como funciones.

Self Paced
Self-Paced
Introduction to Computer Science and Programming (edX) EdX
Tokyo Institute of Technology,TokyoTechX

Introduction to Computer Science and Programming (edX)

The term “Computation” refers to the action performed by a computer. A computation can be a basic operation and it can also be a sophisticated computer simultation requiring a large amount of data and substantial resources. This course aims at introducing learners with no prior knowledge to basics and key concepts of computer science. By following the lectures and exercises of this course you will have an understanding of algorithms and you will get a real experience of programming using the language Ruby.

Self Paced
Self-Paced
Introduction to Object-Oriented Programming with Java III: Exceptions, Data Structures, Recursion, and GUIs (edX) EdX
Georgia Institute of Technology,GTx

Introduction to Object-Oriented Programming with Java III: Exceptions, Data Structures, Recursion, and GUIs (edX)

Learn how to create and use exceptions, data structures, recursion, and graphical user-interfaces (GUIs). This course provides students with the knowledge to handle and even create exceptions to achieve graceful error handling in programs. They will also create and utilize data structures, including lists and files. Students will also learn about recursion and how it can be a useful approach to repetition in a program. Finally, students will learn how to develop basic graphical user interfaces (GUIs) using JavaFX.

Self Paced
Self-Paced
Using Python for Research (edX) EdX
HarvardX,Harvard University

Using Python for Research (edX)

Take your introductory knowledge of Python programming to the next level and learn how to use Python 3 for your research. This course bridges the gap between introductory and advanced courses in Python. While there are many excellent introductory Python courses available, most typically do not go deep enough for you to apply your Python skills to research projects.

Self Paced
Self-Paced