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

Instructor information

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

Installation & Wifi

Overview

OOP

Concurrent programming

Data structures and algorithms

Design patterns

Database theory and JDBC

My wish list

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

Date Summary
2018.6.2 OOP: a quick review;
2018.6.3 generics (also see generics tutorial by Oracle), Object class with equals, compare and clone;
2018.6.9 (lecture cancellation)
2018.6.10 (3h30m) reflection and annotation (see java annotation design and javadoc), multithreads;
2018.6.16 (lecture cancellation)
2018.6.17 (lecture cancellation)
2018.6.23 (3h30m) synchronization, multithreaded server (client_server_model_sample.zip; see Java Socket Programming Examples), lambdas and streams (MonteCarloByStream.zip; also see parallel functional programming in Java, lambda expressions and functional programming, Lambdas & Streams In JDK 8: Beyond The Basics, JDK 8: Stream Style, and Java 8 Lambda Expressions & Streams; more examples in practice: Java 8 No More Loop);
2018.6.24 (3h30m) JUnit in Eclipse (also read unit test), JVM (see Animated PPT slides for Java Activation Records for Bank Account example), analysis of algorithms, array list, linked list, stack, queue;
2018.6.30 (3h30m) priority queue, heaps and heap sort (particle collision simulation), symbol tables;
2018.7.1 (3h30m) binary search tree, hash table (for the reason of ``one of a billion bug'', see integer overflow; you may also see Bitcoin and bitcoin tutorial for the most surging cryptocurrency these years);
2018.7.7 (3h30m) undirected graph, directed graph, minimum spanning tree, shortest path, tries, regular expressions, data compression;
2018.7.8 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