This repository is a collection of essential concepts in programming with with focus on Object Oriented Programming in Java. It contains notes and examples of different topics which are highly relevant when designing robust, clear, effective and flexible software.
- Algorithms
- Searching algorithms
- Sorting algorithms
- Other algorithms
- Data Structures
- Abstract datatypes
- Dynamic
- Static
- Non-abstract datatypes
- Dynamic
- Static
- Abstract datatypes
- Design Patterns
- Behavioral patterns
- Creational patterns
- Structorial patterns
- Effective programming
- Functional programming
- Multithreading
- Software Design
- Design principles
- OOP principles
Important: Much of this repository's content has references, images, code and examples gathered from websites, school lectures, published books, and organizations. We do not make profit of this repository in any way, nor de we distribute this repository in any ways that would break the terms of copyright ownership. Contents of this repository should not be directory copied to use in official software, papers, projects, or exams. Copy of this notes in an exam would most certainly result as plagiarism. Therefore, we only intend to maintain, develop, use, and distribute this project for educational purposes only.
We wish to give credit to the following sources of information, making it possible for us to make this educational project. We issue a greatfulness and credits to the following organizations and sources, which we have quoted and gathered inspiration from:
- GeeksforGeeks - https://www.geeksforgeeks.org
- w3schools - https://www.w3schools.org
- HackerRank - https://www.hackerrank.com/dashboard
- eG Innovations - https://www.eginnovations.com
- Stack Overflow - https://www.stackoverflow.com
- Baeldung - https://www.baeldung.com
- Oracle Docs - https://docs.oracle.com/
- NTNU - Lectures and examples offered by the courses included in the univeristy program "Bachelor in Computer Engineering" at Campus Ålesund
- Barnes, D.J & Kölling, M. (2017) Objects First with Java™ - A Practical Introduction Using BlueJ - SIXTH EDITION. Pearson, Edinburgh
- Hegna, K. & Maus, A. (2017) Javaprogrammering Kort og Godt. Universitetsforlaget, Oslo
- Rumbaugh et al. (1991) Object-Oriented Modeling and Design. Prentice-Hall International Editions, New Jersey
- Goodrich et al. (2015) Data Structures & Algorithms in Java™ - SIXTH EDITION. Wiley, New Jersey
Important: While some of this content is purely developed by the authors, parts of the content of this repository is imported from websites, school lectures, published books, and organizations. (See Credits and References.)
This project was made by the following:
- Jørgen Finsveen - Bachelors Student at NTNU Ålesund, Bachelor in Computer Engineering (2nd Year, 2022)
- Even Johan P. Haslerud - Bachelors Student NTNU Ålesynd, Bachelor in Computer Engineering (2nd Year, 2022)
- Most of the repository's code-content is written in Java™ programming language.
- Some of the repository's content are Jupyter Notebook files (*.ipynb), with a customized Jupyter Notebook Kernel which supports Java™ programming language. This kernel is made by IJava, and is available for the public.
- This is a non-profit project for only educational purposes, made by students which are studying these topics.
- The Java™ code projects located in this repository, are using Apache Maven for project management. (See: Apache Maven Project)