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

Verification and Synthesis of Autonomous Systems (Coursera) Coursera
University of Colorado Boulder

Verification and Synthesis of Autonomous Systems (Coursera)

This course will provide different techniques on the verification of autonomous systems against stability, regular, or omega-regular properties. Such techniques include Lyapunov theories, reachability analysis, barrier certificates, and model checking. Finally, it will introduce several techniques on designing controllers enforcing properties of interest over the original autonomous systems.

Aug 17th 2026
4 Weeks
Programación en Python (Coursera) Coursera
Universidad de los Andes

Programación en Python (Coursera)

¡Te damos la bienvenida al curso de Programación en Python de la Universidad de los Andes! El propósito de este curso es ofrecerte un ambiente interactivo para que desarrolles tus habilidades de pensamiento computacional, aprendas a programar en el lenguaje Python y te entrenes en la resolución de problemas utilizando un computador. La estrategia pedagógica empleada es el aprendizaje activo basado en casos.

Aug 31st 2026
4 Weeks
The Software Architect Code: Building the Digital World (edX) EdX
Universidad Carlos III de Madrid - UC3M,UC3Mx

The Software Architect Code: Building the Digital World (edX)

An introductory course aimed at helping you to discover and develop your software talents to succeed within the digital world. Enhance your software skills and capabilities from a software innovation perspective. Do you have a career in the software industry? Are you a founder of a technical startup or even a business executive willing to know what kind of qualified job applicants do you need to recruit? Or are you a software developer who want to unveil your skills in order to build innovative software products with added value? Join us for this 8-week course to find out.

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
More C# Programming and Unity (Coursera) Coursera
University of Colorado System

More C# Programming and Unity (Coursera)

This course is the second course in the specialization about learning how to develop video games using the C# programming language and the Unity game engine on Windows or Mac. Why use C# and Unity instead of some other language and game engine? Well, C# is a really good language for learning how to program and then programming professionally. Also, the Unity game engine is very popular with indie game developers; Unity games were downloaded 16,000,000,000 times in 2016! Finally, C# is one of the programming languages you can use in the Unity environment.

Aug 17th 2026
4 Weeks
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.

Aug 10th 2026
4 Weeks
Data Modeling and Applications (Coursera) Coursera
Illinois Tech

Data Modeling and Applications (Coursera)

This course introduces the student to the use of a database management system to provide the software and database necessary to upgrade a DBMS system. Database structures, applications, network, relational and hierarchical data models, applicate programs development, query systems, file security, and the role of the database administrator will be studied. A course fee may apply.

Aug 31st 2026
5-12 Weeks
Software Design Threats and Mitigations (Coursera) Coursera
University of Colorado System

Software Design Threats and Mitigations (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.

Aug 17th 2026
5-12 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.

Aug 17th 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.

Aug 17th 2026
4 Weeks
Software Architecture (Coursera) Coursera
University of Alberta

Software Architecture (Coursera)

The way that software components — subroutines, classes, functions, etc. — are arranged, and the interactions between them, is called architecture. In this course you will study the ways these architectures are represented, both in UML and other visual tools. We will introduce the most common architectures, their qualities, and tradeoffs. We will talk about how architectures are evaluated, what makes a good architecture, and an architecture can be improved. We'll also talk about how the architecture touches on the process of software development.

Aug 10th 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!

Jul 6th 2026
4 Weeks