EdX

How to Code: Complex Data (edX)

How to Code: Complex Data (edX)

Learn how to design more complex programs, using new data structures, abstraction, and generative recursion. As your program requirements get more complex, you will find that simple additions to the design method make it easy to write well-structured and well-tested code that is easy to maintain. By learning how to capture common data and control structures using abstraction, your programs will get shorter and better tested.

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

Building on the core methods from How to Code: Simple Data, this programming course, part of the Software Development MicroMasters program, quickly expands to cover more complex programs on more complex data. Towards the end of the course, you will design programs that even experienced developers would find challenging.
You will also learn how to design search programs. You will design a program to solve Sudoku puzzles, and will be able to design many other puzzle solvers as well.
Learner Testimonial:
"It's a great course and maybe one of the most important topics to master if you're a programmer (any level). This course will teach you how to design better, cleaner and faster programs."

  • Previous Student

What you'll learn:

  • How to identify commonalities in data definitions and functions
  • How to avoid repetition using abstraction
  • How to design functions that operate on graphs
  • How to design programs that search a given problem space to find a valid solution

Prerequisites
How to Code: Simple Data

Go to Class
MOOC List is learner-supported. When you buy through links on our site, we may earn an affiliate commission.

Related Courses

HTML5 Apps and Games (edX) EdX
World Wide Web Consortium - W3C,W3Cx

HTML5 Apps and Games (edX)

Today, developers are increasingly moving from native to HTML5-based apps. Increase your ability to design and deliver innovative services on the Web! Want to learn advanced HTML5 tips and techniques? This is the course for you! Find out more about the powerful Web features that will help you create great content and apps.

Self Paced
Self-Paced
Software Construction: Data Abstraction (edX) EdX
The University of British Columbia,UBCx

Software Construction: Data Abstraction (edX)

Learn powerful data abstraction and decomposition techniques to build large, complex programs. The course begins with the topic of data abstraction - from specification to implementation. Particular attention is given to how to write robust tests using JUnit. Then the course expands on these ideas to explore how type hierarchies and polymorphism can be used to decrease redundancy in your code. The course wraps up with a discussion of how to design robust classes.

Self Paced
Self-Paced
Algorithms and Data Structures Capstone (edX) EdX
University of California, San Diego,UC San DiegoX

Algorithms and Data Structures Capstone (edX)

Synthesize your knowledge of algorithms and biology to build your own software for solving a biological challenge. Building a fully-fledged algorithm to assemble genomes from DNA fragments on a real dataset is an enormous challenge with major demand in the multi-billion dollar biotech industry. In this capstone project, we will take the training wheels off and let you design your own optimized software program for genome sequencing.

Self Paced
Self-Paced
Software Construction: Object-Oriented Design (edX) EdX
The University of British Columbia,UBCx

Software Construction: Object-Oriented Design (edX)

Learn how to design large software systems that solve real-world problems using object-oriented design techniques. By the end of the course, you will have a solid foundation in Java and Object-Oriented Design, as well as many software development concepts that can be applied to any language.

Self Paced
Self-Paced
Python Data Structures (edX) EdX
University of Michigan,MichiganX

Python Data Structures (edX)

The second course in Python for Everybody explores variables that contain collections of data like string, lists, dictionaries, and tuples. Learning how to store and represent and manipulate data collections while a program is running is an important part of learning how to program.

Self Paced
Self-Paced
JavaScript Introduction (edX) EdX
World Wide Web Consortium - W3C,W3Cx

JavaScript Introduction (edX)

Learn JavaScript, a Web development programming language, to add interactivity to your Web pages, and become an expert Web developer. This computer science course is an initiation to JavaScript programming and has been designed to help Web developers have an understanding of the basic concepts of the language. This course was developed in partnership between W3C and University Côte d'Azur.

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
LAFF – On Programming for Correctness (edX) EdX
University of Texas at Austin,UTAustinX

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.

Self Paced
Self-Paced
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 C: Instrucciones de control y ficheros de texto (edX) EdX
Universidad Autonoma de Madrid

Introducción a la programación en C: Instrucciones de control y ficheros de texto (edX)

En este curso aprenderás sobre condicionales, bucles y ficheros de texto en el lenguaje de programación C, uno de los más utilizados. Este curso en línea te permitirá continuar aprendiendo sobre conceptos para desarrollar habilidades de programación en el lenguaje C. Ahora los programas comienzan a cobrar vida y a volverse más interesantes.

Self Paced
Self-Paced