We may earn an affiliate commission when you visit our partners.
Course image
Gail Murphy and Elisa Baniassad

This course, part of the Software Development MicroMasters program, will dig deep into the principles of object oriented design, and introduce new abstraction techniques and design patterns. You will use these techniques to build an application that makes use of popular online services and APIs – the most complex software design project so far.

By the end of the course, you will have a solid foundation in Java and Object-Oriented Design, as well as many software development concepts that can be applied to any language.

Read more

This course, part of the Software Development MicroMasters program, will dig deep into the principles of object oriented design, and introduce new abstraction techniques and design patterns. You will use these techniques to build an application that makes use of popular online services and APIs – the most complex software design project so far.

By the end of the course, you will have a solid foundation in Java and Object-Oriented Design, as well as many software development concepts that can be applied to any language.

Learners who enroll in the Verified track will receive staff grading for the course project and increased interaction with the instructors and staff.

What's inside

Learning objectives

  • How to read and use software design patterns
  • To implement and test an object-oriented design
  • How to develop an application using online services and apis

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Develops proficiency with Java and Object-Oriented Design, which are fundamental to many technical industries
Teaches how to build applications that make use of popular online services and APIs, which is highly relevant for modern software development
Provides students with an opportunity to work on a complex software design project, which is valuable experience for learners who want to work in the field
Learners who enroll in the Verified track will receive staff grading for the course project and increased interaction with the instructors and staff

Save this course

Save Software Construction: Object-Oriented Design to your list so you can find it easily later:
Save

Reviews summary

Disappointing software construction course

Learners say that Software Construction: Object-Oriented Design is unfortunately a disappointing course. The course covers interesting and relevant material, but the lack of substantial lecture and study materials makes it challenging to learn the essential concepts. Despite the accessible nature of the course content, quizzes and the final project demand a higher level of understanding that is not adequately supported by the provided resources.
Quizzes and the final project have high expectations that are not met by the course materials.
"yet required a high level of understanding in some of the quizzes and in the final project."
The course lacks sufficient materials for effective learning.
"I feel like this ended up being a quick summary of the things that were important to software development."
"It glossed over the important concepts without connecting the themes together in a progressive manner..."

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 Construction: Object-Oriented Design with these activities:
Review previous coursework or study materials
Strengthen your foundation by reviewing previous coursework or study materials to refresh your memory and recall important concepts.
Show steps
  • Go through your notes, assignments, and quizzes from previous courses or self-study.
  • Focus on areas where you need reinforcement or want to deepen your understanding.
Review of basic Java concepts
Review the building blocks of Java including data types, control flow, and object-oriented principles to strengthen your foundation.
Browse courses on Java Basics
Show steps
  • Revisit materials from previous Java courses or tutorials.
  • Solve practice problems to test your understanding of Java fundamentals.
Follow online tutorials to learn new techniques
Expand your knowledge and explore new topics by following online tutorials that cover advanced techniques and concepts.
Browse courses on Skill Development
Show steps
  • Identify specific areas where you want to improve your skills.
  • Search for and select reputable online tutorials that align with your learning goals.
Five other activities
Expand to see all activities and additional details
Show all eight activities
Participate in peer study groups or online forums
Engage with peers to discuss course concepts, exchange ideas, and provide mutual support, fostering a better understanding of the material.
Show steps
  • Identify peer study groups or online forums related to the course.
  • Participate actively in discussions, asking questions and sharing insights.
Practice coding design patterns
Reinforce your understanding of design patterns by implementing them in code and testing their effectiveness.
Browse courses on Design Patterns
Show steps
  • Identify common design patterns used in software development.
  • Practice implementing these patterns in your own code.
  • Test your code to verify that it adheres to the design patterns.
Write a blog post summarizing key concepts
Reinforce your understanding and improve your communication skills by summarizing and explaining key concepts from the course in a written form.
Browse courses on Blogging
Show steps
  • Choose a specific topic or concept from the course to focus on.
  • Research and gather information from course materials and other sources.
  • Write a well-structured blog post that clearly explains the topic.
Build an application using APIs and online services
Apply your knowledge of object-oriented design, APIs, and online services by building a functional application.
Browse courses on APIs
Show steps
  • Identify a problem or need that can be addressed with an application.
  • Design the architecture of your application, including the use of APIs and online services.
  • Implement your application in Java, utilizing object-oriented principles.
  • Test your application thoroughly to ensure its functionality and reliability.
Participate in coding competitions or hackathons
Challenge yourself and test your skills by participating in coding competitions or hackathons, applying your knowledge in a competitive environment.
Show steps
  • Find and register for coding competitions or hackathons that align with your interests.
  • Prepare by practicing your coding skills and reviewing relevant course material.
  • Participate in the competition or hackathon and collaborate with others to solve problems.

Career center

Learners who complete Software Construction: Object-Oriented Design will develop knowledge and skills that may be useful to these careers:
Software Developer
Software Developers research, design, code, test, deploy, maintain, and manage software systems. They also ensure that those systems meet the needs of users. With the course's focus on object-oriented design, students can learn to build a strong foundation in software development. The course's emphasis on using online services and APIs can help students develop the practical skills needed to work in the field.
Software Architect
Software Architects design and develop software systems, as well as manage the development process. Software Architects are responsible for the overall design of a software system, including its architecture, components, and interfaces. The course will help you build a foundation in software architecture, which will help you succeed in a career in the technology industry.
IT Architect
IT Architects are responsible for designing, developing, and managing IT systems. They work with clients to understand their business needs and then design and implement systems that meet those needs. The course can help you build a strong foundation in IT architecture. The course's focus on object-oriented design and software development can provide you with the skills and knowledge you need for a successful career in this field.
Software Engineer
Software Engineers design, develop, test, and maintain software systems. While the work done by a Software Engineer will vary depending on what industry a company works in, designing and improving software is always a key component of the role. The course's focus on object-oriented design, which is fundamental to most software design, can help one build a foundation for a career as a Software Engineer. The course's lessons can inform better methods of software design, making these engineers more effective and efficient.
Software Quality Assurance Engineer
Software Quality Assurance Engineers test software to identify and fix defects. They work with developers to ensure that software meets requirements and is of high quality. The course can provide you with a strong foundation in software testing and quality assurance. The course's focus on software development can help you understand the development process and how to test software effectively.
Mobile Application Developer
Mobile Application Developers create, design, and develop mobile applications for smartphones and other mobile devices. These applications can be used for a variety of purposes, such as gaming, productivity, and entertainment. The course can help one develop the skills necessary to design and develop mobile applications and may lead to a successful and long-lasting career in this field.
Software Test Engineer
Software Test Engineers test software to identify and fix defects. They work with developers to ensure that software meets requirements and is of high quality. The course can provide you with a strong foundation in software testing. The course's focus on software development can help you understand the development process and how to test software effectively.
Database Administrator
Database Administrators are responsible for designing, developing, and managing databases. They work with stakeholders to understand their data needs and then design and implement databases that meet those needs. The course will help you develop the skills and knowledge needed to be successful in this role, which can lead to many opportunities.
Data Architect
Data Architects are responsible for designing, developing, and managing data systems. They work with stakeholders to understand their data needs and then design and implement systems that meet those needs. The course will help you develop the skills and knowledge needed to be successful in this role, which can open many doors.
Computer Systems Analyst
Computer Systems Analysts analyze computer systems and design solutions to improve their efficiency and effectiveness. They work with stakeholders to gather requirements and analyze data. The course will help you develop the skills needed to gather and analyze information, design software systems, and present information effectively. These skills are essential for success in a career as a Computer Systems Analyst.
Systems Analyst
Systems Analysts are responsible for understanding the current status of a business and designing ways to improve its efficiency and effectiveness. They work with stakeholders to gather requirements and analyze data. The course will help you develop the skills needed to gather and analyze information, design software systems, and present information effectively. These skills are essential for success in a career as a Systems Analyst.
Computer Programmer
A Computer Programmer translates software designs into instructions that computers can understand. Computer Programmers may work in application software development, system software development, maintenance programming, or web development. This course will help you build a strong background in the foundational principles of computer programming, which will help you succeed in a career that revolves around this subject.
Information Technology Project Manager
Information Technology Project Managers are responsible for planning, executing, and closing IT projects. They work with stakeholders to define project scope, develop project plans and budgets, and track project progress. The course will help you develop the skills in project management which are necessary to succeed in this role.
Web Developer
Web Developers create and maintain websites and web services. Web Developers use their knowledge of programming languages to write code that makes a website interactive. They are responsible for the overall user experience of a website, including design, functionality, and content. As web development is an extremely diverse field, this course may not teach the specific languages that a developer would need for their work; however, the course will provide a solid foundation in the principles of web application development.
Business Analyst
Business Analysts analyze business processes and design solutions to improve their efficiency and effectiveness. They work with stakeholders to gather requirements and analyze data. The course can help you build a foundation in business analysis. The course's focus on software development can help you understand how software can be used to improve business processes.

Reading list

We've selected 25 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 Construction: Object-Oriented Design.
The classic work on design patterns, providing a comprehensive catalog of proven solutions to common software design problems. It must-read for anyone interested in object-oriented design.
A collection of best practices and guidelines for writing effective Java code. It provides practical advice on how to avoid common pitfalls and write code that is maintainable, scalable, and performant.
This classic book is the definitive guide to design patterns. It provides detailed explanations of 23 design patterns, including their purpose, structure, and implementation. It must-read for any software developer who wants to learn about object-oriented design.
A practical guide to writing clean, maintainable, and readable code. It provides a set of principles and practices for writing code that is easy to understand and debug.
A comprehensive reference for the Java programming language. It covers all aspects of Java, from basic syntax to advanced topics such as concurrency and lambda expressions.
A comprehensive and well-respected textbook that covers the fundamentals of object-oriented design and analysis. It provides a solid theoretical foundation and practical guidance, making it a valuable resource for students and professionals alike.
A practical guide to test-driven development (TDD) in Java. It provides a step-by-step approach to writing tests first, then writing code to pass those tests.
Provides a comprehensive overview of design patterns, including creational, structural, and behavioral patterns. It valuable resource for understanding the principles of object-oriented design and how to apply them in practice.
Provides a practical introduction to object-oriented design using Java. It covers the basics of object-oriented design, as well as more advanced topics such as design patterns and refactoring.
Provides a practical introduction to object-oriented design using Java. It covers the fundamental principles of object-oriented programming, including encapsulation, inheritance, and polymorphism. It also provides guidance on how to design and implement object-oriented applications.
Provides a visual and engaging introduction to design patterns. It uses humor and real-world examples to make learning about design patterns fun and easy.
Provides a practical guide to refactoring, which is the process of improving the design of existing code. It covers the basics of refactoring, as well as more advanced techniques for refactoring complex code.
Provides a comprehensive overview of agile software development. It covers the principles, patterns, and practices of agile development, as well as how to apply them to real-world projects.
Provides a practical guide to software architecture. It covers the principles of clean architecture, as well as how to apply them to real-world projects.
Provides a comprehensive guide to domain-driven design, which software design approach that focuses on modeling the domain of the problem being solved.
Provides a comprehensive guide to designing scalable software systems. It covers the principles of scalability, as well as how to apply them to real-world projects.
Provides a behind-the-scenes look at how Google engineers design, build, and maintain their software systems.
Provides a comprehensive guide to software construction. It covers all aspects of software development, from requirements gathering to testing.
Provides a practical guide to continuous delivery. It covers all aspects of continuous delivery, from planning to deployment.
Provides a practical guide to releasing software. It covers all aspects of software release, from planning to deployment.
Provides a comprehensive guide to software testing. It covers all aspects of software testing, from planning to execution.
Provides a practical guide to managing software development teams. It covers a wide range of topics, from team dynamics to conflict resolution.
Classic collection of essays on software engineering. It covers a wide range of topics, from the challenges of managing software projects to the importance of communication.

Share

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

Similar courses

Here are nine courses similar to Software Construction: Object-Oriented Design.
Software Construction: Data Abstraction
Most relevant
Software Engineering: Modeling Software Systems using UML
Most relevant
302: Software Engineeri
Most relevant
Software Engineering: Implementation and Testing
Most relevant
UML and Object-Oriented Design Foundations
Most relevant
Software Creation: Version Control, Debugging, Object...
Most relevant
Introduction to Software Development and Applications
Most relevant
Introduction to Domain Models
Most relevant
Object-Oriented Design
Most relevant
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