Skip to content

Java Fundamentals Course

enki-hq edited this page May 15, 2020 · 4 revisions

Fundamentals Course Overview

Table of Contents

Content

Below you can find the ordered content of the topic, in a linear progression

The linear progression of content aims to cover all content, course by course, workout by workout as follows:

  • first course is the only core one, denoted by its manifest
  • the next course is denoted by the first item of the next array in each course manifest
  • each course has its order of workouts designated by the sections field in the same aforementioned manifest

Insights:

no name content aspects standards PQ RQ Quiz done
1 what-is-java 👶 introduction
2 why-should-i-learn-java 👶 introduction
3 java-versions 👶 introduction
4 java-hello-world 👶 introduction
5 compiling-and-running-java-code 👶 introduction

Exercises:

⚠️ There are no insights in this workout.

Game:

⚠️ There is no game in this workout.

Insights:

no name content aspects standards PQ RQ Quiz done
1 java-identifiers 👶 introduction
2 java-primitives 👶 introduction
3 java-strings 👶 introduction
4 functions 👶 introduction
💪 workout
5 packages 👶 introduction

Exercises:

⚠️ There are no insights in this workout.

Game:

⚠️ There is no game in this workout.

Insights:

no name content aspects standards PQ RQ Quiz done
1 difference-between-jre-and-jdk 👶 introduction
2 different-types-of-variables-in-java 👶 introduction
3 constant-notation 👶 introduction
🔮 obscura
4 ternary-operator 👶 introduction
💪 workout
5 use-meaningful-names 👶 introduction

Exercises:

⚠️ There are no insights in this workout.

Game:

⚠️ There is no game in this workout.

Insights:

no name content aspects standards PQ RQ Quiz done
1 equals-operation-on-different-data-types 👶 introduction
💪 workout
2 from-is-included-while-to-is-excluded 👶 introduction
🔮 obscura
3 multiple-relational-operators 👶 introduction
4 prefix-and-postfix-of-increment-operators 👶 introduction
5 use-varargs-when-unsure-about-the-number-of-parameters 👶 introduction
💪 workout

Exercises:

⚠️ There are no insights in this workout.

Game:

⚠️ There is no game in this workout.

5. tips-i

Insights:

no name content aspects standards PQ RQ Quiz done
1 use-comments-to-explain-the-purpose-of-code 👶 introduction
🔮 obscura
2 avoid-excessively-long-comments 👶 introduction
🔮 obscura
3 avoid-synonyms-when-naming 👶 introduction
🔮 obscura
4 follow-existing-project-naming-conventions 👶 introduction
🔮 obscura

Exercises:

⚠️ There are no insights in this workout.

Game:

name type aspects standards done
java-8 tetris 👶 introduction
✨ new

Insights:

no name content aspects standards PQ RQ Quiz done
1 always-specify-type-parameter 💪 workout
🦑 deep
🔮 obscura
2 common-mistake-on-switch-statements 👶 introduction
3 how-range-operations-work 👶 introduction
4 short-circuit-evaluation 🦑 deep
🔮 obscura
5 there-is-no-such-thing-as-pass-by-reference-in-java 🦑 deep
🔮 obscura

Exercises:

⚠️ There are no insights in this workout.

Game:

⚠️ There is no game in this workout.

Insights:

no name content aspects standards PQ RQ Quiz done
1 the-trade-off-between-short-and-descriptive-names 👶 introduction
🔮 obscura
2 supply-tostring-in-all-classes 💪 workout
🦑 deep
3 package-naming-conventions 👶 introduction
4 calling-one-constructor-from-another 🦑 deep
🔮 obscura
5 avoid-using-static-variables 💪 workout
🦑 deep
🔮 obscura

Exercises:

⚠️ There are no insights in this workout.

Game:

⚠️ There is no game in this workout.

Insights:

no name content aspects standards PQ RQ Quiz done
1 updating-interfaces-by-using-default-methods 💪 workout
🦑 deep
2 instance-methods-are-preferred-over-default-methods 💪 workout
🦑 deep
🔮 obscura
3 using-static-fields 👶 introduction
4 using-inner-classes 👶 introduction
5 an-interface-s-methods-do-not-need-to-be-declared-as-public 👶 introduction

Exercises:

⚠️ There are no insights in this workout.

Game:

⚠️ There is no game in this workout.

Insights:

no name content aspects standards PQ RQ Quiz done
1 two-ways-to-use-an-iterator 👶 introduction
2 iterate-without-an-index 👶 introduction
3 double-brace-initialization 🦑 deep
🔮 obscura
4 diamond-operator 👶 introduction
🔮 obscura
5 implementing-the-comparable-interface-to-give-objects-a-natural-order 🦑 deep
🔮 obscura

Exercises:

⚠️ There are no insights in this workout.

Game:

⚠️ There is no game in this workout.

10. memory

Insights:

no name content aspects standards PQ RQ Quiz done
1 java-memory-management 🦑 deep
🔮 obscura
💪 workout
2 distinction-between-stack-and-heap-memory 👶 introduction
🦑 deep
3 only-objects-that-are-not-referenced-are-to-be-garbage-collected 👶 introduction
💪 workout
4 stop-the-world-and-garbage-collection 🦑 deep
🔮 obscura
💪 workout
5 why-java-does-not-have-sizeof-like-c-c 🦑 deep
🔮 obscura

Exercises:

⚠️ There are no insights in this workout.

Game:

⚠️ There is no game in this workout.

Insights:

no name content aspects standards PQ RQ Quiz done
1 what-is-a-class 👶 introduction
2 what-is-an-object 👶 introduction
3 inheritance 👶 introduction
💪 workout
4 polymorphism 👶 introduction
💪 workout
5 java-interfaces 👶 introduction
💪 workout

Exercises:

⚠️ There are no insights in this workout.

Game:

⚠️ There is no game in this workout.

Insights:

no name content aspects standards PQ RQ Quiz done
1 java-modifiers 👶 introduction
💪 workout
2 default-and-public-modifiers 👶 introduction
3 the-private-and-protected-modifiers 👶 introduction
💪 workout
4 the-static-modifier 👶 introduction
💪 workout
5 the-final-modifier 👶 introduction
💪 workout
6 encapsulation 👶 introduction

Exercises:

⚠️ There are no insights in this workout.

Game:

⚠️ There is no game in this workout.

Insights:

no name content aspects standards PQ RQ Quiz done
1 loose-and-tight-coupling 👶 introduction
2 cohesion 👶 introduction
3 do-not-return-references-to-private-mutable-class-members 💪 workout
🦑 deep
4 using-an-interface-as-a-parameter 💪 workout
🦑 deep
5 default-constructors 👶 introduction

Exercises:

⚠️ There are no insights in this workout.

Game:

⚠️ There is no game in this workout.

Insights:

no name content aspects standards PQ RQ Quiz done
1 uses-of-the-final-keyword 💪 workout
🦑 deep
🔮 obscura
2 sibling-classes 💪 workout
🦑 deep
🔮 obscura
3 utility-classes-and-static-methods 🔮 obscura
4 use-a-copy-constructor-for-non-immutable-objects 💪 workout
🦑 deep
🔮 obscura
5 be-as-specific-as-possible-when-catching-exceptions 👶 introduction
🔮 obscura

Exercises:

⚠️ There are no insights in this workout.

Game:

⚠️ There is no game in this workout.

Insights:

no name content aspects standards PQ RQ Quiz done
1 catch-multiple-exceptions-in-a-single-catch-block 👶 introduction
2 avoid-empty-catch-blocks 🔮 obscura
3 creating-new-exceptions 👶 introduction
4 throwing-an-exception 👶 introduction
5 the-distinction-between-checked-and-unchecked-exceptions 👶 introduction

Exercises:

⚠️ There are no insights in this workout.

Game:

⚠️ There is no game in this workout.

Insights:

no name content aspects standards PQ RQ Quiz done
1 avoid-unnecessary-exception-handling 🔮 obscura
2 use-descriptive-error-messages-when-catching-exceptions 👶 introduction
🔮 obscura
3 retrieving-the-cause-of-an-exception 👶 introduction
💪 workout
4 throwing-chained-exceptions 🦑 deep
🔮 obscura
5 use-standard-exceptions-when-possible 👶 introduction

Exercises:

⚠️ There are no insights in this workout.

Game:

⚠️ There is no game in this workout.

Insights:

no name content aspects standards PQ RQ Quiz done
1 singleton-pattern 💪 workout
🦑 deep
🔮 obscura
2 static-factory-methods 💪 workout
🦑 deep
🔮 obscura
3 facade-pattern 🔮 obscura
4 don-t-repeat-yourself-dry-principle 👶 introduction
5 hashing 💪 workout
🦑 deep
🔮 obscura

Exercises:

⚠️ There are no insights in this workout.

Game:

⚠️ There is no game in this workout.

18. tips-iv

Insights:

no name content aspects standards PQ RQ Quiz done
1 converting-stack-trace-to-a-string 🦑 deep
🔮 obscura
2 getting-time-based-on-time-zones 💪 workout
3 measuring-time 👶 introduction
4 use-locale-class-for-internationalisation 🦑 deep
🔮 obscura
5 most-common-reason-behind-stack-overflow-error 🦑 deep

Exercises:

⚠️ There are no insights in this workout.

Game:

⚠️ There is no game in this workout.

Insights:

no name content aspects standards PQ RQ Quiz done
1 limit-accessibility-of-fields 👶 introduction
2 private-constructors 👶 introduction
3 the-distinction-between-overloading-and-overriding-methods 👶 introduction

Exercises:

⚠️ There are no insights in this workout.

Game:

⚠️ There is no game in this workout.

Insights:

no name content aspects standards PQ RQ Quiz done
1 compare-classes-and-not-class-names 🦑 deep
🔮 obscura
2 the-abstract-keyword 👶 introduction
3 abstract-classes-can-have-static-members 👶 introduction
4 abstract-class-vs-interface-in-java 👶 introduction
5 template-methods-in-abstract-classes 👶 introduction

Exercises:

⚠️ There are no insights in this workout.

Game:

⚠️ There is no game in this workout.

Insights:

no name content aspects standards PQ RQ Quiz done
1 defining-static-methods-within-an-interface 👶 introduction
✨ new
2 fields-with-java-reflection-api 🦑 deep
3 floating-garbage-and-how-to-deal-with-it 🦑 deep
🔮 obscura
4 increase-permgen-space-as-to-avoid-outofmemory-errors 🦑 deep
🔮 obscura
5 creating-a-defensive-copy-of-an-object-to-guarantee-immutability 🦑 deep
🔮 obscura

Exercises:

⚠️ There are no insights in this workout.

Game:

⚠️ There is no game in this workout.

Insights:

no name content aspects standards PQ RQ Quiz done
1 what-is-serialization 👶 introduction
2 serializing 🦑 deep
🔮 obscura
3 deserializing 🦑 deep
🔮 obscura
4 serial-version-u-i-d 💪 workout
🦑 deep
5 checking-if-a-class-is-serializable 🦑 deep
🔮 obscura

Exercises:

⚠️ There are no insights in this workout.

Game:

⚠️ There is no game in this workout.

23. tips-v

Insights:

no name content aspects standards PQ RQ Quiz done
1 java-8-lambda-expressions 🦑 deep
🔮 obscura
✨ new
2 use-lazy-initialization-to-defer-creating-an-object-until-it-s-used 💪 workout
🔮 obscura
3 prevent-exceptions-while-logging-data 🔮 obscura
4 throwing-proper-exceptions-for-unfinished-code 👶 introduction
🔮 obscura
5 generating-a-compact-java-code 🦑 deep
🔮 obscura

Exercises:

⚠️ There are no insights in this workout.

Game:

⚠️ There is no game in this workout.

Insights:

no name content aspects standards PQ RQ Quiz done
1 what-are-annotations 👶 introduction
2 retention-and-inherited-annotations 🦑 deep
🔮 obscura
3 variable-argument-function 👶 introduction
💪 workout

Exercises:

⚠️ There are no insights in this workout.

Game:

⚠️ There is no game in this workout.

Insights:

no name content aspects standards PQ RQ Quiz done
1 use-javadoc-comments-to-describe-the-purpose-of-a-class-or-method 👶 introduction
🔮 obscura
2 use-override-to-explicitly-indicate-that-a-method-has-been-overridden 👶 introduction
3 the-distinction-between-checked-and-unchecked-exceptions 👶 introduction
4 using-super-to-access-overriden-methods 👶 introduction
5 specifying-an-annotation-retention-policy 🦑 deep
🔮 obscura

Exercises:

⚠️ There are no insights in this workout.

Game:

⚠️ There is no game in this workout.

Insights:

no name content aspects standards PQ RQ Quiz done
1 declaring-repeatable-annotation-types 🦑 deep
🔮 obscura
✨ new
2 including-annotations-in-javadoc 👶 introduction
💪 workout
🔮 obscura
3 restricting-an-annotation-s-application-by-using-target 👶 introduction
💪 workout
🔮 obscura
4 suppressing-warnings-using-suppresswarnings 💪 workout
🔮 obscura
5 using-the-deprecated-annotation 💪 workout
🔮 obscura

Exercises:

⚠️ There are no insights in this workout.

Game:

⚠️ There is no game in this workout.

Aspects

Given the insights are tagged with aspects, we can filter over the linear content progression and create learning sub-paths.

These sub-path progressions will most likely not cover all content, but they will ensure and enforce an unified learning experience, tailor for the user wish.

For example, a user might be interested in new additions and updates of a language, rather than introduction lessions. Note that these sub-paths don't take games into consideration

👶 Introduction

If you are being introduced to the topic for the first time

Insights:

  1. what-is-java
  2. why-should-i-learn-java
  3. java-versions
  4. java-hello-world
  5. compiling-and-running-java-code
  6. java-identifiers
  7. java-primitives
  8. java-strings
  9. functions
  10. packages
  11. difference-between-jre-and-jdk
  12. different-types-of-variables-in-java
  13. constant-notation
  14. ternary-operator
  15. use-meaningful-names
  16. equals-operation-on-different-data-types
  17. from-is-included-while-to-is-excluded
  18. multiple-relational-operators
  19. prefix-and-postfix-of-increment-operators
  20. use-varargs-when-unsure-about-the-number-of-parameters
  21. use-comments-to-explain-the-purpose-of-code
  22. avoid-excessively-long-comments
  23. avoid-synonyms-when-naming
  24. follow-existing-project-naming-conventions
  25. common-mistake-on-switch-statements
  26. how-range-operations-work
  27. the-trade-off-between-short-and-descriptive-names
  28. package-naming-conventions
  29. using-static-fields
  30. using-inner-classes
  31. an-interface-s-methods-do-not-need-to-be-declared-as-public
  32. two-ways-to-use-an-iterator
  33. iterate-without-an-index
  34. diamond-operator
  35. distinction-between-stack-and-heap-memory
  36. only-objects-that-are-not-referenced-are-to-be-garbage-collected
  37. what-is-a-class
  38. what-is-an-object
  39. inheritance
  40. polymorphism
  41. java-interfaces
  42. java-modifiers
  43. default-and-public-modifiers
  44. the-private-and-protected-modifiers
  45. the-static-modifier
  46. the-final-modifier
  47. encapsulation
  48. loose-and-tight-coupling
  49. cohesion
  50. default-constructors
  51. be-as-specific-as-possible-when-catching-exceptions
  52. catch-multiple-exceptions-in-a-single-catch-block
  53. creating-new-exceptions
  54. throwing-an-exception
  55. the-distinction-between-checked-and-unchecked-exceptions
  56. use-descriptive-error-messages-when-catching-exceptions
  57. retrieving-the-cause-of-an-exception
  58. use-standard-exceptions-when-possible
  59. don-t-repeat-yourself-dry-principle
  60. measuring-time
  61. limit-accessibility-of-fields
  62. private-constructors
  63. the-distinction-between-overloading-and-overriding-methods
  64. the-abstract-keyword
  65. abstract-classes-can-have-static-members
  66. abstract-class-vs-interface-in-java
  67. template-methods-in-abstract-classes
  68. defining-static-methods-within-an-interface
  69. what-is-serialization
  70. throwing-proper-exceptions-for-unfinished-code
  71. what-are-annotations
  72. variable-argument-function
  73. use-javadoc-comments-to-describe-the-purpose-of-a-class-or-method
  74. use-override-to-explicitly-indicate-that-a-method-has-been-overridden
  75. the-distinction-between-checked-and-unchecked-exceptions
  76. using-super-to-access-overriden-methods
  77. including-annotations-in-javadoc
  78. restricting-an-annotation-s-application-by-using-target

⚠️ There are no exercises tagged with this aspect in fundamentals. Games:

  1. java-8

💪 Workout

Theory put into practice/that’s how you achieve X points

Insights:

  1. functions
  2. ternary-operator
  3. equals-operation-on-different-data-types
  4. use-varargs-when-unsure-about-the-number-of-parameters
  5. always-specify-type-parameter
  6. supply-tostring-in-all-classes
  7. avoid-using-static-variables
  8. updating-interfaces-by-using-default-methods
  9. instance-methods-are-preferred-over-default-methods
  10. java-memory-management
  11. only-objects-that-are-not-referenced-are-to-be-garbage-collected
  12. stop-the-world-and-garbage-collection
  13. inheritance
  14. polymorphism
  15. java-interfaces
  16. java-modifiers
  17. the-private-and-protected-modifiers
  18. the-static-modifier
  19. the-final-modifier
  20. do-not-return-references-to-private-mutable-class-members
  21. using-an-interface-as-a-parameter
  22. uses-of-the-final-keyword
  23. sibling-classes
  24. use-a-copy-constructor-for-non-immutable-objects
  25. retrieving-the-cause-of-an-exception
  26. singleton-pattern
  27. static-factory-methods
  28. hashing
  29. getting-time-based-on-time-zones
  30. serial-version-u-i-d
  31. use-lazy-initialization-to-defer-creating-an-object-until-it-s-used
  32. variable-argument-function
  33. including-annotations-in-javadoc
  34. restricting-an-annotation-s-application-by-using-target
  35. suppressing-warnings-using-suppresswarnings
  36. using-the-deprecated-annotation

⚠️ There are no exercises tagged with this aspect in fundamentals. :warning: There are no games tagged with this aspect in fundamentals.

🦑 Deep

Prerequisite knowledge consisting of 2 or more 👶/💪 workouts

Insights:

  1. always-specify-type-parameter
  2. short-circuit-evaluation
  3. there-is-no-such-thing-as-pass-by-reference-in-java
  4. supply-tostring-in-all-classes
  5. calling-one-constructor-from-another
  6. avoid-using-static-variables
  7. updating-interfaces-by-using-default-methods
  8. instance-methods-are-preferred-over-default-methods
  9. double-brace-initialization
  10. implementing-the-comparable-interface-to-give-objects-a-natural-order
  11. java-memory-management
  12. distinction-between-stack-and-heap-memory
  13. stop-the-world-and-garbage-collection
  14. why-java-does-not-have-sizeof-like-c-c
  15. do-not-return-references-to-private-mutable-class-members
  16. using-an-interface-as-a-parameter
  17. uses-of-the-final-keyword
  18. sibling-classes
  19. use-a-copy-constructor-for-non-immutable-objects
  20. throwing-chained-exceptions
  21. singleton-pattern
  22. static-factory-methods
  23. hashing
  24. converting-stack-trace-to-a-string
  25. use-locale-class-for-internationalisation
  26. most-common-reason-behind-stack-overflow-error
  27. compare-classes-and-not-class-names
  28. fields-with-java-reflection-api
  29. floating-garbage-and-how-to-deal-with-it
  30. increase-permgen-space-as-to-avoid-outofmemory-errors
  31. creating-a-defensive-copy-of-an-object-to-guarantee-immutability
  32. serializing
  33. deserializing
  34. serial-version-u-i-d
  35. checking-if-a-class-is-serializable
  36. java-8-lambda-expressions
  37. generating-a-compact-java-code
  38. retention-and-inherited-annotations
  39. specifying-an-annotation-retention-policy
  40. declaring-repeatable-annotation-types

⚠️ There are no exercises tagged with this aspect in fundamentals. :warning: There are no games tagged with this aspect in fundamentals.

✨ New

Recently added/gained traction feature

Insights:

  1. defining-static-methods-within-an-interface
  2. java-8-lambda-expressions
  3. declaring-repeatable-annotation-types

⚠️ There are no exercises tagged with this aspect in fundamentals. Games:

  1. java-8

🔮 Obscura

Stories, obscure details that don’t specifically relate to a learning objective

Insights:

  1. constant-notation
  2. from-is-included-while-to-is-excluded
  3. use-comments-to-explain-the-purpose-of-code
  4. avoid-excessively-long-comments
  5. avoid-synonyms-when-naming
  6. follow-existing-project-naming-conventions
  7. always-specify-type-parameter
  8. short-circuit-evaluation
  9. there-is-no-such-thing-as-pass-by-reference-in-java
  10. the-trade-off-between-short-and-descriptive-names
  11. calling-one-constructor-from-another
  12. avoid-using-static-variables
  13. instance-methods-are-preferred-over-default-methods
  14. double-brace-initialization
  15. diamond-operator
  16. implementing-the-comparable-interface-to-give-objects-a-natural-order
  17. java-memory-management
  18. stop-the-world-and-garbage-collection
  19. why-java-does-not-have-sizeof-like-c-c
  20. uses-of-the-final-keyword
  21. sibling-classes
  22. utility-classes-and-static-methods
  23. use-a-copy-constructor-for-non-immutable-objects
  24. be-as-specific-as-possible-when-catching-exceptions
  25. avoid-empty-catch-blocks
  26. avoid-unnecessary-exception-handling
  27. use-descriptive-error-messages-when-catching-exceptions
  28. throwing-chained-exceptions
  29. singleton-pattern
  30. static-factory-methods
  31. facade-pattern
  32. hashing
  33. converting-stack-trace-to-a-string
  34. use-locale-class-for-internationalisation
  35. compare-classes-and-not-class-names
  36. floating-garbage-and-how-to-deal-with-it
  37. increase-permgen-space-as-to-avoid-outofmemory-errors
  38. creating-a-defensive-copy-of-an-object-to-guarantee-immutability
  39. serializing
  40. deserializing
  41. checking-if-a-class-is-serializable
  42. java-8-lambda-expressions
  43. use-lazy-initialization-to-defer-creating-an-object-until-it-s-used
  44. prevent-exceptions-while-logging-data
  45. throwing-proper-exceptions-for-unfinished-code
  46. generating-a-compact-java-code
  47. retention-and-inherited-annotations
  48. use-javadoc-comments-to-describe-the-purpose-of-a-class-or-method
  49. specifying-an-annotation-retention-policy
  50. declaring-repeatable-annotation-types
  51. including-annotations-in-javadoc
  52. restricting-an-annotation-s-application-by-using-target
  53. suppressing-warnings-using-suppresswarnings
  54. using-the-deprecated-annotation

⚠️ There are no exercises tagged with this aspect in fundamentals. :warning: There are no games tagged with this aspect in fundamentals.

✅ All content has been tagged with aspects.

Clone this wiki locally