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

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.

Nov 9th 2026
4 Weeks
Software Design as an Element of the Software Development Lifecycle (Coursera) Coursera
University of Colorado System

Software Design as an Element of the Software Development Lifecycle (Coursera)

This course talks about software development lifecycles a description/prescription for how we write software. Design is a step in this life cycle, and the course explores the implications of this. Design has a role in the life cycle; it is always there, regardless of the kind of life cycle we’re talking about. Why is that? Why was design considered as a step in this life cycle?

Nov 9th 2026
5-12 Weeks
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
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
Computational Thinking for K-12 Educators: Abstraction, Methods, and Lists (Coursera) Coursera
University of California, San Diego

Computational Thinking for K-12 Educators: Abstraction, Methods, and Lists (Coursera)

How do gamers cause things to happen when they hit buttons on their controller? How does the computer keep track of gamer's scores? This class teaches the concepts of nested loops, events, and variables. For each concept, we'll start by helping you connect real-world experiences you are already familiar with to the programming concept you are about to learn. Next, through a cognitively scaffolded process we'll engage you in developing your fluency with problem solving with nested loops, events, and variables in a way that keeps frustration at a minimum.

Nov 4th 2026
5-12 Weeks
Software Engineering: Software Design and Project Management (Coursera) Coursera
The Hong Kong University of Science and Technology - HKUST

Software Engineering: Software Design and Project Management (Coursera)

Software Development Life Cycle (SDLC) is the process of developing software through planning, requirement analysis, design, implementation, testing, and maintenance. This course focuses on the project planning and analysis/design phases of SDLC, and you will learn about different architectural patterns and design patterns to solve common problems in software design. It covers project planning, scheduling, and cost estimating, which are the principal tasks of software project managers.

Nov 9th 2026
3 Weeks
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.

Nov 2nd 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.

Nov 23rd 2026
5-12 Weeks
Data Connection and Functionalities in Power BI (Coursera) Coursera
Edureka

Data Connection and Functionalities in Power BI (Coursera)

Welcome to the course on Data Connection and Functionalities in Power BI. This course is strategically crafted to empower you with the skills needed to construct a robust database and efficiently manage intricate datasets using MS SQL Server. Throughout this course, you will acquire the expertise to develop well-formatted database that are seamlessly designed to integrate with Power BI.

Nov 2nd 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.

Nov 9th 2026
4 Weeks
Database Design and Basic SQL in PostgreSQL (Coursera) Coursera
University of Michigan

Database Design and Basic SQL in PostgreSQL (Coursera)

In this course you will learn more about the historical design of databases and the use of SQL in the PostgreSQL environment. Using SQL techniques and common commands (INSERT INTO, WHERE, ORDER BY, ON DELETE CASCADE, etc) will enable you to create tables, column types and define the schema of your data in PostgreSQL. You will learn about data modeling and how to represent one-to-many and many-to-many relationships in PostgreSQL.

Nov 9th 2026
Self-Paced