Course Information

Lecturer Prof. Seonah Lee
Time and Place Theory (066) Monday: 407-202 12:00-14:00
  Practice (066) Thursday: 407-202 11:00-13:00
  Theory (065) Tuesday: 407-202 14:00-16:00
    Wednesday: 407-202 13:00-15:00

Before taking this course, students should know either Python or C, because we are going to quickly review the basic grammar of the Java programming languages within a month. Students who have never learned a programming language could find it difficult to keep up the progress.

We will use the GNU e-learning system: http://e-campus.gnu.kr. You can access it by using your mobile, http://me-campus.gnu.kr. You also have to submit your assignments to the e-campus site. When submitting your assignment, please do not use a zip file. Instead, please use a doc file or hwp file to include all contents. If you have a question, ask the question via KaKao Chat. 

Course Introduction

We are going to learn the Java programming language, its object-oriented concept, and the GUI programming. Java is a practical, powerful language to utilize. By learning Java, you can easily implement an Android application by using Android Studio. By learning Java, you can easily understand what is an object-oriented programming. Java is one of top ranked programming languages (see TIOBE Index). If you want to know where Java is used, please see the article, "Where is Java used in Real World?"

Objective

  • Students will be able to read and write a Java program.
  • Students will be able to explain an object-oriented programming concept.
  • Students will have an opportunity to apply the object-oriented programming concept to a software project.
  • Students can practice to improve their programming skills.
  • Students should understand types of plagiarism. Direct copying will be strictly prohibited and punished.

Goal

In this course, students are going to learn the followings. We shorten the period of this semester, we will not deal with the fourth topic "Android programming" in Spring 2020.

  • Java Programming LanguageCompiling and running the program, Variables, Types, and Arithmetic Expressions, Control Flows(Selection and Repetition), Arrays and Functions, Generics, Collections, Multi-threading, File I/O
  • Object-oriented Programming Concepts: Object, Class, Methods, and Fields, Encapsulation and Information hiding, Inheritance and Polymorphism, Abstract class and Interface, Package, etc.
  • GUI programming: Graphical User Interface, Event-driven programming, Swing-components, Exception handling

Installation

OpenJDK와 이클립스 설치 

Textbook

The course is designed based on the MIT OpenCourseWare, Introduction to Programming in Java. In addition, for the students who prefer to buy one, I recommend R1 in the following books.

R1. 든든한 Java Programming | 심재연 지음 | 연두에디션 | 2018
R2. 어서와 자바는 처음이지! | 천인국 지음 | 인피니티북스 | 2015
R3. UML과 JAVA로 배우는 객체지향 설계 및 구현 | 김철진, 조은숙, 배동희 지음 | 인피니티북스 | 2013

R4. Think Java: How to Think Like a Computer Scientist" | Allen B. Downey, Chris Mayfield | 2016
R5. Introduction to programming using Java | David J. Eck | 2016

Helpful Link

Student can understand Java and improve their programming skills in the following links:

(for beginners)
L1. 생활코딩>언어>Java | 이고잉 만듦 | 생활코딩 | 2013 
L2. 어서와 자바는 처음이지! PPTs  | 천인국 만듦 | 인피니티북스 | 2017, 봄 수업 자료

L3. Java Programming Tutorials (Beginner) | thenewboston | youtube | 2009
L4. Java Programming Tutorials (Intermediate)| thenewboston | youtube | 2014
L5. Java Programming | Code Monkey Charlie | 2014
L6. 
하노이탐 개념 이해하기 | 칸 아카데미
L7. 
하노이 탑 문제 정리 | 아브의 꿀오분

(for advancers)
L1. 백준 알고리즘 | 최백준 | 스타트링크 | 2018 
L2. SW Expert Academy  | Samsung | 2017 
L3. OOPS concept interview questions | JavaQuestions | 2018
L4. 알고리즘 공부 사이트/문제 추천 | JusticeHui | 2019 
L5. Java Programming Tutorial, Programming Graphical User Interface (GUI)
L6. A Visual Guide to Layout Managers
L7. How to make Editable JTable in Java Swing
L8. Java JTable

(FAQs)
Q1. Why String is immutable in Java?
Q2. String is passed by “reference” in Java
Q3. Abstract classes vs Interfaces in Java (Video)
Q4. Core Java Interview Questions

Evaluation

Mid-term Exam 10% Assignment 20%
Final Exam 40% Project 20%
Attendance, Individual Report, Questions, Discussion 10%  Total 100%

*. The grade of assignment will be subtracted by 1 point each day after the deadline. 

Schedule

W

Topic

Date

Content 

Video Lecture

1

Java:

IO

Operators

Mar. 16

Course Introduction
Installation
KOR:
Ch1. Hello world!

1. 강좌 소개
2. 개념 소개
3. JDK와 이클립스 설치
4. Hello Program 실행

Mar. 18 

2

Java:

Condition

Loops

Mar. 23

Mar. 25

3

OOP:

Method

Class

Object 

Mar. 30

Apr. 01

KOR:

4

OOP:

Array

Collection

Apr. 06

Apr. 08

5

OOP:

Inheritance

Encapsulation

Apr. 13

Apr. 15

6

OOP:

Constructor

Overloading 

Apr. 20

Apr. 22

Review, constructor,
up-casting, and down-casting
in an inheritance relationship
(No slides)

 1. 프로젝트 진행

7

OOP:

Polymorphism

Overriding 

Apr. 27

 

 

Apr. 29

Mid-term Exam 10-12 am (101)

 

8

OOP:

Abstract

Interface 

May 04 

KOR:

May 06

KOR:
Review#6. Interface
Review#7. Polymorphism

 9

Exceptions

May 11 

10  Files   May 18
May 20

Logging

Serialization

11   GUI  May 25 
May 28
12   Events   Jun. 1 
Jun. 3

12

Threads 

 

Jun. 08

Threads
KOR:
Ch11. Threads

 

Jun. 10

 Thread Synchronization

 

13

Network, etc. 

 

Jun. 15

KOR:
Ch12. Network 

 

Jun. 17

KOR:
Ch14. Tetris
download Shape.java

 

14

 

Jun. 22

Final Exam 10-12 am (101)

 

*. Some slides are outdated, and will be updated according to the class progress.

*. The schedule, lecture materials, and assignments can be changed and updated just before each class.