We may earn an affiliate commission when you visit our partners.
Course image
Reid Holmes

This course, part of the Software Development MicroMasters Program, introduces how teams design, build, and test multi-version software systems.

Read more

This course, part of the Software Development MicroMasters Program, introduces how teams design, build, and test multi-version software systems.

You will learn software engineering principles that are applicable to the breadth of large-scale software systems. The course explores topics such as agile development, REST and Async programming, software specification, design, refactoring, information security, and more.

By the end of this course, learners will work in teams, applying an agile software development process to specify, design, and test multiple versions of complex software systems.

Learners who enroll in the Verified track will receive staff grading and increased interaction with the instructor and staff.

What you'll learn

  • How to build a non-trivial software system using an agile approach in a pair or team
  • Techniques for specifying the functional and non-functional aspects of a software system
  • Techniques for designing and testing a software system
  • The role of refactoring in building a quality system

Three deals to help you save

What's inside

Learning objectives

  • How to build a non-trivial software system using an agile approach in a pair or team
  • Techniques for specifying the functional and non-functional aspects of a software system
  • Techniques for designing and testing a software system
  • The role of refactoring in building a quality system

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Taught by experienced instructors who are recognized for their work in the field of software engineering
Develops strong foundational skills including specification, design, and testing of software systems
Emphasizes an agile software development approach, which is widely used in industry
Involves hands-on project work, providing learners with practical experience in building software systems
Covers a range of topics relevant to modern software development, including REST and Async programming and information security
Provides staff grading and increased interaction with the instructor and staff in the Verified track

Save this course

Save Software Engineering: Introduction to your list so you can find it easily later:
Save

Reviews summary

Introductory software engineering course

Learners say this introductory software engineering course leaves much to be desired. This is primarily due to difficult exams which are seen as unfair and overly stressful given that learners must also contend with a capstone project. One student even accuses the instructor of not teaching to the class' level.
The instructor is not very good.
"I feel like he is teaching to himself instead teaching to students at their level!"
Exams are too hard.
"Exam is terrible impossible to pass, unbelievable."

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Software Engineering: Introduction with these activities:
Find a mentor in the software development field
Finding a mentor will give you the opportunity to learn from someone who has experience in the field and can provide guidance.
Show steps
  • Identify potential mentors
  • Reach out to your potential mentors and ask for their guidance
Follow a tutorial on agile software development
Following a tutorial on agile software development will help you learn the basics of agile methodologies.
Show steps
  • Find a tutorial on agile software development
  • Follow the tutorial and complete the exercises
Read 'Clean Code'
Reading 'Clean Code' will help you learn best practices for writing clean and maintainable code.
View CLEAN CODE on Amazon
Show steps
  • Get a copy of the book
  • Read the book and take notes
  • Apply the principles you learn to your own code
Three other activities
Expand to see all activities and additional details
Show all six activities
Join a study group
Joining a study group will allow you to collaborate with other students, share knowledge, and get support.
Show steps
  • Find a study group or start your own
  • Meet regularly with your group to discuss the course material
  • Work together on assignments and projects
Attend a software development workshop
Attending a software development workshop will give you the opportunity to learn from experts in the field and get hands-on experience.
Show steps
  • Find a software development workshop that is relevant to your interests
  • Register for the workshop
  • Attend the workshop and participate in the activities
Build a simple software application
Building a software application will help you apply the principles you learn in the course to a real-world project.
Browse courses on Software Development
Show steps
  • Define the scope of your application
  • Design the architecture of your application
  • Develop the code for your application
  • Test and debug your application
  • Deploy your application

Career center

Learners who complete Software Engineering: Introduction will develop knowledge and skills that may be useful to these careers:
Software Developer
Software Developers create, install, and support computer applications. They both write code and test the functioning of applications. By learning the concepts of agile development, design, and testing from this course, Software Developers are better equipped to perform their responsibilities.
Software Engineer
Software Engineers use engineering principles to analyze and design software. They write code, test, and debug software applications for various domains. This course's focus on topics like REST and async programming, design, and refactoring is useful for Software Engineers as this knowledge builds a foundation to create quality software systems.
Systems Architect
Systems Architects design, develop, and implement software systems. They are responsible for the overall architecture of a system, including its hardware, software, and network components. This course offers a solid understanding of software design principles to Systems Architects.
Information Security Analyst
Information Security Analysts plan and implement security measures to protect an organization's computer networks and systems. This course introduces information security as a topic relevant to the design and development of quality software.
Quality Assurance Analyst
Quality Assurance Analysts test and evaluate software applications to ensure they meet quality standards. The topics such as software specification, testing, and refactoring covered in this course provide a solid basis for Quality Assurance Analysts to carry out their responsibilities.
Computer Programmer
Computer Programmers write, test, and maintain the code that makes software and applications run. By having a grasp of agile development, design, and testing techniques from this course, Computer Programmers can better develop and maintain high-quality software.
Web Developer
Web Developers design and create websites. They use a variety of programming languages and technologies to create interactive and user-friendly websites. Knowledge of topics such as agile development, REST and async programming, and software design covered in this course may be useful for Web Developers.
IT Project Manager
IT Project Managers plan, execute, and close IT projects. They work with stakeholders to define project scope, develop project plans, and manage project resources. This course can be useful for IT Project Managers, as it provides an introduction to the principles of software engineering, which are commonly used in IT projects.
Database Administrator
Database Administrators maintain and manage databases. They ensure that data is stored, organized, and protected in a way that meets the needs of the organization. This course may be useful for Database Administrators as it introduces principles of software specification, design, and testing which are relevant to database management.
Systems Analyst
Systems Analysts analyze and design computer systems. They work with users to understand their needs and develop systems that meet those needs. An understanding of software engineering principles covered in this course helps Systems Analysts design and develop effective computer systems.
Technical Writer
Technical Writers create documentation for software and other technical products. They explain complex technical information in a clear and concise way. This course offers valuable insights into the software development process, which is important for Technical Writers to effectively document software products.
Software Tester
Software Testers test software applications to ensure that they are working properly. They identify and report bugs, and they work with developers to fix them. Since this course discusses software testing, it may be useful for Software Testers in improving their testing process.
Network Administrator
Network Administrators manage and maintain computer networks. They ensure that networks are running smoothly and that data is transmitted securely. Knowledge of software engineering principles from this course may be beneficial for Network Administrators in terms of understanding the software applications and systems running on the networks they manage.
Data Analyst
Data Analysts collect, analyze, and interpret data. They use data to solve problems and make informed decisions. While this course does not directly focus on data analysis, the principles of software engineering, such as design and testing, can be applied to data analysis tasks.
Business Analyst
Business Analysts analyze and document business processes. They work with stakeholders to understand their needs and develop solutions that improve business performance. This course offers a general understanding of software engineering, which may be useful for Business Analysts who work on projects involving software development.

Reading list

We've selected 26 books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Software Engineering: Introduction.
Must-read for anyone who wants to write clean and maintainable code. It covers a wide range of topics, from naming conventions to refactoring techniques.
Classic in the software refactoring field and must-read for any software engineer who wants to learn about refactoring techniques. It covers a wide range of refactoring techniques, from simple refactoring to complex refactoring.
Provides a comprehensive overview of agile software development principles, patterns, and practices. It valuable resource for anyone who wants to learn more about agile development and how to apply it to their own projects.
Classic in the software design field and must-read for any software engineer who wants to learn about design patterns. It covers a wide range of design patterns, from creational patterns to behavioral patterns.
This classic software engineering textbook provides a comprehensive overview of the field, covering topics such as requirements engineering, design, implementation, testing, and maintenance.
Provides a practical guide to agile software development, covering topics such as Scrum, Kanban, and Test-Driven Development. It valuable resource for anyone looking to learn more about agile development.
Classic in the software engineering field and must-read for any software engineer who wants to learn about the best practices of software development. It covers a wide range of topics, from coding best practices to project management.
Classic in the software testing field and must-read for any software engineer who wants to learn about the best practices of software testing. It covers a wide range of topics, from test planning to test execution.
Classic in the software design field and must-read for any software engineer who wants to learn about domain-driven design. It covers a wide range of topics, from domain-driven design principles to domain-driven design patterns.
Classic in the software architecture field and must-read for any software engineer who wants to learn about the best practices of software architecture. It covers a wide range of topics, from software architecture principles to software architecture patterns.
Great introduction to continuous delivery for software engineers of all levels. It covers the basics of continuous delivery, from setting up a continuous integration server to deploying code to production.
Classic in the software engineering field and must-read for any software engineer who wants to learn about the challenges of software development. It covers a wide range of topics, from the software development process to the management of software projects.
Classic in the software engineering field and must-read for any software engineer who wants to learn about the human side of software development. It covers a wide range of topics, from the importance of teamwork to the challenges of managing software projects.
Great introduction to design patterns for software engineers of all levels. It covers a wide range of design patterns, from creational patterns to behavioral patterns.
Great introduction to test-driven development for software engineers of all levels. It covers the basics of test-driven development, from writing test cases to refactoring code.
Great introduction to site reliability engineering for software engineers of all levels. It covers the basics of site reliability engineering, from the SRE mindset to the SRE toolkit.
Classic in the field of software design, providing a catalog of reusable design patterns that can be applied to a wide variety of software development projects.
Provides a set of principles and practices for writing clean and maintainable code.
This classic book provides a collection of essays on software engineering, covering topics such as project management, team dynamics, and the nature of software development.
Provides a practical guide to DevOps, a software development approach that emphasizes collaboration between development and operations teams.
Provides a comprehensive guide to software architecture, covering topics such as architectural patterns, design principles, and trade-offs.
This classic textbook provides a comprehensive introduction to algorithms, covering topics such as data structures, sorting, searching, and graph algorithms.
This textbook provides a comprehensive introduction to data structures and algorithms in Java, covering topics such as arrays, lists, stacks, queues, trees, and graphs.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Here are nine courses similar to Software Engineering: Introduction.
Engineering Practices for Building Quality Software
Most relevant
The Agile Samurai Bootcamp
Most relevant
GenAI for Software Engineering Teams
Most relevant
Scrum Development with Jira & JIRA Agile
Design a Remote Sprint to Test Prototypes in Miro
End-to-end Software Development with Team Foundation...
Agile Conversations: Why Generalizing Specialists Matter...
Web Application Development: Basic Concepts
Agile Explained
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2024 OpenCourser