Date | Summary |
2020.3.28 video |
|
2020.3.29 video |
- Part I: generics
- Generics
- Supplementary materials for generics
- Pankaj, Java generics example tutorial – generic method, class, interface, JournalDev, 2018
- Oracle, Generics tutorial, guidelines for wildcard use, wildcard capture
- You can find generic programming in many languages
- See type theory and category theory if you want to know how to design generics
- Ronald Garcia, etc., a comparative study of language support for generic programming, 2003
- Exercise: object comparison
|
2020.4.11 video |
- Part I: Stream API (with lambda expressions) & Optional API
- Lambdas and streams (try StreamDemo.zip)
- Raoul-Gabriel Urma, Java SE 8's Optional, Oracle, 2014
- Marius Herring, Java 8 no more loop, 2015
- Another example: ParallelStreamWordCount.java with a text file The King James Bible
- Supplementary materials for Stream framework
- Alonzo Church, lambda calculus proposed in 1930s
- Ted Neward, Java 8: lambdas part 1 and Java 8: lambdas part 2, Oracle, 2013
- Does a lambda expression create an object on the heap every time it's executed?, StackOverflow, 2017
- Oracle tutorial: lambda expressions
- Mario Fusco, Richard Warburton, and Raoul Urma, Java 8 lambdas - a peek under the hood
- Sergey Kuksenko, JDK 8: lambda performance study, Oracle, 2014
- Baeldung, Java infinite streams
- JDK 8: stream style, Oracle
- More slides are listed below: lambda expressions and functional programming, lambdas & streams in JDK 8: beyond the basics, Java 8 lambda expressions & streams
- Parallel functional programming in Java (advanced level)
- Baeldung, guide to Java 8 Optional, 2018.4.18
- Use Java 8 parallel streams to read a file and tally word counts
- 林信良, 神秘的Monad不神秘, 2014.4.11
|
2020.4.12 video |
- Part I: reflection & annotation
- Part I: Java virtual machine (JVM)
- JVM (see animated slides for Java activation records for bank account example)
- Supplementary materials for JVM
|
2020.4.18 |
- Part II: concurrent programming
- Basics of operating systems (OS)
- Multithreading basics
|
2020.4.19 |
- Part II: concurrent programming (cont'd)
- Synchronization (Try SemaphoreDemo.java)
- Supplementary materials for concurrency
- Oracle tutorial: lesson: concurrency
- Brandon Skerritt, concurrent programming in Java
- Vivek Sarkar, synchronized statement, advanced locking, Java executors and synchronizers, volatile variables and Java memory model
- Jim Huang (Jserv), 作業系統概念: Concurrency 程式設計篇
- Jim Huang (Jserv), Linux kernel, 2019
- Hyunyoung Lee, concurrency in java, 2019
- Linus Torvalds, a reply to discussion about spinlock implementation and Linux scheduler (1, 2, 3, 4), 2020.1.3 (also read news)
- Application: multithreaded server (client_server_model_sample.zip)
- Supplementary materials for computer network
- Concurrent framework
- Code: ConcurrentFramework.zip
- (FYR) JavaScript Promise 全介紹
Part III: data structures and algorithms
|
2020.4.25 |
- Part III: data structures and algorithms (cont'd)
|
2020.4.26 |
- Part III: data structures and algorithms (cont'd)
|
2020.5.2 |
- Part III: data structures and algorithms (cont'd)
- Undirected graph (try Maze.jar; download the source code here while dependency of Maze.java can be found in CollisionSystem.zip)
- Supplementary materials for undirected graphs
- Directed graph
- Supplementary materials for directed graphs (digraphs)
- More topics about data structures and algorithms
|
2020.5.3 |
- Part IV: design patterns
- Head first design patterns, 2014, O'Reilly (中文翻譯版)
- Design patterns by example, strategy, bridge, and factory design patterns
- MVC patterns, application: free marker
- (FYR) module design, principles of design patterns, design patterns 1, design patterns 2
- (FYR) reactive programming: reactive programming in Java 8 with RxJava, Java 8 Stream API and RxJava comparison
- (FYR) A DESIGN-PATTERN QUICK REFERENCE
- (FYR) 蔡昇達, 設計模式與遊戲開發的完美結合, 2016 (code examples)
- (FYR) case study: android architecture
- Part V: misc
|