아래 모든 날짜는 시간대 입니다.
   열리는 날    닫히는 날
수강기간
2024-05-06 00:00:00 GMT
2024-08-18 23:59:59 GMT
수강신청기간
2024-04-22 00:00:00 GMT
2024-05-05 23:59:59 GMT

'인간이 생각하는 방식으로 프로그래밍 하자!'라는 야심찬 목표를 가지고 시작한 개체지향 프로그래밍(OOP, Object-Oriented Programming)은 이제 주류 프로그래밍 패러다임이 되었습니다. 허나 기존의 프로그래밍 패러다임(예: 절차적 프로그래밍)에 비해 '인간이 생각하는 방식', 다른 말로 하면 '인간다움'이란 정의는 매우 주관적일 수밖에 없습니다. 각 개인이 속한 환경과 시대에 따라 세상을 보는 눈이 달라지니까요.

이 때문에 특정 OO 언어의 사용법만 익히는 것은 반쪽짜리 OOP 공부입니다. 특정 언어의 사용법은 객관적인 측면일 뿐이니까요. 이 외에 사람의 관점에서 바라본 실세계를 컴퓨터 프로그램의 개체로 모델링할 수 있는 능력(주관적인 측면)을 같이 키워나가야만 제대로 OOP를 배우는 겁니다. 후자는 개체지향 분석 및 설계(OOAD, Object-Oriented Analysis and Design)의 영역으로 본 과목은 OOP와 OOAD(이후 합쳐서 OO라고 표현)를 동시에 가르칩니다.

상술한 주관성 때문에 OO 분야에는 다양한 의견과 주장이 존재해왔습니다. 그리고 어느 시대와 진영의 자료로 공부했느냐에 따라 각 프로그래머가 OO(OOP와 OOAD를 모두 포함)를 이해하는 방식이 많이 다릅니다. 객관성을 추구하는 컴퓨터 과학/공학이라는 학문에 이런 광범위한 주관성은 많은 혼란을 야기합니다. 더 나아가 다른 주장이 나온 이유를 이해하려는 노력 없이 자신이 무비판적으로 수용하며 배운 내용에 기초하여 다른 진영이 무조건 틀렸다고 공격하는 모습들도 OO 분야에서는 종종 발견되는 건설적이지 못한 모습입니다.

이런 문제들을 해결하기 위해 본 과목은 현재 실무에서 다수설로 받아들이는 OO의 정의와 모델링/프로그래밍 기법을 배우는 외에도 이런 다양한 주장들이 나오게 된 배경과 각 주장의 장단점, 그리고 그들 사이에서 어떻게 밸런스를 잡아야 훌륭한 프로그래머가 될 수 있는지에 대한 가이드도 제공합니다.

수강 시작 날짜 : 2024-05-06 00:00:00 GMT

수업 내용
  • 메인 함수(Hello World)
  • 패키지와 폴더 구조
  • 빌드 및 실행
  • Java의 실행 모델
  • Java 언어의 기본 문법
  • 모듈

동영상 강의 범위(총 3시간 21분): 이 과목에서 사용하는 서비스 및 도구 ~ 정리

과제 및 실습
  • 실습 1

  • 과제 1  (제출 마감: 2024-05-26 22:00:00 GMT)

수업 내용
  • 개체지향 프로그래밍(OOP)의 필요성
  • OOP의 주관성 및 토론 시 주의할 점
  • OOP의 4대 특성 소개
  • 클래스와 개체
  • 참조형과 포인터
  • 생성자

동영상 강의 범위(총 2시간 37분): 구조체의 한계 ~ 정리

과제 및 실습
  • 실습 2

  • 과제 1  (제출 마감: 2024-05-26 22:00:00 GMT)

수업 내용
  • 접근 제어자(access modifier)
  • getter/setter 메서드
  • 캡슐화
  • 데이터 추상화
  • 개체 모델링(캡슐화, 데이터 추상화 편)
  • 클래스 다이어그램
  • 유연성과 재사용성

동영상 강의 범위(총 2시간 39분): 접근 제어자 ~ 정리

과제 및 실습
  • 실습 3

  • 과제 1  (제출 마감: 2024-05-26 22:00:00 GMT)

수업 내용
  • 정적(static) 멤버 변수 및 메서드
  • static에 대한 비판
  • 디자인 패턴 소개
  • 싱글턴
  • 내포(nested) 클래스

동영상 강의 범위(총 2시간 32분): 정적 메서드 ~ 정리

과제 및 실습
  • 실습 4

  • 과제 2  (제출 마감: 2024-06-16 22:00:00 GMT)

수업 내용
  • 상속
  • 개체의 명시적/암시적 캐스팅
  • RTTI(run time type identification) 기능
    • instanceof 연산자
  • Object 클래스

동영상 강의 범위(총 1시간 48분): 상속, 부모/자식 클래스 소개 ~ 정리

과제 및 실습
  • 실습 5

  • 과제 2  (제출 마감: 2024-06-16 22:00:00 GMT)

수업 내용
  • 사람에게 상속이 어려운 이유
  • 상속을 이해하는 두 가지 방법
  • 상속을 이용한 개체 모델링
  • 다중 상속
  • 상속과 추상화 능력

동영상 강의 범위(총 1시간 55분): 사람에게 상속이 어려운 이유 ~ 정리

과제 및 실습
  • 실습 6

  • 과제 2  (제출 마감: 2024-06-16 22:00:00 GMT)

수업 내용
  • OO에서 재사용성을 중요시하는 이유
  • 상속 vs 컴포지션
  • 상속이 유리한 경우
  • 컴포지션이 유리한 경우
  • 깊은 상속의 문제
  • has-a, is-a 관계
  • 엔티티 컴포넌트 시스템

동영상 강의 범위(총 1시간 25분): OO에서 재사용성을 중요시하는 이유 ~ 정리

과제 및 실습
  • 과제 3  (제출 마감: 2024-07-14 22:00:00 GMT)

수업 내용
  • 중간고사. 수업 및 과제 없음
과제 및 실습
  • 과제 3  (제출 마감: 2024-07-14 22:00:00 GMT)

수업 내용
  • 다형성(polymorphism)
  • 늦은 바인딩, 이른 바인딩
  • final 키워드
  • Object의 다형적 메서드

동영상 강의 범위(총 2시간 08분): 다형성, polymorphism의 단어 뜻 ~ 정리

과제 및 실습
  • 실습 7

  • 과제 3  (제출 마감: 2024-07-14 22:00:00 GMT)

수업 내용
  • 추상 메서드, 추상 클래스
  • 인터페이스
  • Java 어노테이션(annotation)
  • 인터페이스와 다중 상속
  • Object의 clone() 메서드

동영상 강의 범위(총 2시간 08분): 다형성, 상속, 추상화의 관계 ~ 정리

과제 및 실습
  • 실습 8

  • 과제 3  (제출 마감: 2024-07-14 22:00:00 GMT)

수업 내용
  • 인터페이스 vs 구현
  • 결합도(coupling)
  • 인터페이스에 대한 오해
  • 시퀀스 다이어그램
  • 디자인 패턴
    • 팩토리 메서드 패턴
    • 빌더 패턴

동영상 강의 범위(총 2시간 47분): 의존성과 결합도 ~ 시퀀스 다이어그램

과제 및 실습
  • 실습 9

  • 과제 4  (제출 마감: 2024-08-04 22:00:00 GMT)

수업 내용
  • 디자인 패턴
    • 랩퍼(wrapper), 어댑터 패턴
    • 프록시 패턴
    • 책임 연쇄 패턴
    • 옵저버 패턴
  • 예외(exception)
  • checked 예외와 unchecked 예외

동영상 강의 범위(총 2시간 54분): 래퍼 패턴 ~ 예외적인 상황에만 예외를 사용해야 하는 경우

과제 및 실습
  • 실습 10

  • 과제 4  (제출 마감: 2024-08-04 22:00:00 GMT)

수업 내용
  • 다양한 오류 상황 대처법
  • 올바른 예외처리 방법
  • SOLID 설계 정신

동영상 강의 범위(총 2시간 25분): 오류 상황, 예외 상황 ~ 정리

과제 및 실습
  • 실습 11

  • 과제 4  (제출 마감: 2024-08-04 22:00:00 GMT)

수업 내용
  • 소수설에서 태어난 다양한 주장들

동영상 강의 범위(총 1시간 43분): ADT와 PDA ~ 에필로그

과제 및 실습
  • 없음

수업 내용
  • 기말고사. 수업 및 과제 없음
과제 및 실습
  • 없음

제목   공지일   제출 마감  
실습 1
2024-05-06 00:00:00 GMT (1주 차) 2024-05-12 22:00:00 GMT
실습 2
2024-05-13 00:00:00 GMT (2주 차) 2024-05-19 22:00:00 GMT
실습 3
2024-05-20 00:00:00 GMT (3주 차) 2024-05-26 22:00:00 GMT
실습 4
2024-05-27 00:00:00 GMT (4주 차) 2024-06-02 22:00:00 GMT
실습 5
2024-06-03 00:00:00 GMT (5주 차) 2024-06-09 22:00:00 GMT
실습 6
2024-06-10 00:00:00 GMT (6주 차) 2024-06-16 22:00:00 GMT
실습 7
2024-07-01 00:00:00 GMT (9주 차) 2024-07-07 22:00:00 GMT
실습 8
2024-07-08 00:00:00 GMT (10주 차) 2024-07-14 22:00:00 GMT
실습 9
2024-07-15 00:00:00 GMT (11주 차) 2024-07-21 22:00:00 GMT
실습 10
2024-07-22 00:00:00 GMT (12주 차) 2024-07-28 22:00:00 GMT
실습 11
2024-07-29 00:00:00 GMT (13주 차) 2024-08-04 22:00:00 GMT
과제 1
2024-05-06 00:00:00 GMT (1주 차) 2024-05-26 22:00:00 GMT
과제 2
2024-05-27 00:00:00 GMT (4주 차) 2024-06-16 22:00:00 GMT
과제 3
2024-06-17 00:00:00 GMT (7주 차) 2024-07-14 22:00:00 GMT
과제 4
2024-07-15 00:00:00 GMT (11주 차) 2024-08-04 22:00:00 GMT
2024-05-19 23:59:59 GMT 환불 신청 마감
  • 성적표에 기록되지 않음
  • 전액 환불 (처리 수수료 US$ 100 공제)
2024-07-07 23:59:59 GMT 수강 철회 신청 마감
  • 성적표에 "W"로 표시
시험 응시 준비물
  1. 반드시 PC에서(모바일은 응시 불가) 크롬(Chrome) 브라우저를 사용해야 합니다.

  2. 시험을 볼 때 시험 감독 서비스를 사용하며, 서비스를 이용하기 위한 시스템 최소 사양은 다음과 같습니다.

윈도우 리눅스 크롬 운영체제
운영체제 윈도우 7+ 맥 OSX 10.9+ 우분투 18.04+ 크롬 58+
프로세서 인텔 펜티엄 이상 인텔 또는 ARM 인텔 펜티엄 이상 인텔 또는 ARM
사용 가능한 디스크 공간 250 MB 250 MB 250 MB 250 MB
램(메모리) 4 GB1 4 GB1 4 GB1 4 GB1
업로드 속도 0.092 Mbps - 0.244 Mbps
마이크 내장형 또는 독립형
웹캠 VGA 해상도 320x240 이상, 내장형 또는 독립형
1   메모리의 적어도 25%는 다른 응용 프로그램에서 사용되지 않는다고 가정할 때의 최소 용량입니다. 시험 도중에 시스템 크래시가 나는 일이 생기지 않도록 최소 용량의 50%를 확보해 두길 권장합니다.

통과 점수: 85%

  • 실습 1 (1.00 %)

  • 실습 2 (2.40 %)

  • 실습 3 (2.40 %)

  • 실습 4 (2.40 %)

  • 실습 5 (2.40 %)

  • 실습 6 (2.40 %)

  • 실습 7 (2.40 %)

  • 실습 8 (2.40 %)

  • 실습 9 (2.40 %)

  • 실습 10 (2.40 %)

  • 실습 11 (2.40 %)

  • 과제 1 (6.25 %)

  • 과제 2 (6.25 %)

  • 과제 3 (6.25 %)

  • 과제 4 (6.25 %)

  • 중간고사 (25.00%)

  • 기말고사 (25.00%)

학생 비율 점수
   열리는 날    닫히는 날
수강기간
2024-09-02 00:00:00 GMT
2024-12-15 23:59:59 GMT
수강신청기간
2024-08-19 00:00:00 GMT
2024-09-01 23:59:59 GMT

'인간이 생각하는 방식으로 프로그래밍 하자!'라는 야심찬 목표를 가지고 시작한 개체지향 프로그래밍(OOP, Object-Oriented Programming)은 이제 주류 프로그래밍 패러다임이 되었습니다. 허나 기존의 프로그래밍 패러다임(예: 절차적 프로그래밍)에 비해 '인간이 생각하는 방식', 다른 말로 하면 '인간다움'이란 정의는 매우 주관적일 수밖에 없습니다. 각 개인이 속한 환경과 시대에 따라 세상을 보는 눈이 달라지니까요.

이 때문에 특정 OO 언어의 사용법만 익히는 것은 반쪽짜리 OOP 공부입니다. 특정 언어의 사용법은 객관적인 측면일 뿐이니까요. 이 외에 사람의 관점에서 바라본 실세계를 컴퓨터 프로그램의 개체로 모델링할 수 있는 능력(주관적인 측면)을 같이 키워나가야만 제대로 OOP를 배우는 겁니다. 후자는 개체지향 분석 및 설계(OOAD, Object-Oriented Analysis and Design)의 영역으로 본 과목은 OOP와 OOAD(이후 합쳐서 OO라고 표현)를 동시에 가르칩니다.

상술한 주관성 때문에 OO 분야에는 다양한 의견과 주장이 존재해왔습니다. 그리고 어느 시대와 진영의 자료로 공부했느냐에 따라 각 프로그래머가 OO(OOP와 OOAD를 모두 포함)를 이해하는 방식이 많이 다릅니다. 객관성을 추구하는 컴퓨터 과학/공학이라는 학문에 이런 광범위한 주관성은 많은 혼란을 야기합니다. 더 나아가 다른 주장이 나온 이유를 이해하려는 노력 없이 자신이 무비판적으로 수용하며 배운 내용에 기초하여 다른 진영이 무조건 틀렸다고 공격하는 모습들도 OO 분야에서는 종종 발견되는 건설적이지 못한 모습입니다.

이런 문제들을 해결하기 위해 본 과목은 현재 실무에서 다수설로 받아들이는 OO의 정의와 모델링/프로그래밍 기법을 배우는 외에도 이런 다양한 주장들이 나오게 된 배경과 각 주장의 장단점, 그리고 그들 사이에서 어떻게 밸런스를 잡아야 훌륭한 프로그래머가 될 수 있는지에 대한 가이드도 제공합니다.

수강 시작 날짜 : 2024-09-02 00:00:00 GMT

수업 내용
  • 메인 함수(Hello World)
  • 패키지와 폴더 구조
  • 빌드 및 실행
  • Java의 실행 모델
  • Java 언어의 기본 문법
  • 모듈

동영상 강의 범위(총 3시간 21분): 이 과목에서 사용하는 서비스 및 도구 ~ 정리

과제 및 실습
  • 실습 1

  • 과제 1  (제출 마감: 2024-09-22 22:00:00 GMT)

수업 내용
  • 개체지향 프로그래밍(OOP)의 필요성
  • OOP의 주관성 및 토론 시 주의할 점
  • OOP의 4대 특성 소개
  • 클래스와 개체
  • 참조형과 포인터
  • 생성자

동영상 강의 범위(총 2시간 37분): 구조체의 한계 ~ 정리

과제 및 실습
  • 실습 2

  • 과제 1  (제출 마감: 2024-09-22 22:00:00 GMT)

수업 내용
  • 접근 제어자(access modifier)
  • getter/setter 메서드
  • 캡슐화
  • 데이터 추상화
  • 개체 모델링(캡슐화, 데이터 추상화 편)
  • 클래스 다이어그램
  • 유연성과 재사용성

동영상 강의 범위(총 2시간 39분): 접근 제어자 ~ 정리

과제 및 실습
  • 실습 3

  • 과제 1  (제출 마감: 2024-09-22 22:00:00 GMT)

수업 내용
  • 정적(static) 멤버 변수 및 메서드
  • static에 대한 비판
  • 디자인 패턴 소개
  • 싱글턴
  • 내포(nested) 클래스

동영상 강의 범위(총 2시간 32분): 정적 메서드 ~ 정리

과제 및 실습
  • 실습 4

  • 과제 2  (제출 마감: 2024-10-13 22:00:00 GMT)

수업 내용
  • 상속
  • 개체의 명시적/암시적 캐스팅
  • RTTI(run time type identification) 기능
    • instanceof 연산자
  • Object 클래스

동영상 강의 범위(총 1시간 48분): 상속, 부모/자식 클래스 소개 ~ 정리

과제 및 실습
  • 실습 5

  • 과제 2  (제출 마감: 2024-10-13 22:00:00 GMT)

수업 내용
  • 사람에게 상속이 어려운 이유
  • 상속을 이해하는 두 가지 방법
  • 상속을 이용한 개체 모델링
  • 다중 상속
  • 상속과 추상화 능력

동영상 강의 범위(총 1시간 55분): 사람에게 상속이 어려운 이유 ~ 정리

과제 및 실습
  • 실습 6

  • 과제 2  (제출 마감: 2024-10-13 22:00:00 GMT)

수업 내용
  • OO에서 재사용성을 중요시하는 이유
  • 상속 vs 컴포지션
  • 상속이 유리한 경우
  • 컴포지션이 유리한 경우
  • 깊은 상속의 문제
  • has-a, is-a 관계
  • 엔티티 컴포넌트 시스템

동영상 강의 범위(총 1시간 25분): OO에서 재사용성을 중요시하는 이유 ~ 정리

과제 및 실습
  • 과제 3  (제출 마감: 2024-11-10 22:00:00 GMT)

수업 내용
  • 중간고사. 수업 및 과제 없음
과제 및 실습
  • 과제 3  (제출 마감: 2024-11-10 22:00:00 GMT)

수업 내용
  • 다형성(polymorphism)
  • 늦은 바인딩, 이른 바인딩
  • final 키워드
  • Object의 다형적 메서드

동영상 강의 범위(총 2시간 08분): 다형성, polymorphism의 단어 뜻 ~ 정리

과제 및 실습
  • 실습 7

  • 과제 3  (제출 마감: 2024-11-10 22:00:00 GMT)

수업 내용
  • 추상 메서드, 추상 클래스
  • 인터페이스
  • Java 어노테이션(annotation)
  • 인터페이스와 다중 상속
  • Object의 clone() 메서드

동영상 강의 범위(총 2시간 08분): 다형성, 상속, 추상화의 관계 ~ 정리

과제 및 실습
  • 실습 8

  • 과제 3  (제출 마감: 2024-11-10 22:00:00 GMT)

수업 내용
  • 인터페이스 vs 구현
  • 결합도(coupling)
  • 인터페이스에 대한 오해
  • 시퀀스 다이어그램
  • 디자인 패턴
    • 팩토리 메서드 패턴
    • 빌더 패턴

동영상 강의 범위(총 2시간 47분): 의존성과 결합도 ~ 시퀀스 다이어그램

과제 및 실습
  • 실습 9

  • 과제 4  (제출 마감: 2024-12-01 22:00:00 GMT)

수업 내용
  • 디자인 패턴
    • 랩퍼(wrapper), 어댑터 패턴
    • 프록시 패턴
    • 책임 연쇄 패턴
    • 옵저버 패턴
  • 예외(exception)
  • checked 예외와 unchecked 예외

동영상 강의 범위(총 2시간 54분): 래퍼 패턴 ~ 예외적인 상황에만 예외를 사용해야 하는 경우

과제 및 실습
  • 실습 10

  • 과제 4  (제출 마감: 2024-12-01 22:00:00 GMT)

수업 내용
  • 다양한 오류 상황 대처법
  • 올바른 예외처리 방법
  • SOLID 설계 정신

동영상 강의 범위(총 2시간 25분): 오류 상황, 예외 상황 ~ 정리

과제 및 실습
  • 실습 11

  • 과제 4  (제출 마감: 2024-12-01 22:00:00 GMT)

수업 내용
  • 소수설에서 태어난 다양한 주장들

동영상 강의 범위(총 1시간 43분): ADT와 PDA ~ 에필로그

과제 및 실습
  • 없음

수업 내용
  • 기말고사. 수업 및 과제 없음
과제 및 실습
  • 없음

제목   공지일   제출 마감  
실습 1
2024-09-02 00:00:00 GMT (1주 차) 2024-09-08 22:00:00 GMT
실습 2
2024-09-09 00:00:00 GMT (2주 차) 2024-09-15 22:00:00 GMT
실습 3
2024-09-16 00:00:00 GMT (3주 차) 2024-09-22 22:00:00 GMT
실습 4
2024-09-23 00:00:00 GMT (4주 차) 2024-09-29 22:00:00 GMT
실습 5
2024-09-30 00:00:00 GMT (5주 차) 2024-10-06 22:00:00 GMT
실습 6
2024-10-07 00:00:00 GMT (6주 차) 2024-10-13 22:00:00 GMT
실습 7
2024-10-28 00:00:00 GMT (9주 차) 2024-11-03 22:00:00 GMT
실습 8
2024-11-04 00:00:00 GMT (10주 차) 2024-11-10 22:00:00 GMT
실습 9
2024-11-11 00:00:00 GMT (11주 차) 2024-11-17 22:00:00 GMT
실습 10
2024-11-18 00:00:00 GMT (12주 차) 2024-11-24 22:00:00 GMT
실습 11
2024-11-25 00:00:00 GMT (13주 차) 2024-12-01 22:00:00 GMT
과제 1
2024-09-02 00:00:00 GMT (1주 차) 2024-09-22 22:00:00 GMT
과제 2
2024-09-23 00:00:00 GMT (4주 차) 2024-10-13 22:00:00 GMT
과제 3
2024-10-14 00:00:00 GMT (7주 차) 2024-11-10 22:00:00 GMT
과제 4
2024-11-11 00:00:00 GMT (11주 차) 2024-12-01 22:00:00 GMT
2024-09-15 23:59:59 GMT 환불 신청 마감
  • 성적표에 기록되지 않음
  • 전액 환불 (처리 수수료 US$ 100 공제)
2024-11-03 23:59:59 GMT 수강 철회 신청 마감
  • 성적표에 "W"로 표시
시험 응시 준비물
  1. 반드시 PC에서(모바일은 응시 불가) 크롬(Chrome) 브라우저를 사용해야 합니다.

  2. 시험을 볼 때 시험 감독 서비스를 사용하며, 서비스를 이용하기 위한 시스템 최소 사양은 다음과 같습니다.

윈도우 리눅스 크롬 운영체제
운영체제 윈도우 7+ 맥 OSX 10.9+ 우분투 18.04+ 크롬 58+
프로세서 인텔 펜티엄 이상 인텔 또는 ARM 인텔 펜티엄 이상 인텔 또는 ARM
사용 가능한 디스크 공간 250 MB 250 MB 250 MB 250 MB
램(메모리) 4 GB1 4 GB1 4 GB1 4 GB1
업로드 속도 0.092 Mbps - 0.244 Mbps
마이크 내장형 또는 독립형
웹캠 VGA 해상도 320x240 이상, 내장형 또는 독립형
1   메모리의 적어도 25%는 다른 응용 프로그램에서 사용되지 않는다고 가정할 때의 최소 용량입니다. 시험 도중에 시스템 크래시가 나는 일이 생기지 않도록 최소 용량의 50%를 확보해 두길 권장합니다.

통과 점수: 85%

  • 실습 1 (1.00 %)

  • 실습 2 (2.40 %)

  • 실습 3 (2.40 %)

  • 실습 4 (2.40 %)

  • 실습 5 (2.40 %)

  • 실습 6 (2.40 %)

  • 실습 7 (2.40 %)

  • 실습 8 (2.40 %)

  • 실습 9 (2.40 %)

  • 실습 10 (2.40 %)

  • 실습 11 (2.40 %)

  • 과제 1 (6.25 %)

  • 과제 2 (6.25 %)

  • 과제 3 (6.25 %)

  • 과제 4 (6.25 %)

  • 중간고사 (25.00%)

  • 기말고사 (25.00%)

학생 비율 점수