Software Construction: Data Abstraction

Provided by:
10/10 stars
based on  26 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
21575 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 10/10 stars
26 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
1 year, 3 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
Christos Tsoulias profile image
Christos Tsoulias profile image

Christos Tsoulias

10/10 starsCompleted
3 weeks ago
Very nice course, learnt a lot about objects, test driven development and how to think about abstraction. Java too, without it being the focus of the course.
Was this review helpful? Yes0
 Flag
Bharat Singh profile image
Bharat Singh profile image

Bharat Singh

10/10 starsCompleted
1 month, 1 week ago
Everything is great about this course. Efforts from teachers is maximum no improvements required. The content of course is very good and i would love to start next course of this series.
Was this review helpful? Yes0
 Flag
Adil Ahsan profile image
Adil Ahsan profile image

Adil Ahsan

10/10 starsCompleted
1 month, 1 week ago
The instructors are excellent. I think the manner in which they are teaching this course is from a functional/practical/applied level, like with a higher-level perspective... Additionally, they provide guidance on best practices and conventions which is quite useful... I thoroughly enjoyed this course..
Was this review helpful? Yes0
 Flag
Candaş Ünal profile image
Candaş Ünal profile image
8/10 starsCompleted
  • 2 reviews
  • 2 completed
1 month, 1 week ago
When I first started the course and through some topics, I felt I just cannot comprehend what that subject is. So the course pushes your limits if you don't know what data abstraction or Object Oriented Programming is, like me. Also, this course helped me a lot about what data abstraction is about, something I feel like I wouldn't be able to learn from any other sources. So I recommend this course to someone who wants to improve data abstraction.
Was this review helpful? Yes0
 Flag
 profile image
 profile image

8/10 starsCompleted
  • 0 reviews
  • 0 completed
1 month, 2 weeks ago
Elisa is great, enthusiastic and generally precise and clear on what she teach. There are not much gaps on the content taught and the exercises, and they are good because they are actually doable. The are some ambiguities in the quizzes that can be infuriating and I don't think the edX platform is well design but it is what it is and you would get the same for other courses, so... Overall it is an OK brief introduction to Java, Test Driven Development, and Object Orientation. I think it was worth the time.
Was this review helpful? Yes0
 Flag
Tyler Miller profile image
Tyler Miller profile image
8/10 starsCompleted
  • 3 reviews
  • 3 completed
2 months, 2 weeks ago
Great introduction to the concepts of OOP. Concepts are presented clearly and at a pace that I imagine anyone could follow along with. Additional introduction to IDEA was a nice touch, but the course would do well to fix a couple minor issues with the course documentation and starter files.
Was this review helpful? Yes0
 Flag
 profile image
 profile image

10/10 starsCompleted
  • 0 reviews
  • 0 completed
3 months, 3 weeks ago
Content and instructor were amasing. It is clear that this course was created by professionals in their field. Especially I want to single out the instructor, since she explained the topics with great enthusiasm
Was this review helpful? Yes0
 Flag
Ahmed Al-Obaidi profile image
Ahmed Al-Obaidi profile image

Ahmed Al-Obaidi

10/10 starsCompleted
3 months, 3 weeks ago
the course is very well-organized and makes understanding many OOP concepts really easy, i didn't enjoy reading or studying OOP until i enrolled in this course.
Was this review helpful? Yes0
 Flag
Anonymity Preferred profile image
Anonymity Preferred profile image

Anonymity Preferred

8/10 starsCompleted
5 months ago
The course is reasonably well-organised and applies a very hands-on approach to teaching object-oriented programming (OOP). Examples are mostly well-chosen and I think the instructor communicates OOP concepts well enough that I think is easier to understand than many resources I have come across. The things that I like the most is, as mentioned above, the hands-on approach to learning OOP. As such, I think it is very important to work through the examples in the course—draw every UML diagram and code every template when you are asked to. The quizzes are fair, relevant, and well-designed (unlike Software Engineering: Introduction). Recommend to anyone who has a bit of experience in programming and I personally think that, other than a few questions in the quizzes that refers back to the excellent "How to Code" prerequisites, it's actually okay to do as a standalone course as it's reasonably self-contained. All in all, this is a ... The course is reasonably well-organised and applies a very hands-on approach to teaching object-oriented programming (OOP). Examples are mostly well-chosen and I think the instructor communicates OOP concepts well enough that I think is easier to understand than many resources I have come across. The things that I like the most is, as mentioned above, the hands-on approach to learning OOP. As such, I think it is very important to work through the examples in the course—draw every UML diagram and code every template when you are asked to. The quizzes are fair, relevant, and well-designed (unlike Software Engineering: Introduction). Recommend to anyone who has a bit of experience in programming and I personally think that, other than a few questions in the quizzes that refers back to the excellent "How to Code" prerequisites, it's actually okay to do as a standalone course as it's reasonably self-contained. All in all, this is a great course as an introduction to object-oriented programming.
Was this review helpful? Yes0
 Flag
Amadeusz Annissimo profile image
Amadeusz Annissimo profile image
10/10 starsCompleted
  • 1 review
  • 1 completed
5 months, 2 weeks ago
Overall a very good course. There were a few minor bugs in the content (e.g. reversed order of arguments in test methods), and quiz questions were at times ambiguous, but I still learned a ton from it. I liked, in particular, the structured approach to code reading.
Was this review helpful? Yes0
 Flag
Hermann profile image
Hermann profile image

Hermann

10/10 starsTaking Now
7 months, 2 weeks ago
This course is really amazing, it helps to really understand the basics concepts of OOP along with how to communicate how design using UML which is not the course goal but make this course really useful for newies in OOP.
Was this review helpful? Yes0
 Flag
student profile image
student profile image

student

10/10 starsCompleted
7 months, 2 weeks ago
the course introduce an easy understanding of object oriented programming and cover very important concepts one of my favorite moocs and totally recommend it to any one need an entry to object oriented programming.
Was this review helpful? Yes0
 Flag
Jerry Wilson profile image
Jerry Wilson profile image

Jerry Wilson

10/10 starsTaking Now
9 months ago
I'm really impressed with the instructors and others producing this course. The content is very helpful and the pace/momentum of the course keeps me working and learning. It's actually one of the best educational experiences I've ever had.
Was this review helpful? Yes0
 Flag
Dan P profile image
Dan P profile image

Dan P

10/10 starsCompleted
9 months, 1 week ago
Very good overview of OO using Java. The instructor does not talk down to learners and gives good explanations with useful illustrations of concepts. The course may be fast for someone not familiar with programming.
Was this review helpful? Yes0
 Flag
Yaakov Goodman profile image
Yaakov Goodman profile image

Yaakov Goodman

10/10 starsTaking Now
10 months, 3 weeks ago
Very good to get some experience breaking down already created code. Also ability to skip what you know already and watch the videos from 1.25x to 2x.
Was this review helpful? Yes0
 Flag
abc ab profile image
abc ab profile image

abc ab

10/10 starsCompleted
11 months, 1 week ago
The teaching is excellent but NO UBC CREDIT: Audit track and verified track are almost the same unless you plan to go to Australia to study. UBC's Business Micromasters offers credits and so do most other micromasters but not this one, that can mean only one thing something about the content / quality of this course isn't good enough, at least that is what companies will think. Why would someone pay for a verified certificate?
Was this review helpful? Yes0
 Flag
Yigitcan Yesilata profile image
Yigitcan Yesilata profile image

Yigitcan Yesilata

10/10 starsCompleted
11 months, 1 week ago
This is very good course to understand some really important elements of computer science. Elisa is really great instuctor. Her examples and explanations are so clear. After taking this course, I feel really confident to pass further courses of this program. I am so excited about taking next course already now. Thanks for this amazing course.
Was this review helpful? Yes0
 Flag
Ipek T profile image
Ipek T profile image

Ipek T

10/10 starsCompleted
11 months, 3 weeks ago
It's a great introduction to Object oriented programming. Exercises lets you think and model simple programs in OO without getting distracted by language features. This way you can have solid base knowledge. I'ld recommend this course someone who wants to learn OO and doesn't have any experience. Videos and instructions are very clear.
Was this review helpful? Yes0
 Flag
Ipek T profile image
Ipek T profile image

Ipek T

10/10 starsCompleted
11 months, 3 weeks ago
It's a great introduction to Object oriented programming. Exercises lets you think and model simple programs in OO without getting distracted by language features. This way you can have solid base knowledge. I'ld recommend this course someone who wants to learn OO and doesn't have any experience. Videos and instructions are very clear.
Was this review helpful? Yes0
 Flag
Roland Umoru profile image
Roland Umoru profile image

Roland Umoru

10/10 starsTaking Now
1 year ago
Awesome content. Love the detailed explanations of the object oriented principles. The energy from the instructor was a huge motivator by itself. I definitely learned a lot from this course and will like to encourage anyone taking the course to stick to it till the end. It all comes together for real.
Was this review helpful? Yes0
 Flag
GTC profile image
GTC profile image

GTC

10/10 starsCompleted
1 year ago
A super course from a first rate instructor which is suitable for those wanting to make the initial steps from programmer/hacker to software engineer.
Was this review helpful? Yes0
 Flag
student profile image
student profile image

student

10/10 starsTaking Now
1 year, 1 month ago
Amazing Course! Highly recommend to anyone who wants to learn about Java or software construction in a systematic way. The teacher did a great job in illustrating everything clearly, and the projects are very helpful. I honestly think this is one of the best computer science course I've had online.
Was this review helpful? Yes0
 Flag
Daniel Rothmann profile image
Daniel Rothmann profile image

Daniel Rothmann

8/10 starsCompleted
1 year, 1 month ago
Great course which focuses on OOP principles. The use of Java for illustration was good, but instructor had great focus on principles rather than language. A few questions were confusingly worded.
Was this review helpful? Yes0
 Flag
Achilles Moraites profile image
Achilles Moraites profile image

Achilles Moraites

10/10 starsTaking Now
1 year, 2 months ago
An excellent course , teaching advanced stuff in a simple easy to understand way. Both the staff and content is of high quality , i totally recommend this course and all the micro masters program !!!
Was this review helpful? Yes0
 Flag
Anand Vijay profile image
Anand Vijay profile image
10/10 starsCompleted
  • 0 reviews
  • 0 completed
1 year, 2 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.