Object-Oriented Software Engineering with Java
What you'll learn
- Build classes and creates objects using Java to promote code reuse
- Build a large software using inheritance, abstract classes, encapsulation, polymorphism, and Interfaces
- Recognize object-oriented concepts for large software development
- Solve advanced software development problems using Object Oriented concepts
- Develop and use generic classes to promote software reuse
- Use effective tools for Java project management (Netbeans, GitHub)
Requirements
- The course assumes that the student has a knowledge of the basic programming concepts with Java, including loops, methods, conditional statements, etc.
Description
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!
Who this course is for:
- Beginner/Intermediate Software Developers
- Software Engineering Students
- Computer Science Students
- Information Systems Students
- Beginners Java Developers
Instructor
I am Anis Koubaa, a Full Professor in Computer Science at Prince Sultan University and the Director of the Robotics and Internet-of-Things research lab. I am also R&D Director at Gaitech Robotics in China and Senior Researcher in CISTER/INESC TEC and ISEP-IPP, Porto, Portugal. I have been the Chair of the ACM Chapter in Saudi Arabia since 2014. I am also a Senior Fellow of the Higher Education Academy (HEA) in UK.
I received several distinctions and awards including the Rector Research Award in 2010 at Al-Imam Mohamed bin Saud University, and the Rector Teaching Award in 2016 at Prince Sultan University.
I have been teaching Programming courses for more than 16 years in particular Java and Web technologies, and different computer science courses. Programming is my passion for me and I have developed many software and applications. I have been also teaching robotics and developing several program with ROS in both academia and industry.
I am the Editor of three books on Robot Operating System (ROS) with Springer publisher, which are in the top 25% of most downloaded book in Springer database.
I have a lot of tutorials and course on the Internet provided on my YouTube Channel. I am very excited to provide my courses on Udemy to students around the world with practical hands-on activities.
My teaching philosophy is based on Teaching by Demonstration, where I like to explain the concepts by demonstrating them with real-world illustrations. The students will be mainly Learning by Doing.