Software Design as an Abstraction (Coursera)

Software Design as an Abstraction (Coursera)

The design step in developing software has some unique characteristics. First of all, it’s the only step where drawing pictures of things is the norm. Why is that? What do pictures do that other representations cannot do? Pictures have varying levels of detail; pictures have context. Pictures…paint a picture. Why are these things important? In this course, too, we begin looking at other disciplines (building architecture is a favorite one) for lessons on design.

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

Course 2 of 4 in the Secure Software Design Specialization

Syllabus

WEEK 1
Who needs abstractions?
Contrasted to design as a step in the software development process, a look at design as an abstract representation of the project.

WEEK 2
Focus on the Users
Design considerations to make when users are involved.

WEEK 3
What if there are no users?
Design considerations to make when users are not involved

WEEK 4
Advanced database design
When to create a database in third-normal form, and when not to.

WEEK 5
The Good and Bad of Design Patterns
When and how design patterns are useful and when they are not.

WEEK 6
Language choices
Choose languages and operating systems wisely because you will have to live with them.

WEEK 7
Final Exam
A comprehensive course assessment comprising of 5 quizzes. Each assessment contains a randomized set of questions from different modules of the course.

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

Related Courses

Introduction to Software Development and Applications (Coursera) Coursera
Northeastern University

Introduction to Software Development and Applications (Coursera)

The primary objectives of this course are to introduce software engineering techniques and their application to real-world business problems. You will be equipped with practical design and programming techniques for the purpose of modeling significant business applications quickly.

Jun 29th 2026
4 Weeks
Computer Applications of Artificial Intelligence and e-Construction (edX) EdX
Purdue University,PurdueX

Computer Applications of Artificial Intelligence and e-Construction (edX)

Learn the fundamentals of artificial intelligence, machine learning, natural language processing and their applications in e-Construction. This course is the third in a sequence of interrelated courses of the current computer applications in the construction industry. The emphasis of this course is the advanced computational tools including artificial intelligence, machine learning, and natural language processing, and their applications in e-Construction.

Mar 28th 2022
5-12 Weeks
Programming Reactive Systems (Scala 2 version) (Coursera) Coursera
École Polytechnique Fédérale de Lausanne

Programming Reactive Systems (Scala 2 version) (Coursera)

Reactive programming is a set of techniques for implementing scalable, resilient and responsive systems as per the Reactive Manifesto. Such systems are based on asynchronous message-passing, and their basic building-blocks are event handlers. This course teaches how to implement reactive systems in Scala and Akka by using high-level abstractions, such as actors, asynchronous computations, and reactive streams.

Jun 15th 2026
5-12 Weeks
CS50's Introduction to Computer Science (edX) EdX
HarvardX,Harvard University

CS50's Introduction to Computer Science (edX)

An introduction to the intellectual enterprises of computer science and the art of programming. This is CS50, Harvard University's introduction to the intellectual enterprises of computer science and the art of programming for majors and non-majors alike, with or without prior programming experience. An entry-level course taught by David J. Malan, CS50 teaches students how to think algorithmically and solve problems efficiently.

Self Paced
Self-Paced
Object-Oriented Design (Coursera) Coursera
University of Alberta

Object-Oriented Design (Coursera)

This course takes Java beginners to the next level by covering object-oriented analysis and design. You will discover how to create modular, flexible, and reusable software, by applying object-oriented design principles and guidelines. And, you will be able to communicate these designs in a visual notation known as Unified Modelling Language (UML). You will be challenged in the Capstone Project to apply your knowledge of object-oriented design by evolving and documenting the Java codebase for an Android application with corresponding UML documentation.

Jun 29th 2026
4 Weeks
Design Patterns (Coursera) Coursera
University of Alberta

Design Patterns (Coursera)

This course extends object-oriented analysis and design by incorporating design patterns to create interactive applications. Through a survey of established design patterns, learners will gain a foundation for more complex software applications. Finally, learners will identify problematic software designs by referencing a catalog of code smells. You will be challenged in the Capstone Project to redesign an existing Java-based Android application to implement a combination of design patterns. You will also critique a given Java codebase for code smells.

Jun 29th 2026
4 Weeks
Engineering Practices for Building Quality Software (Coursera) Coursera
University of Minnesota

Engineering Practices for Building Quality Software (Coursera)

Agile embraces change which means that team should be able to effectively make changes to the system as team learns about users and market. To be good at effectively making changes to the system, teams need to have engineering rigor and excellence else embracing change becomes very painful and expensive. In this course, you will learn about engineering practices and processes that agile and traditional teams use to make sure the team is prepared for change. In additional, you will also learn about practices, techniques and processes that can help team build high quality software. You will also learn how to calculate a variety of quantitative metrics related to software quality.

Jun 22nd 2026
4 Weeks
Relational Database Design (Coursera) Coursera
University of Colorado Boulder

Relational Database Design (Coursera)

Have you ever wanted to build a database but don't know where to start? This course will provide you a step-by-step guidance. We are going to start from a raw idea to an implementable relational database. Getting on the path, practicing the real-life mini cases, you will be confident and comfortable with Relational Database Design. Let's get started!

Jun 29th 2026
4 Weeks
Java Programming: Principles of Software Design (Coursera) Coursera
Duke University

Java Programming: Principles of Software Design (Coursera)

Solve real world problems with Java using multiple classes. Learn how to create programming solutions that scale using Java interfaces. Recognize that software engineering is more than writing code - it also involves logical thinking and design. By the end of this course you will have written a program that analyzes and sorts earthquake data, and developed a predictive text generator.

Jun 22nd 2026
4 Weeks
Introduction to Structured Query Language (SQL) (Coursera) Coursera
University of Michigan

Introduction to Structured Query Language (SQL) (Coursera)

In this course, you'll walk through installation steps for installing a text editor, installing MAMP or XAMPP (or equivalent) and creating a MySql Database. You'll learn about single table queries and the basic syntax of the SQL language, as well as database design with multiple tables, foreign keys, and the JOIN operation. Lastly, you'll learn to model many-to-many relationships like those needed to represent users, roles, and courses.

Jun 22nd 2026
4 Weeks
The Nature of Data and Relational Database Design (Coursera) Coursera
University of California, Irvine

The Nature of Data and Relational Database Design (Coursera)

This course provides a comprehensive overview of data, various data types, design of databases for storage of data, and creation and manipulation of data in databases using SQL. By the end of this course, students will be able to describe what business intelligence is and how it’s different from business analytics and data science, conduct a basic descriptive statistical analysis and articulate the findings, and differentiate between types of statistics. They will also be able to define normalization and ETL, create an ERD that shows progression from conceptual to logical to physical design, define DDL, DML, DCL, and TCL, and write SQL scripts to create a database and associated tables.

Jun 29th 2026
4 Weeks
Database Management Essentials (Coursera) Coursera
University of Colorado System

Database Management Essentials (Coursera)

Database Management Essentials provides the foundation you need for a career in database development, data warehousing, or business intelligence, as well as for the entire Data Warehousing for Business Intelligence specialization. In this course, you will create relational databases, write SQL statements to extract information to satisfy business reporting requests, create entity relationship diagrams (ERDs) to design databases, and analyze table designs for excessive redundancy.

Jun 29th 2026
5-12 Weeks