Java Programming

Location: Room 223B, 德田館
Time: 0900 ~ 1200, Saturday and Sunday


``Java is C++ without the guns, knives, and clubs.''
-- James Gosling, co-inventor of Java (1955-)

Objectives

This course is designed for the students who want to learn Java but have any programming experiences before. We will start with the very beginning of program design and fundamental concepts about programs and machines. You are expected to be capable to implement your idea in Java independently after 30 hours of lectures. Furthermore, I wish you could learn other programming languages without suffering from starting over.

Prerequisites

Text

References

Java (introductory level)

Java (advanced level)

Data structures and algorithms

Object-oriented analysis and design

Computer organization/architecture

Related courses

Misc

Additional reading

Installation

Overview

Procedural programming

Object-oriented programming

Utilities

Data structures and algorithms

Design patterns

Schedule [ 247, 250, 251, 252, 253, 254, 255, 260, 261, 263, 265, 266, 268, 269, 271, 274, 275, 276, 277, 278, 280, 281, 281n, 282, 283, 284, 286, 289, 290 ]

Date Summary
2017.10.14 programs, computational solutions, computer systems (CPUs, memory, memory hierarchy), programming languages (high-level, assembly, machine code), algorithms, JDK + Eclipse, first Java program;
2017.10.15 variables, data types (int, double, char, boolean) (see Some disasters attributable to Numerical Analysis), arithmetic operators (+, -, *, /, %), assignment operator (=), type conversion, rational operators (>, <, ==), logical operators (!, &&, ||, ^), compound operators (+=, ++); HW0: Lab 0 due 10/21;
2017.10.21 selections (if-else if-else, switch-case, ?: operator), loops (while, do-while);
2017.10.22 loops (for), jump statements, nested loops; HW1: Lab 1 and 2 due 10/28;
2017.10.28 analysis of algorithms, arrays;
2017.10.29 for-each loops, sorting algorithms, searching algorithms, briefing data structures, higher-dimensional arrays, methods; HW2: see the email due 11/4; feedback;
2017.11.4 call stack, scope of variable, method overloading, recursion (also read this; see more examples: ch18-recurex), abstraction, classes & objects, fields and methods, encapsulation;
2017.11.5 constructors, this operator, static members, garbage collection, HAS-A relationship (aggregation), memory and objects, IS-A relationship, inheritance; HW3: Lab 3 and 4 due 11/11;
2017.11.11 method overriding, binding, (subtype) polymorphism, up/down casting, instanceof operator, final variable/method/class, abstract classes/methods, interfaces;
2017.11.12 packages, wrapper classes, immutable objects, enum types, namespace, nested classes, anonymous classes, iterators, classpath, JAR, assertion and exception handling, strings, regular expressions (see regex by Oracle, or regexp, regex crossword), file I/O, events, listeners, callbacks, Java graphics and GUIs, Java event handling, Java 2D games tutorial (see snake game), JavaFX tutorial;

Sample code

Homework

Gradebook