<ul>
<li>Language syntax</li>
<li>Declaring and initializing variables</li>
<li>Declaring and using arrays</li>
<li>Upcasting, down casting, and autoboxing</li>
<li>Flow control</li>
<li>Invoking methods and passing parameters</li>
<li>Conditionals and loops</li>
<li>Handling exceptions with try and catch</li>
<li>Defining classes</li>
<li>Fields (instance data)</li>
<li>Methods (functions)</li>
<li>Abstract classes and interfaces</li>
<li>Organizing classes with packages and modifiers</li>
<li>Composition vs. inheritance</li>
<li>Building the components of a Java program</li>
<li>Leveraging generics with the collections API (Application Programming Interface)</li>
<li>Developing new classes</li>
<li>Compiling and debugging</li>
</ul>