College: University of Pennsylvania
Certificate Price: $149
Length: 4 Weeks
Instructors: Chris Murphy

Data Structures and Software Design

Knowing how to code is only part of the skills needed to become a professional software developer.

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.

Similar Courses

Computing for Data Analysis

The modern data analysis pipeline involves collection, preprocessing, storage, analysis, and interactive visualization of data. The goal of this course, part of the Analytics: Essential Tools and Methods MicroMasters program,…

Computer Hardware and Operating Systems

This is a self-paced course that provides an Introduction to Computer Hardware and Operating Systems This course will cover topics including: Fundamentals of system hardware Introduction to OS concepts OS…
C Programming: Advanced Data Types

C Programming: Advanced Data Types

In this course, part of the C Programming with Linux Professional Certificate program, you will define your own data types in C, and use the newly created types to more…
Saving Schools

Saving Schools

This course seeks to answer the question: how did a school system, once the envy of the world, stumble so that the performance in math, science, and reading of U.S.…
The Quantum World

The Quantum World

Welcome to The Quantum World! This course is an introduction to quantum chemistry: the application of quantum theory to atoms, molecules, and materials. You’ll learn about wavefunctions, probability, special notations,…
China and Communism

China and Communism

How did the Communists conquer China? What role does culture play? What are the successes and failures of the Chinese Communist Party after seizing power in 1949? What constitutes liberation?…
Big Data and Education

Big Data and Education

Online and software-based learning tools have been used increasingly in education. This movement has resulted in an explosion of data, which can now be used to improve educational effectiveness and…
Lending

Lending, Crowdfunding, and Modern Investing

In this course, you’ll learn the foundational theories behind robo-advising, crowdfunding, and marketplace lending, and how to apply these theories to optimize your investments. Professor David Musto of the Wharton…