Java Programming 2

Location: Room 108, 德田館
Time: 1300 ~ 1600, Saturday and Sunday


``... it is always a good practice first to make your code right, and then make it fast.''
-- Brian Goetz

Objectives

Prerequisites

Text

References

Java

Data structures and algorithms

Hashing and its applications

Concurrent Programming

Computer organization/architecture

Object-oriented analysis and design

Design patterns

Databases

misc

Online judge systems

Additional reading

IDE

Overview

OOP

Concurrent programming

Data structures and algorithms

Design patterns

Database theory and JDBC

Schedule [ 281, 282, 283, 288, 289, 291 ]

Date Summary
2017.8.19 Object class (equals, compare, clone); 20170813.pdf for self-test;
2017.8.20 (3h30m) generics 1, generics 2, reflection (also read metaprogramming), Java annotations (see javadoc);
2017.8.26 (3h30m) multithreading, synchronization;
2017.8.27 (3h30m) multithreaded server (see Java Socket Programming Examples), Java 8 Lambda Expressions & Streams (see lambda expressions and functional programming, parallel functional programming; the official document for Java Aggregate Operations, reduce: identity, accumulator; collect: supplier, accumulator, combiner, Lambdas and Streams in Java 8 Libraries; also read Lambdas & Streams In JDK 8: Beyond The Basics, JDK 8: Stream Style, more examples in practice: Java 8 No More Loop), JUnit (also see unit testing);
2017.9.2 (no class)
2017.9.3 (no class)
2017.9.9 (no class)
2017.9.10 (no class)
2017.9.16 (3h30m) JVM, analysis of algorithms, array list, linked list, stack, queue;
2017.9.17 (3h30m) priority queue, heaps and heap sort, symbol tables, binary search tree;
2017.9.23 (3h30m) hash table (for the reason of ``one of a billion bug'', see integer overflow), ;
2017.9.24 undirected graph, directed graph, minimum spanning tree, shortest path;
2017.9.30 (no class)
2017.10.1 event-driven programming: Java graphics and GUIs, Java event handling (see more events, listeners, callbacks, Java 2D games tutorial, snake game), design patterns 1, design patterns 2, MVC patterns (also see Principles of Design Patterns, Java 8 Stream API and RxJava Comparison, and android architecture);

Sample code

Gradebook