Lectures
This is an overview of the content covered in the lectures:
Date | Topic | Description | Reading |
---|---|---|---|
01/14 01/16 01/23 01/28 | Java and OO Basics | We will cover what Java is (imperative, garbage-collected, object-oriented, VM-based, strictly typed) and cover basic concepts of the language such as variables, expressions, code blocks, control structures, and data types.
Slides: |
Reading: Textbook chapters 1, 2, 3, 5, 6, 7, and 10
Notebooks: |
01/30 02/04 02/06 | Advanced OO Concepts, Data structures, and Collections | We will learn about arrays and collection data structures and multiple inheritence (interfaces), abstract classes, nested classes, anonymous classes, and enumeration types.
Slides: |
Reading: Textbook chapter 8, 9, and 14
Notebooks: |
02/11 02/13 02/18 | Exceptions and I/O | We will learn about exception handling in Java and I/O operations. |
Reading: Textbook chapter 11
Notebooks: |
02/20 02/25 | Debugging, Logging, and Testing | We learn how to use a debugger to debug code, how to utilize logging for debugging, and how to write test code.
Slides: |
Notebooks: |
02/27 | Documentation | We will learn about how to comment our code and automatically create documentation from these comments.
Slides: |
Reading: Textbook Chapter 7.16
Notebooks: |
03/06 03/11 | Recursion | We will learn about recursion. |
Reading: Textbook chapter 13
Notebooks: |
03/13 03/25 03/27 | Introduction to Algorithms: Searching and Sorting | We will learn about algorithms using searching and sorting as an example.
Slides: |
Notebooks: |
04/01 04/03 | Computational Complexity | We will learn how to analyze the runtime complexity of an algorithm.
Slides: |
Reading: Textbook Chapter 15 |
04/08 04/10 | Reflection, Annotations, and Generics | We will learn how to use reflection to inspect and manipulate objects of possibly unknown classes at runtime. Furthermore, we will see how to use generics to build generic implementations without sacrifizing type safety. |
Notebooks: |
04/15 04/17 | Lambdas and the Stream API | We will learn about lambda expressions that allow anonymous functions to be defined inline and how to use Java Streams to build dataflows that are evaluated lazily. |
Notebooks: |
04/22 04/24 | Concurrent Programming | We will explore the basics of threads and concurrent programming in Java.
Slides: |
Notebooks: |
04/29 05/01 | Potpourri | We will explore several advanced and tangential topics such as DevOps, Build tools, Virtualization, ClassLoaders, and so on.
Slides: |