Skip to the content.

Object-Oriented Programming with Java

Overview

Java is a versatile and widely-used programming language, making it an excellent choice for learning object-oriented programming (OOP). This course begins with foundational procedural programming concepts and quickly transitions to the OOP paradigm. Key topics include:

Additionally, the course introduces essential software engineering methodologies, such as Test-Driven Development (TDD), and explores fundamental data structures like stacks, queues, hash tables, and lists.

Course Aims

This course aims to provide an introductory yet comprehensive understanding of object-oriented programming using Java. Key aims include:

Course Objectives

By the end of this course, students will:

Learning Outcomes

By completing this course, students will be able to:

Programme Details

  1. Introduction to Java: Syntax, semantics, variables, and the program development process.
  2. Programming Constructs: Loops, conditionals, and control flow.
  3. Classes and Objects: Defining and using classes in Java.
  4. Inheritance: Extending classes and reusing code.
  5. Abstract Classes and Interfaces: Advanced OOP concepts.
  6. Exception Handling: Writing robust and error-resistant code.
  7. Arrays: Single and multi-dimensional arrays.
  8. Java Collections Framework: Lists, sets, maps, and queues.
  9. Generic Types: Writing reusable and type-safe code.
  10. Unit Testing: Introduction to testing frameworks like JUnit.

This course is designed for beginners and assumes no prior programming experience, making it ideal for those looking to build a strong foundation in object-oriented programming with Java.


Development Tools

To get started with Java development, you will need the following tools:


References

Official Documentation

Tutorials


Practice Tasks

Part One (1st semester)

1) Using the Eclipse IDE for Java programming

2) Loops and Conditionals in Java

3) Basic Java Syntax. Strings, Arrays, java.lang.Math

4) Methods and Method Overloading in Java

5) Constructors in Java

6) Basic Object-Oriented Programming in Java

Part Two (2nd semester)

7) Object-Oriented Programming: Inheritance

8) Object-Oriented Programming: Method Overriding, Polymorphism

9) Object-Oriented Programming: Advanced Capabilities

10) Java Collections: Lists, Maps, Sets

11) Generics in Java

12) Java Threads: Defining and starting a thread

Final Task


Literature

For Beginners

  1. The Java Programming Language. Ken Arnold, James Gosling, David Holmes. ISBN: 9780321349804. A classic book written by one of Java’s creators. A great starting point for those who are just beginning to learn Java.

  2. Core Java, Volume I: Fundamentals. Cay Horstmann. ISBN: 9780135328378. One of the best resources for mastering Java. This first volume of two provides a detailed overview of fundamental topics, including OOP, reflection, interfaces, inner classes, exception handling, generics, collections, lambda expressions, concurrency, and more.

  3. Head First Java: A Brain-Friendly Guide. Kathy Sierra, Bert Bates, Trisha Gee. ISBN: 9781491910771. A fun and interactive approach to learning Java. Perfect for beginners who want to quickly grasp the basics.

  4. Java: A Beginner’s Guide. Herbert Schildt, Danny Coward. ISBN: 9781265054632. A simple and clear guide for beginners that covers all the essential Java concepts, including new features introduced in Java 21+.

For Experienced Developers

  1. Core Java, Volume II: Advanced Features. Cay Horstmann. ISBN: 9780135371749. An in-depth analysis of enterprise programming, networking, databases, security, localization, and working with XML.

  2. Thinking in Java. Bruce Eckel. ISBN: 9780131872486. A must-read for every developer. Helps understand Java’s philosophy, architecture, and approaches to problem-solving. Very deep and insightful for understanding what Java truly is.

  3. Effective Java. Joshua Bloch. ISBN: 9780134685991. Each chapter consists of loosely connected small articles illustrating Java’s nuances. Written by a seasoned practitioner. Absolutely essential for experienced developers. Contains practical tips on writing efficient and secure code.

  4. Java Concurrency in Practice. Brian Goetz, Tim Peierls, Joshua Bloch, Joseph Bowbeer, David Holmes, Doug Lea. ISBN: 9780321349606. The best resource for learning multithreading in Java.

  5. Modern Java in Action: Lambdas, Streams, Functional and Reactive Programming. Raoul-Gabriel Urma, Mario Fusco, Alan Mycroft. ISBN: 9781617293566. Covers modern approaches to programming in Java, such as lambda expressions, streams, and reactive programming.

About Development in General

  1. Design Patterns: Elements of Reusable Object-Oriented Software. Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides. ISBN: 9780201633610, 9780201634983. A classic on design patterns. Must be read in the original language! Translators have done their best to ruin everything beyond recognition.

  2. Applied Java Patterns. Stephen Stelting, Olav Maassen. ISBN: 9780130935380. Dedicated to design patterns—techniques for organizing programs that have proven effective in practice. Useful for designing program architectures.

  3. Bug Patterns In Java. Eric Allen. ISBN: 9781590590614. About what not to do. Typical mistakes made by Java developers. Very useful for those who want to avoid common pitfalls.

  4. Refactoring: Improving the Design of Existing Code. Martin Fowler. ISBN: 9780134757599. Teaches how to improve existing code, making it more readable and maintainable.

  5. Clean Code: A Handbook of Agile Software Craftsmanship. Robert C. Martin. ISBN: 9780132350884. The best book for understanding the principles of writing clean and high-quality code.

Other

  1. GRASP, SOLID.

  2. Refactoring, design patterns, SOLID principles.

  3. Design patterns, anti-patterns, refactoring.