Software Construction: Data Abstraction

Provided by:
9/10 stars
based on  32 reviews
Provided by:
Cost FREE , Add a Verified Certificate for $125
Start Date In Session

Course Details

Cost

FREE,
Add a Verified Certificate for $125

Upcoming Schedule

  • In Session

Course Provider

edX online courses
Harvard University, the Massachusetts Institute of Technology, and the University of California, Berkeley, are just some of the schools that you have at your fingertips with edX. Through massive open online courses (MOOCs) from the world's best universities, you can develop your knowledge in literature, math, history, food and nutrition, and more. These online classes are taught by highly-regarded experts in the field. If you take a class on computer science through Harvard, you may be tau...
Harvard University, the Massachusetts Institute of Technology, and the University of California, Berkeley, are just some of the schools that you have at your fingertips with edX. Through massive open online courses (MOOCs) from the world's best universities, you can develop your knowledge in literature, math, history, food and nutrition, and more. These online classes are taught by highly-regarded experts in the field. If you take a class on computer science through Harvard, you may be taught by David J. Malan, a senior lecturer on computer science at Harvard University for the School of Engineering and Applied Sciences. But there's not just one professor - you have access to the entire teaching staff, allowing you to receive feedback on assignments straight from the experts. Pursue a Verified Certificate to document your achievements and use your coursework for job and school applications, promotions, and more. EdX also works with top universities to conduct research, allowing them to learn more about learning. Using their findings, edX is able to provide students with the best and most effective courses, constantly enhancing the student experience.

Provider Subject Specialization
Sciences & Technology
Business & Management
22830 reviews

Course Description

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 interacti...

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.

Software Construction: Data Abstraction course image
Reviews 9/10 stars
32 Reviews for Software Construction: Data Abstraction

Ratings details

  • 5 stars
  • 4 stars
  • 3 stars
  • 2 stars
  • 1 stars
  • 5 stars
  • 4 stars
  • 3 stars
  • 2 stars
  • 1 stars
  • 5 stars
  • 4 stars
  • 3 stars
  • 2 stars
  • 1 stars

Rankings are based on a provider's overall CourseTalk score, which takes into account both average rating and number of ratings. Stars round to the nearest half.

Sort By
Michel M profile image
Michel M profile image

Michel M

10/10 starsTaking Now
2 years, 6 months ago
Although this course uses Java, it is not a basic course in the language. Instead, it uses Java to introduce Object Oriented Programming (OOP). For this reason, I much prefer this approach. After taking this course, I feel I understand the principles of OOP in quite a lot of detail and can apply them to my own work. In the process, I have reviewed some of basics of Java. For instance, in the first module, instead of learning how to print "Hello World", you learn how to walk through an existing, well designed project, with classes stored in modules representing logical abstractions of the problem set. You look at the class hierarchy, the way the methods call each other and create objects, and the flow through the program, without needing to understanding much about Java. This provides you with an excellent introduction. In the real world, programmers can spend much more time working on existing programs than create them from scrat... Although this course uses Java, it is not a basic course in the language. Instead, it uses Java to introduce Object Oriented Programming (OOP). For this reason, I much prefer this approach. After taking this course, I feel I understand the principles of OOP in quite a lot of detail and can apply them to my own work. In the process, I have reviewed some of basics of Java. For instance, in the first module, instead of learning how to print "Hello World", you learn how to walk through an existing, well designed project, with classes stored in modules representing logical abstractions of the problem set. You look at the class hierarchy, the way the methods call each other and create objects, and the flow through the program, without needing to understanding much about Java. This provides you with an excellent introduction. In the real world, programmers can spend much more time working on existing programs than create them from scratch. Later in the course, you learn enough Java to learn to create simple applications, without being distracting by the graphical interface or web concepts. But it is the OOP concepts that are more important: abstraction, types, classes, interfaces, polymorphism, inheritance, overriding, etc. There are many well-built examples inspired by the real world as opposed to contrived examples created just to make a point. Some of these, you just walk through. In some others, you just make changes and observe the resulting behavior. In the rest, you actually write all the code. The instructor is extremely communicative and enthusiastic. The use of a "glass board" allows the instructor to actually look at you while writing on a transparent board standing between her and you. This is extremely engaging. The instructor also uses very well chosen examples and illustrates them abundantly. Finally, I must not to forget to mention the test-driven approach used in the course. This is a powerful tool inspired by TDD and Agile approaches. You actually start writing tests BEFORE implementing the code, trying to cover all the most important scenarios that could result in bugs. By the time you implement the code and finish debugging, you have built a fairly robust program. Of course, other bugs will creep up, but you can write more tests to reproduce them, then fix the code to eradicate them. I would recommend this course to anyone wanting to have solid basis in Object Oriented Programming and work through meaningful examples. You may want to check the pre-requisite courses first, How to Program: Simple Data, and How to Program: Complex Data. These courses introduce software development in a surprisingly different way than the tradition "let's write algorithm courses". Even experienced programmers can benefit from the approach and design recipes.
Was this review helpful? Yes1
 Flag
Anand Vijay profile image
Anand Vijay profile image
10/10 starsCompleted
  • 0 reviews
  • 0 completed
2 years, 4 months ago
I thought it was a very well designed course and the professor did an excellent job of helping me understand abstraction, reuse, inheritance and polymorphism. The exercises makes you think, and the questions are challenging. The final project was fun, and it was great to see someone else's code and start debugging/breaking things. I feel like I can apply the patterns learn here. The course also did a really good job of introducing TDD, and JUnit. I feel confident about the JUnit usage and I will use Java to build some web services for my upcoming projects that I will build for fun. Let's see how that goes!
Was this review helpful? Yes0
 Flag

Rating Details


  • 5 stars
  • 4 stars
  • 3 stars
  • 2 stars
  • 1 stars
  • 5 stars
  • 4 stars
  • 3 stars
  • 2 stars
  • 1 stars
  • 5 stars
  • 4 stars
  • 3 stars
  • 2 stars
  • 1 stars

Rankings are based on a provider's overall CourseTalk score, which takes into account both average rating and number of ratings. Stars round to the nearest half.