Skip to content

Intermediate course introducing Object Oriented Programming (OOP) principles applied to the Java language. Recommended to learners with previous experience.

License

Notifications You must be signed in to change notification settings

nbicocchi/learn-java-core

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

52 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Java Core

Software

Books

  • Big Java - Early Objects 7th Edition; Horstmann; Wiley Press (intermediate)
  • Effective Java; Bloch; O'Reilly (advanced)

Videos

Official Tutorials

Contributing

Your pull requests are very welcome! To contribute, please refer to this guide. For a more general introduction to GitHub, refer to this page. By contributing to this repository, you agree that your contributions will be licensed under the LICENSE file in the root directory of this source tree.

Modules

[E1] From Functions to Classes

  • Evolution of programming languages
  • Limits of procedural programming
  • Modularization, reuse of code, and object-oriented programming
  • Object-oriented programming key features

[E2] Basics

Read: Big Java (Chapter 2-4-5-6-7)

Lab: com.nbicocchi.exercises.warmup, com.nbicocchi.exercises.arrays, com.nbicocchi.exercises.strings

  • Variables, methods and parameter passing
  • Primitive data types
  • Conditional statements
  • Iterative statements
  • Arrays
  • Strings
  • Coding Standard

[E3] Classes

Read: Big Java (Chapter 3-8-9-10-12) Read: UML Distilled (Chapter 3)

Lab: com.nbicocchi.exercises.oop

  • Static variables and methods
  • Concrete classes, Interfaces, Abstract classes
  • Encapsulation, Inheritance, Polymorphism
  • The Object superclass
  • Wrapper types
  • Garbage collection
  • UML class diagrams

[E4] Data Structures

Read: Big Java (Chapter 14-15)

Lab: com.nbicocchi.exercises.collections

  • Iterable and Iterator interfaces
  • List interface and its implementations (ArrayList, LinkedList)
  • Set interface and its implementations (HashSet, LinkedHashSet, TreeSet)
  • Queue interface and its implementations (ArrayDeque, LinkedList)
  • Map interface and its implementations (HashMap, LinkedHashMap, TreeMap)
  • Sorting and searching

[E5] Exceptions

Read: Big Java (Chapter 11)

Lab: com.nbicocchi.exercises.exceptions

  • Throwing exceptions
  • Catching exceptions
  • Checked and unchecked exceptions
  • Closing resources

[E6] Generics

Read: Big Java (Chapter 18)

Lab: com.nbicocchi.exercises.generics

  • Generic classes and type parameters
  • Generic methods
  • Constraining type parameters
  • Type erasure

[E7] Functional Programming

Read: Big Java (Chapter 19), Object-Oriented vs Functional Programming (Chapter 1)

Lab: com.nbicocchi.exercises.functional

  • Lambda expressions
  • Functional interfaces
  • Streams
  • The Optional type

[E8] Platform Threads

Read: Big Java (Chapter 22)

Lab: com.nbicocchi.exercises.threads

  • Thread states
  • Thread interference
  • Thread synchronisation (synchronised/wait/notify)
  • ExecutorService
  • Callable/Future/Task

"Any fool can write code that a computer can understand. Good programmers write code that humans can understand." --- Martin Fowler

About

Intermediate course introducing Object Oriented Programming (OOP) principles applied to the Java language. Recommended to learners with previous experience.

Topics

Resources

License

Stars

Watchers

Forks

Contributors 30