EdX

Data Structures and Software Design (edX)

Data Structures and Software Design (edX)

Learn how to select, apply, and analyze the most appropriate data representations in your code and design high quality software that is easy to understand and modify. Knowing how to code is only part of the skills needed to become a professional software developer.

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

This course, part of the CS Essentials for Software Development Professional Certificate program, will take your skills to the next level by teaching you how to write “good” software that appropriately represents and organizes data, is easy to maintain, and is of high quality.
As the purpose of most computer programs is to manipulate data, sometimes large quantities of it, the manner in which programs represent and organize data can have an enormous effect on the simplicity and efficiency of the code. In this course, you will learn about important core data structures such as arrays, lists, stacks, queues, sets, maps, trees, and graphs, and learn how to evaluate them and reason about their behavior and efficiency.
Most importantly, you will learn how to determine which data structure is the most appropriate for solving the problem at hand, and see how to use the implementations that are part of the Java library.
However, choosing the right data structure is only part of the challenge of developing high quality software: you must also consider the design of the classes that use those data structures. You will learn about software design principles such as modularity, functional independence, and abstraction, and apply those concepts toward writing programs that are easy to understand, easy to modify, and easy to test.
Although it is important to know how to write high quality code, professional software developers often spend a majority of their time maintaining existing code. You will also learn about software refactoring techniques for improving the design of existing code, and see how to improve code efficiency.
This course will use Java but the concepts you learn can be applied to almost all modern programming languages.

What you'll learn

  • Efficient means of storing and retrieving data in a Java program
  • How to identify the data structure that best represents the problem at hand
  • Use of the inbuilt Java data structures
  • Assess and improve the quality of software design with respect to object-oriented principles
  • Convert a set of requirements into a high-quality software design
  • How to write efficient code that is easy to read, understand, and modify

Course Syllabus

Week 1: Core Data Structures
Week 2: Advanced Data Structures
Week 3: Software Design
Week 4: Implementing and Improving Software

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

Related Courses

Fundamentals of Python (edX) EdX
SDA_Bocconi,SDA Bocconi School of Management

Fundamentals of Python (edX)

We will equip you with everything you need to properly start using Python in your daily work activities. You will learn how to install Python and work with it through different graphical front-ends. You will then learn how to define objects and how to recognize different characteristics and functionalities. Finally, you will learn how to make Python execute a series of instructions in a sequential order through loops, as well as how to write your own functions.

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

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.

Self Paced
Self-Paced
Data Engineering with Rust (Coursera) Coursera
Duke University

Data Engineering with Rust (Coursera)

Are you a data engineer, software developer, or a tech enthusiast with a basic understanding of Rust, seeking to enhance your skills and dive deep into the realm of data engineering with Rust? Or are you a professional from another programming language background, aiming to explore the efficiency, safety, and concurrency features of Rust for data engineering tasks? If so, this course is designed for you.

Jun 25th 2026
4 Weeks
Data Structures and Algorithm Design Part I | 数据结构与算法设计(上) (edX) EdX
Tsinghua University,TsinghuaX

Data Structures and Algorithm Design Part I | 数据结构与算法设计(上) (edX)

Learn the basics of data structures and methods to design algorithms and analyze their performance. 本课程旨在围绕各类数据结构的设计与实现,揭示其中的规律原理与方法技巧;同时针对算法设计及其性能分析,使学生了解并掌握主要的套路与手段。

Self Paced
Self-Paced
Advanced Data Structures (edX) EdX
New York University,NYUx

Advanced Data Structures (edX)

Learn the advanced programming topics in the C++ programming language, including file processing, linked lists, stacks, queues, trees, binary search trees and tree balancing algorithms. This is the 4th course in the intermediate, undergraduate-level offering that makes up the larger Programming and Data Structures MicroBachelors program.

Self Paced
Self-Paced
Data Structures & Algorithms IV: Pattern Matching, Dijkstra’s, MST, and Dynamic Programming Algorithms (edX) EdX
Georgia Institute of Technology,GTx

Data Structures & Algorithms IV: Pattern Matching, Dijkstra’s, MST, and Dynamic Programming Algorithms (edX)

Delve into Pattern Matching algorithms from KMP to Rabin-Karp. Tackle essential algorithms that traverse the graph data structure like Dijkstra’s Shortest Path. Study algorithms that construct a Minimum Spanning Tree (MST) from a graph. Explore Dynamic Programming algorithms. Use the course visualization tool to understand the algorithms and their performance.

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
Data Structures and Algorithm Design Part II | 数据结构与算法设计(下) (edX) EdX
Tsinghua University,TsinghuaX

Data Structures and Algorithm Design Part II | 数据结构与算法设计(下) (edX)

Learn the basics of data structures and methods to design algorithms and analyze their performance. 本课程旨在围绕各类数据结构的设计与实现,揭示其中的规律原理与方法技巧;同时针对算法设计及其性能分析,使学生了解并掌握主要的套路与手段。

Self Paced
Self-Paced
Basics of Mathematical Modeling of Systems (edX) EdX
National Research Nuclear University MEPhI,MEPhIx

Basics of Mathematical Modeling of Systems (edX)

Basics of scientific visualization in mathematical modeling of systems – the course teaches the basics of scientific visualization of data obtained as a result of mathematical modeling of various systems and processes using C#. The aim of the course is to familiarize the listeners with approaches in scientific visualization of the results obtained from mathematical modeling of various systems and processes using C# with concrete examples.

Self Paced
Self-Paced