Java Programming 2

Location: Room 219, 德田館
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

Goal

Prerequisites

Text

References

Java

Data structures and algorithms

Object-oriented analysis and design

Computer organization/architecture

Design patterns

Databases

Concurrent Programming

Online judge systems

Additional reading

IDE

Overview

OOP

Data structures and algorithms

Concurrent programming

Design Patterns

Schedule [ 281 ]

Date Summary
2017.4.15 pre-test (due 4/16 before class; email: d00922011@ntu.edu.tw), quick review on OOP (class, object, encapsulation, constructor, static, this, super, inheritance, interface), Object class;
2017.4.16 review on pre-test (see code/), analysis of algorithms, reflection (see more in Java Reflection Tutorial by Jakob Jenkov; also see off. ref.), Class class, generics (see covariance and contravariance rule; see Java generics and type erasure for array types and generics), annotation;
2017.4.22 assertion, JUnit, lambda expressions, array list, linked list, stack, queue;
2017.4.23 priority queue (+ heaps and heap sort);
2017.4.29 symbol tables, binary search tree;
2017.4.30 hash table, undirected graph;
2017.5.6 graph traversal (DFS, BFS), directed graph, greedy algorithms (see more examples: greedy algorithms ii), dynamic programming (see more examples: dynamic programming ii); feedback;
2017.5.7 multithreading, synchronization (mutex, critical section, atomic operations, synchronized methods/statements, producer-consumer problem, race condition, semaphore, deadlock, dining philosopher);
2017.5.13 multithreaded server (see Java Socket Programming Examples), database tutorial, JDBC tutorial (also see Java JDBC, A step by step guide to using JDBC with Eclipse, databases and tomcat, Creating a Simple Web Application Using a MySQL Database), access methods of databases (CREATION OF B-TREE, B-tree, m-way tree);
2017.5.14 design patterns (see design_pattern_tutorial.pdf, Design Patterns by OODESIGN, java-design-patterns-example-tutorial), dependency injection (see An Absolute Beginner's Tutorial on Dependency Inversion Principle, Inversion of Control and Dependency Injection); feedback sheet; FYR: song_lecture.zip;

Sample code

Gradebook