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 Language: Compiling 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
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 |
1. 강좌 소개 |
|
Mar. 18 |
||||
2 |
Java: Condition Loops |
Mar. 23 |
1. 변수 설명
2. 연산자 설명
3. 입출력 설명
4. 조건문 설명
|
|
Mar. 25 |
||||
3 |
OOP: Method Class Object |
Mar. 30 |
1. 메소드와 매개변수
2. 메소드와 리턴값
3. 메소드의 변수범위
4. 클래스개념과 필드
|
|
Apr. 01 |
KOR:
|
1. 클래스와 생성자
2. 클래스와 메소드
|
||
4 |
OOP: Array Collection |
Apr. 06 |
1. 배열
2. 문자열과 콜렉션
|
|
Apr. 08 |
1. 프로젝트 진행
2. Reference
3. Static
|
|||
5 |
OOP: Inheritance Encapsulation |
Apr. 13 |
1. 상속개념 I
2. 상속개념 II
3. 동적 바인딩
|
|
Apr. 15 |
1. 캡슐화
3. 프로젝트 진행
|
|||
6 |
OOP: Constructor Overloading |
Apr. 20 |
1. 메소드 오버로딩
2. 메소드 오버라이딩
|
|
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:
|
1. 추상 클래스
2. 인터페이스 I
3. 인터페이스 II
|
May 06 |
1. 프로젝트 추상화
2. 프로젝트 리팩토링 I
3. 프로젝트 리팩토링 II
|
|||
9 |
Exceptions |
May 11 |
1. 예외 처리 I
2. 예외 처리 II
3. 프로젝트 예외 처리 I
|
|
10 | Files | May 18 |
1. 파일 입출력 I
2. 파일 입출력 II
|
|
May 20 |
1. 로깅 개념
2. 로깅 프로젝트 적용
3. 직렬화 개념
4. 직렬화 프로젝트 적용
|
|||
11 | GUI | May 25 |
1. Swing GUI I
2. Swing GUI II
|
|
May 28 |
1. 레이아웃 매니저 I
2. 레이아웃 매니저 II
3. 프로젝트 GUI 1
4. 프로젝트 GUI 2
5. 프로젝트 GUI 3
|
|||
12 | Events | Jun. 1 |
1. 버튼 이벤트 처리
2. 마우스 이벤트 처리
3. 키보드 이벤트 처리
4. 프로젝트 버튼 이벤트
|
|
Jun. 3 |
1. 마우스 어댑터
2. 키 어댑터
3. 그래픽스
4. GUI 통합
|
|||
12 |
Threads
|
Jun. 08 |
Threads |
|
Jun. 10 |
Thread Synchronization |
|
||
13 |
Network, etc.
|
Jun. 15 |
KOR: |
|
Jun. 17 |
KOR: |
|
||
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.