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

This is the third course in the Software Development MicroMasters program. You will learn how to build larger and more complex software systems using the Java programming language.

Read more

This is the third course in the Software Development MicroMasters program. You will learn how to build larger and more complex software systems using the Java programming language.

The course begins with the topic of data abstraction - from specification to implementation. Particular attention is given to how to write robust tests using JUnit. Then the course expands on these ideas to explore how type hierarchies and polymorphism can be used to decrease redundancy in your code. The course wraps up with a discussion of how to design robust classes.

By the end of the course, you will have a solid foundation in designing software in Java, and be ready to move onto Software Construction: Object-Oriented Design, where you will learn more complex design patterns and principles designing object-oriented programs.

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

Three deals to help you save

What's inside

Learning objectives

  • How to read and write java programs
  • How to test java programs with junit
  • To build larger software systems using abstraction and decomposition
  • How to specify, implement, use and test a data abstraction

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Examines Java programming language, which is vital in the software development industry
Emphasizes writing robust tests using JUnit, an essential industry tool
Develops skills in building larger and more complex software systems, expanding technical capacity
Taught by Gail Murphy and Elisa Baniassad, esteemed instructors well-regarded in software development
Requires basic knowledge of Java programming, suitable for learners with foundational understanding
Can be challenging for learners completely new to programming, as some background in object-oriented programming concepts may be beneficial

Save this course

Save Software Construction: Data Abstraction to your list so you can find it easily later:
Save

Reviews summary

Java data abstraction

According to students, Software Construction: Data Abstraction is a three-star course that takes a different approach to teaching Java. It teaches the architecture of a Java program before teaching syntax and moves quickly into test-driven development.
This course emphasizes test-driven development.
"It quickly moves on to teach test-driven development."
This course teaches Java architecture before syntax.
"The material teaches the architecture of a Java program before worrying about teaching simple syntax."

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: Data Abstraction with these activities:
Read 'Effective Java'
Gain insights and best practices for writing effective Java code.
Show steps
  • Read the book and take notes
  • Apply the principles and techniques described in the book to your own Java code
Follow Tutorials on Polymorphism in Java
Expand your knowledge of polymorphism by following guided tutorials.
Browse courses on Polymorphism
Show steps
  • Find reputable tutorials on polymorphism in Java
  • Watch the tutorials and take notes
  • Try out the examples provided in the tutorials
Practice with JUnit
Reinforce your understanding of testing by practicing with JUnit.
Browse courses on JUnit
Show steps
  • Find a project that uses JUnit
  • Run the tests
  • Modify the tests and check the results
Five other activities
Expand to see all activities and additional details
Show all eight activities
Discuss Class Design Strategies
Engage with peers to exchange ideas and improve your understanding of class design strategies.
Browse courses on Software Design
Show steps
  • Find a peer or group of peers to discuss with
  • Identify a specific class design problem to discuss
  • Present your own ideas and listen to the ideas of others
  • Work together to develop a better understanding of the problem and potential solutions
Write a Tutorial on Java Data Abstraction
Enhance your understanding of data abstraction and improve your communication skills by writing a tutorial.
Browse courses on Java
Show steps
  • Identify the key concepts of data abstraction
  • Write a clear and concise explanation of these concepts
  • Provide examples and code snippets to illustrate your points
  • Review and edit your tutorial to improve its accuracy and clarity
Design a Robust Class
Apply your knowledge of software design by creating a robust class.
Browse courses on Software Design
Show steps
  • Identify the purpose and requirements of the class
  • Design the class interface and implementation
  • Test the class thoroughly
  • Refactor the class to improve its design and maintainability
Participate in a Java Coding Competition
Challenge yourself and test your skills by participating in a Java coding competition.
Browse courses on Java
Show steps
  • Find a Java coding competition that interests you
  • Study the competition rules and requirements
  • Develop a strategy for approaching the competition problems
  • Practice solving coding problems in Java
  • Participate in the competition and give it your best effort
Contribute to an Open-Source Java Project
Gain practical experience and contribute to the community by working on an open-source Java project.
Browse courses on Open Source
Show steps
  • Find an open-source Java project that interests you
  • Study the project codebase and documentation
  • Identify a bug or feature that you can work on
  • Fork the project and create a pull request with your changes
  • Collaborate with the project maintainers to get your pull request merged

Career center

Learners who complete Software Construction: Data Abstraction will develop knowledge and skills that may be useful to these careers:
Software Engineer
Software Engineers oversee the development of software systems and make sure that they meet the needs of the business. The focus of this course on data abstraction and JUnit testing will provide you with the tools to tackle complex engineering problems and ensure that software behaves as expected.
Software Developer
Software Developers write, maintain, and improve software programs for companies and organizations. This course will help build a foundation in Java, allowing you to get into this field. The course's focus on abstraction and decomposition will help you to break down complex problems into smaller, more manageable parts, a skill essential to Software Developers.
Data Scientist
Data Scientists use data to solve business problems and develop new products and services. The focus of this course on data abstraction and testing will provide you with the skills needed to build complex data models and verify their accuracy, essential skills for Data Scientists.
Data Analyst
Data Analysts collect, clean, and analyze data to help businesses make informed decisions. The focus of this course on data abstraction and test-driven development will provide you with the skills needed to manage large and complex datasets, a key aspect of being a Data Analyst.
IT Architect
IT Architects design and implement technology solutions for businesses. The focus of this course on data abstraction and object-oriented design will provide you with the skills needed to understand complex systems and develop innovative solutions.
Database Administrator
Database Administrators manage and maintain databases, ensuring that they are efficient and reliable. The focus of this course on data abstraction and testing will provide you with the skills needed to design and implement database systems and ensure their integrity.
Software Tester
Software Testers evaluate software to ensure that it meets the needs of the business and is free of defects. The focus of this course on testing with JUnit will provide you with the skills needed to design and execute effective test plans.
Systems Analyst
Systems Analysts study the needs of businesses and develop technology solutions to meet those needs. The focus of this course on data abstraction and object-oriented design will provide you with the skills needed to understand complex business processes and design effective systems.
Quality Assurance Analyst
Quality Assurance Analysts ensure that software meets the quality standards of the business. The focus of this course on testing and data abstraction will provide you with the skills needed to develop and implement quality assurance plans.
Mobile Developer
Mobile Developers design and develop mobile applications. The focus of this course on data abstraction and JUnit testing will provide you with the skills needed to build robust and maintainable mobile applications.
Web Developer
Web Developers design and develop websites and web applications. The focus of this course on data abstraction and JUnit testing will provide you with the skills needed to build robust and maintainable web applications.
User Experience Designer
User Experience Designers design and evaluate the user experience of software products. The focus of this course on data abstraction and testing will provide you with the skills needed to understand user needs and design software that is easy to use.
Computer Network Architect
Computer Network Architects design and implement computer networks. The focus of this course on data abstraction and testing will provide you with the skills needed to understand network protocols and design efficient and reliable networks.
Information Security Analyst
Information Security Analysts protect computer systems and networks from unauthorized access and attacks. The focus of this course on data abstraction and testing will provide you with the skills needed to understand security vulnerabilities and develop security measures.
Project Manager
Project Managers plan and execute projects to ensure that they are completed on time, within budget, and to the required quality. The focus of this course on data abstraction and testing will provide you with the skills needed to understand project requirements and manage project teams.

Reading list

We've selected 18 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: Data Abstraction.
Provides a comprehensive guide to domain-driven design. It covers all of the major principles of domain-driven design, and it includes practical advice and examples.
Collection of best practices for writing Java code. It valuable resource for students and professionals who want to write high-quality, efficient Java code.
Guide to writing clean, maintainable code. It valuable resource for students and professionals who want to write high-quality, easy-to-read code.
Comprehensive guide to software engineering. It covers a wide range of topics, from the software development process to the maintenance of software systems.
Comprehensive guide to object-oriented analysis and design. It covers a wide range of topics, from the basics of object-oriented programming to the design of complex software systems.
Provides a comprehensive and in-depth look at the Java programming language. It covers a wide range of topics, from basic syntax to advanced object-oriented concepts. This content is essential for the course topic related to Java Programming
Provides a comprehensive coverage of data structures and algorithms in Java. It valuable resource for students and professionals who want to learn about the design and implementation of efficient data structures and algorithms.
Provides a comprehensive guide to the Java SE 8 Programmer I certification exam. It covers all of the topics that are covered on the exam, and it includes practice questions and exercises.
Beginner-friendly introduction to Java programming. It great resource for students who are new to Java and want to learn the basics of the language.
Guide to agile software development. It covers a wide range of agile principles, patterns, and practices.
Comprehensive guide to Java concurrency. It covers a wide range of topics, from the basics of concurrency to advanced concepts such as thread pools and locks.
Guide to refactoring code. It covers a wide range of refactoring techniques that can be used to improve the design and quality of code.
Guide to test-driven development (TDD), a software development practice that involves writing tests before writing code.
Provides a comprehensive guide to design patterns. It uses a conversational and humorous style to explain complex concepts.
Provides a comprehensive introduction to the Java programming language. It is written in a clear and concise style and is suitable for beginners.

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: Data Abstraction.
Software Construction: Object-Oriented Design
Most relevant
Object-Oriented Design
Most relevant
The Java Object-Oriented Approach (Java SE 11 Developer...
Most relevant
Fundamentals of Object Oriented Programming in Java
Most relevant
Working with Inheritance (Java SE 8 Programmer I...
Most relevant
SOLID Software Design Principles in Java 8
Most relevant
School Registry using Object Oriented Programming in Java
Most relevant
Introduction to Java Programming – Part 1
Most relevant
Practice Java by Building Projects
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