Lecture/컴퓨터프로그래밍및실습/2010

Retired DISLab
이동: 둘러보기, 찾기

컴퓨터프로그래밍및실습

담당 교수

  • 교수 : 박상원 (413호, Sangwon Park-emailaddr.png)
  • 조교 : 최화영 (401호, 330-4547, hychoe@dislab.hufs.ac.kr)

교과목개요 및 학습목표

컴퓨터 프로그래밍에 대하여 배웁니다. 정보통신공학과 학생이라면 모두 프로그래밍을 잘 할 수 있어야 합니다. 프로그램은 다른 모든 작업을 할 때의 기본 도구입니다. 이 도구를 능숙하게 다룰 줄 알아야 유능한 엔지니어가 됩니다. 본 수업에서는 Java를 통하여 프로그래밍을 배웁니다.

Java는 객체지향언어입니다. 1학기때 배운 C 언어는 함수 중심의 언어입니다. C에서는 원하는 작업을 수행하기 위하여 함수를 만들고 수행하는 방식으로 작업했습니다. 본 수업에서는 이와 같은 함수 중심의 의미를 다시 한번 학습하고, 사고의 관점을 객체 중심으로 생각하는 방법을 배웁니다.

객체 중심으로 생각하는 방법 중 가장 좋은 방법은 그래픽 프로그램을 작성해 보는 것입니다. GUI 프로그램 작성을 통하여 Java의 기본 문법과 객체 중심의 사고방식 및 프로그래밍 테크닉을 배우게 됩니다.

교재

주교재

  • 제본한 교재
  • Eric S. Roberts, The Art & Scient of Java, Addison Wesley

참고문헌

  • James Gosling, The Java Programming Language

기타

공지

  1. 9월 15일 오후 12시까지 : 과제 1 제출
  2. 9월 30일 오후 5시까지 : 과제 2 제출
  3. 10월 1일 10,11 교시 : Karel Quiz
  4. 10월 5일 : 과제 3 Quiz 풀이
    • 타자경진대회 입상자 : 김안빈, 박찬일, 이슬기, 백원미, 정인철, 정태인, 조명환, 최진우, 현호윤
  5. 10월 28일 : 과제 4 제출
  6. 10월 28일 : 과제 5 제출
  7. 11월 8일 : 과제 6 제출
  8. 11월 9일 : 중간고사
  9. 11월 16일 : 특강
    • 주제 : 정보통신공학과에서 프로그래밍에 임하는 자세
    • 강사 : 박원주 (정보통신공학과 99학번, 현재 (주)다음 근무)
  10. 11월 24일 자정까지 : 과제 7 제출
    • 7장 Programming Exercise 1, 2, 3, 4
    • 8장 Programming Exercise 1, 2, 3, 4, 5, 6, 7, 8
    • 코드를 작성한 다음 ZIP으로 압축하여 과제 게시판에 올릴 것.
  11. 12월 3일 자정까지 : 과제 8 제출
    • 8장 Programming Exercise 9, 10, 11, 12, 13
    • 코드를 작성한 다음 ZIP으로 압축하여 과제 게시판에 올릴 것.
  12. 12월 18일(토요일) 자정까지 : 프로그램 경진대회 게시판에 제출
    • 12월 18일 토요일 학교 전체 정전으로 인하여 프로젝트 제출 기한을 하루 연장합니다.
    • 12월 18일 토요일 오전 9시부터 ~ 오후 5시까지는 서버가동이 되지 않으므로 이 시간을 제외한 시간에 업로드하세요
    • 보고서도 같이 올릴것
    • 보고서에 모든 소스코드 포함
    • 반드시 한개의 PDF 파일로 올릴 것
  13. 12월 14일 : 기말고사
  14. 12월 20일 : 프로젝트 경진대회 시현 - 오후4시, 405호
    • 경진대회에 출품한 작품 중 인터넷에서 카피한 것들이 다수 있었습니다. 여러분들이 naver에서 검색하여 복사하듯 채점자도 naver에서 검색하여 찾을 수 있습니다. 앞으로 이런 일이 없도록 하기 바랍니다.
    • 현재까지 발견한 카피한 작품은 오목(1596, 3215), 벽돌깨기(1208, 2722)
    • 증거 링크
    • 끝까지 부인한 학생들은 0점 처리합니다.

수업운영방식

강의와 실습을 병행합니다. 본 강의는 크게 3가지 도구를 이용하여 학습합니다. 첫 번째는 Karel이라는 가상 로보트를 조작하면서 프로그래밍의 기본 개념을 배웁니다. 두 번째는 ACM JTF 패키지를 이용하여 GUI 프로그램을 작성하는데 필요한 그래픽 도구 및 키보드, 마우스 동작(이벤트)을 처리하는 방법을 배웁니다. 세 번째는 Java 문법인 클래스, 계승, 인터페이스, 패키지, 예외처리, 스트림에 대하여 배웁니다.

학습평가방식

과제와 중간고사, 기말고사, 퀴즈로 평가합니다. 과제는 모두 4가지가 나갑니다. 퀴즈와 시험은 필기시험은 없고 프로그래밍 시험을 치릅니다. 프로그래밍 시험이란 실습실에서 직접 프로그램을 작성하여 온라인으로 제출하는 것입니다. 제시된 문제를 해결하는 프로그램을 작성하여 그 결과의 적합여부를 평가합니다.

또한 두번의 경진대회를 개최합니다. 첫번째 경진대회는 영타 경진대회입니다. 영타가 300타 이상인 학생에게 가산점을 부여합니다. 빠른 속도로 영타를 할 줄 알아야 자신의 생각과 아이디어를 막힘없이 코드로 작성할 수 있게 됩니다. 지금부터 영타를 연습하기 바랍니다. 아래한글에 있는 타자연습 프로그램을 이용하기 바랍니다.

두번째 경진대회는 프로그래밍 경진대회입니다. 프로그래밍 경진대회의 내용은 여러분들이 문제를 정의하고 이를 해결하는 임의의 프로그램을 작성하는 것입니다. 이를 교수 및 조교가 평가하여 우수한 평가를 받은 학생은 시험성적에 관계없이 A+를 부여합니다. 이때 제출한 학생은 자신의 프로그램의 임의의 부분을 설명할 수 있어야 합니다.

  • 과제 및 출석 : 20%
  • 중간고사 : 20%
  • 기말고사 : 20%
  • 퀴즈 : 20%
  • 프로그래밍 경진대회 : 20%

주의점: 1학년 학생들과 나머지 학생들은 분리해서 평가합니다. 1학년은 1학년끼리 평가하고, 2,3.4학년은 234학년끼리 평가합니다. 만약 1학년 학생들의 성적이 더 우수할 경우 분리하지않고 같이 평가합니다. 그러므로 고학년들은 최소한 1학년 보다 우수한 성적을 취득하여 부끄럽지 않아야 할 것이며, 1학년들은 고학년들이 시간이 부족한 틈을 이용하여 고학년들보다 더 좋은 성적을 받을 수 있도록 해야할 것입니다.

기타 안내 및 유의사항

1학년 학생들은 본 수업에 모든 열정을 쏟아부어야 할 것입니다. 프로그래밍은 머리로 익히는 것이 아니라 손으로 익히는 것입니다. 머리로만 프로그램을 작성한 사람은 절대로 한줄의 프로그램도 작성할 수 없습니다. 시간이 많이 걸리고 힘이 들어도 직접 스스로 프로그램을 작성해야 합니다. 프로그래밍을 처음 하는 사람의 경우, 이것은 시간이 많이 걸리는 과정입니다. 하지만 이 과정을 거치지 않고 프로그램을 잘 할 수는 절대 없습니다.

이때 주의할 점은 절대 다른 사람의 코드를 단 한줄도 보지 않는 것입니다. 프로그램의 알고리즘이나 설명을 말로 듣는 것은 괜찮지만, 코드를 직접 보면 안됩니다. 이런 과정을 거친 사람은 분명히 우수한 프로그래머가 된다는 것을 보장합니다. 그렇기 때문에 2학기 전체 시간중 가장 많은 시간을 본 수업에 쏟아야 하겠습니다.

프로그래밍을 잘 해야 2학년(자료구조, 통신시스템프로그래밍및실습), 3학년(데이터베이스, 마이크로프로세스응용설계, 컴퓨터네트워크및실습), 4학년(소프트웨어공학, 정보통신종합설계, 네트워크프로그래밍및실습, 이산신호응용및실습) 등의 과목을 제대로 따라갈 수 있습니다.

주의할 점:

  • 정보통신공학과 학생만 수강 가능합니다.
  • 과제를 베껴서 내면 원본과 복사본 모두 0점 처리합니다.
  • 과제를 늦게 내면 하루에 1/3씩 감점 처리합니다.
  • 과제를 제출하지 않거나 시험을 치르지 않으면 F 학점이 나갑니다.

참고 자료

이 부분의 본문은 Lecture/컴퓨터프로그래밍및실습/학생입니다.

실습

  1. 실습 자료 제출 게시판 : 실습시간에 한 내용물 올리는 게시판입니다.

실습을 하기 위해서는 Java SE를 설치합니다. 그리고 Eclipse를 다운로드 받아 압축을 풀고 eclipse.exe를 실행하면 Eclipse가 실행됩니다.


Eclipse를 실행한 다음 라이브러리를 등록해야 합니다. 먼저 Karel을 이용한 프로그래밍을 배우는데 이것을 위하여 karel.jar를 다운로드 받고 Eclipse에 라이브러리로 등록합니다.


추후 The ACM Java Task Force에서 제공하는 ACM JTF 라이브러리를 이용하여 실습을 합니다. 이때는 ACM JTF 라이브러리를 다운로드 받아 Ecipse에 등록 후 사용합니다.

  1. Eclipse
  2. Java
  3. Karel the Robot
  4. The ACM Java Task Force Library


수업 내용

  1. 8월 30일 : 과목 소개, Karel
  2. 9월 2일 : 휴강(태풍)
  3. 9월 7일 : Karel 실습
  4. 9월 8일 : 2일 휴강수업 보강 / 공대 405호 / 18:30-20:30
  5. 9월 9일 : Coding Style, 객체지향 방법으로 설계한 Stack
  6. 9월 14일 : Karel을 이용한 알고리즘 실습
  7. 9월 16일 : The Art and Science of Java 1장, 2장
  8. 9월 28일 : The Art and Science of Java 3장
  9. 9월 30일 : The Art and Science of Java 3장, 4-1장
  10. 10월 1일 : 퀴즈 #1 : Karel
  11. 10월 5일 : ACM 실습 (2, 3장)
  12. 10월 7일 : The Art and Science of Java 4장, 5-2장
  13. 10월 12일 : The Art and Science of Java 5장
  14. 10월 14일 : Handout 9. Debugging
  15. 10월 19일 : The Art and Science of Java 4장, 5장 연습문제 실습
  16. 10월 21일 : The Art and Science of Java 6.1절
  17. 10월 26일 : Figure 5-3, 5-4, 5-5, 6-1 실습, The Art and Science of Java 6.2절
  18. 10월 28일 : 6장
  19. 11월 2일 : 7.1절
  20. 11월 4일 : 7장 Object Memory Model
  21. 11월 9일 : 중간고사
  22. 11월 16일 : 특강 - 박원주 @ 다음 : 정보통신공학과에서 프로그래밍에 임하는 자세
  23. 11월 18일 : 7.3장 - 8.2장
  24. 11월 23일 : 8장 실습
  25. 11월 25일 : Handout: More Program Techniques 실습
  26. 12월 14일 : 기말고사

과제

과제

  1. 과제 #1 : Karel Program, 2010년 9월 7일 오후 5시까지
  2. 과제 #2 : Simple Java Programs, 2010년 9월 30일 오후 5시까지
  3. 과제 #3 : 10월 1일 퀴즈 풀이, 2010년 10월 5일 밤 12시까지
  4. 과제 #4 : 10월 28일 오후 5시까지
    • 교재 p.97, p.98에 있는 문제 9번, 10번, 11번, 12번
    • zip으로 묶어서 과제물 게시판에 제출
  5. 과제 #5 : 10월 28일 오후 5시까지
  6. 과제 #6 : 11월 8일 자정까지
    • 수업시간에 나누어 줌

과제 제출 방법

아래 게시판을 이용하여 과제물을 제출합니다. 게시판은 게시물을 올릴 수는 있지만 읽을 수는 없도록 설정되어 있으므로 자신의 과제를 다른 사람이 볼 수 없습니다. 이 게시판은 실명으로 운영되기 때문에 게시판 링크를 클릭한 후 회원가입을 해야합니다. 이때 가명으로 회원가입을 하면 과제물을 채점할 때 그 사람은 없는 사람이 되므로 채점 대상에서 빠지게 되니 주의하기 바랍니다.

  • 과제제출게시판
    1. 게시판 링크를 클릭합니다.
    2. 게시판의 왼쪽위에 SIGN IN 버튼을 클릭합니다. 클릭하면 회원 가입을 할 수 있습니다. 회원 가입은 정확한 실명으로 해야하며 요구하는 사항을 모두 기입하여야 합니다. 그래야 누가 제출한 과제물인지 정확하게 파악됩니다.
    3. 회원 가입을 하였으면 과제를 업로드합니다.
  • 주의할 점 : 한번 올린 게시물은 다시 열어볼 수 없습니다. 수정할 내용이 있으면 다시 제출하면 됩니다. 마지막으로 제출한 것으로 채점합니다.
  • 과제물 제출시 문의사항 - 최화영 조교(401호) hychoe@dislab.hufs.ac.kr 로 메일 보내주세요
  • 과제물을 제출할 때는 관련 파일을 zip으로 압축하여 올리기 바랍니다. zip 파일에는 소스 코드만 있으면 됩니다. 예를 들어 RunKarel 클래스를 만들었으면 RunKarel.java 파일이 만들어졌을 것입니다. 이 파일을 압축하여 제출하면 됩니다.

Source Codes

이 부분의 본문은 Lecture/컴퓨터프로그래밍및실습/Examples입니다.

Karel


Console Program

Graphics

Animation

  • BasicAnimation - 대각선으로 사각형 이동. GraphicsProgram에서 main 함수를 작성하는 방법 예시. main 함수를 작성하면 Java Application으로 실행할 수 있다.
  • AnimatedSquare - 대각선으로 사각형 이동
  • TimesSquare - 글자가 가로로 이동

Random Balls

  • RandomBalls - 마우스를 클릭할 때 마다 공이 만들어지고 이들이 무작위 방향으로 이동
  • RandomBallsTimer - 일정 시간 pause(sleep) 했다가 공의 위치를 재 계산하여 공을 이동
  • BallCollisionProgram - Timer를 설정해서 일정 시간 마다 공의 위치를 재 계산하여 이동

Mouse

Keyboard



개인 도구
이름공간
변수
행위
둘러보기
구성원
연구
연구실
기타
도구모음
인쇄/내보내기