Java Programming

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


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

Instructor information

Wifi Access

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.

The topics delivered in the following weeks are as follows:

In my humble opinion, I think I am trying to show you a big picture about COMPUTER SCIENCE.

Prerequisites

Text

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, 291, 292, 293, 294, 295, 296, 297, 298, 299, 301, 304, 305, 306, 307, 308 ]

Date Summary
2019.1.5 programs, computational solutions, computer systems (CPUs, memory, memory hierarchy), programming languages (high-level, assembly, machine code), algorithms, JDK + Eclipse, first Java program;
2019.1.6 variables, data types (int, double, char, boolean) (see IEEE754 standard; also see some disasters attributable to numerical analysis), assignment operator (=), arithmetic operators (+, -, *, /, %), type conversion, casting, rational operators (>, <, ==), logical operators (!, &&, ||, ^);
2019.1.12 compound operators (+=, ++), reference types, Scanner object, selections (if-else if-else, switch-case-default, ?: operator), loops (while, do-while; also see pp. 8-10 of the slides 20180824.pdf for programming games);
2019.1.13 for loops, jump statements, nested loops; HW1: Lab 2 due 2019.1.20;
2019.1.19 (no class)
2019.1.20 analysis of algorithms (you may refer to the slides of analysis of algorithms for further details); HW2: case (C) and (D) in p. 152 of the slides due 2019.1.26;
2019.1.26 arrays, for-each loops, briefing data structures, sorting algorithms, searching algorithms, higher-dimensional arrays, methods;
2019.1.27 call stack, scope of variable, method overloading, recursion, classe & object (also see what makes OOP ``good''?), fields and methods, encapsulation; HW3: Lab 3 and 4 due 2019.2.16 (FYR: DeepMind AI「AlphaStar」對戰《星海爭霸 II》職業高手,取得十勝一敗成績 by Engadget);
2019.2.16 constructor, this operator, static members, garbage collection, HAS-A relationship (aggregation) (you should know memory and objects);
2019.2.17 IS-A relationships, inheritance, super operator, method overriding (worth to study relationBetweenClasses_slides.pdf), subtype polymorphism, up/down casting, instanceof operator; HW4: Lab 6 due 2019.2.24;
2019.2.24 final variable/method/class, abstract class/method, interface, wrapper classes, immutable objects, enum types, namespace, nested classes, anonymous classes, iterators, packages, class path, jar, assertion and exception handling, strings, regular expressions (see regex by Oracle, or regexone, regex crossword), file NIO (Chapter 10: File System), events, listeners, callbacks, Java graphics and GUIs, Java event handling, Java 2D games tutorial (see snake game); feedback sheet; promotion: Java Programming 2; homework submission deadline: 2019.3.3;

Sample code

Homework

Gradebook

References

Java (introductory level)

Java (advanced level)

Data structures and algorithms

Object-oriented analysis and design

Computer organization/architecture

Misc

Additional reading