
This course includes our updated coding exercises so you can practice your skills as you learn.
See a demo
This is an introductory video that provides an overview about the course.
After completing this lecture, the student will identify the shortcoming of procedural programming approaches in efficiently writing reusable programs.
This lecture introduces the concepts of object-oriented programming and illustrate it through an example. We build the class Student, then we creates objects from this class. We compare the program developed with the previous one in terms of code efficiency and code size.
This lecture presents how constructors are defined and used to create objects and to initialize the attributes of the class.
This lecture introduces the concept of the keyword this which is used to provide a reference to the class. It is needed to be used when the name of the attribute of the class is the same as the name of the parameter of the method.
This lecture presents the concept of class-wide variable and how it created as a static member of the class.
This lecture discusses the topic of constructor overloading that defining more than one constructor for a class. It also presents the use of the keyword this to call an existing constructor of a class and reduce the code size.
This video lecture presents the toString() method and how it is used to create a String representation of an object.
In this video, you will understand the limitation of developing an application of classes that are related by an inheritance relationship without using inheritance concepts.
This video illustrates how inheritance helps in reducing the code size and promote software reuse. It will also show how to define a constructor of a subclass and how to override methods of the superclass in the subclass.
In this video, I provide an introduction to the concept of polymorphism and explain its foundation.
In this lecture, I present the concept of downcasting and explain how it is useful to access the methods of a subclass from an object declared using a superclass. I also explain the use of instanceof keyword to check if an object is an instance of certain class.
In this lecture, you will learn about generic methods and how effective they are in writing methods that can be applied to different types.
In this lecture, you will learn about generic classes and how effective they are in writing classes that can be applied to different types.
Course Updates
Sep 5: Adding ArrayList lecture (Section II) and one programming assignment on files and ArrayList
Overview
The course provides a comprehensive coverage of object-oriented programming (OOP) concepts using Java programming language. OOP is the key paradigm that allows software reuse and that facilitates the development of complex and large-scale software. The course first starts with providing a clear understanding why OOP is important. We then dive into the main OOP concepts including encapsulation, inheritance, and polymorphism. We also present generic classes and design patterns which further demonstrate an additional software abstraction. All along the course, we show how OOP allows software engineers to develop complex software by making high-level abstractions starting from very general classes down to more concrete classes.
To better illustrate the concepts, each chapter contains several hands-on activities, namely: (1) Quizzes which help reviewing the main theoretical concepts presented in the lectures, (2) short coding exercises where the student can apply the concepts he learned on simple use cases, (3) programming assignments, which provide more thorough activities aiming at consolidating the understanding of the learner and guide him to master the concepts presented in the lectures. All hands-on activities have written and video solutions.
In addition, during the course, the student will work on one application which he will improve from one chapter to another so that he can observe how programming concepts he learned can be applied to improve a certain application. In this course, we consider an application to process images for the programming assignment. There is no pre-requisite needed about images to do the exercises, as it is just a simple application context for the programming assignment.
The course was designed to provide the learners with a solid background on software engineering using object-oriented programming concepts!
I wish you an excellent learning experience!