기타 Etcs

Q. 대학에 가서 컴퓨터과학을 전공한다면 뭘 공부할까?

Tap to restart 2020. 10. 15. 20:00

 A. 컴퓨터과학과가 있는 대학의 교과과정을 살펴보면 알 수 있다.

컴퓨터과학을 전공하지 않았다면 더 더욱 교과과정을 유심히 살펴보고 관련 과목 서적을 읽어볼 필요가 있다.

최소한의 관련 지식을 알고 있다는 것을 인증받기 위해서 대학에 가는 것이니까.

따로 공부해서 다 알고 있다면 대학에 꼭 가야하는 것은 아니다.

 

컴퓨터과학과 교과과정 예

출처: 한국방송통신대학교 컴퓨터과학과 교과과정

 

학년학기 교과구분 교과목명
1-1
(2020)
전공 C프로그래밍
전공 유비쿼터스컴퓨팅개론
전공 인터넷과 정보사회
일반선택 사진의이해
교양 원격대학교육의이해
교양 컴퓨터의이해
일반선택 데이터정보처리입문
1-2
(2020)
전공 컴퓨터과학 개론
전공 C++프로그래밍
일반선택 대중영화의이해
교양 원격대학교육의이해
교양 언어의이해
교양 대학영어
전공 멀티미디어시스템
2-1
(2020)
전공 Visual C++프로그래밍
전공 Java프로그래밍
전공 이산수학
교양 원격대학교육의이해
교양 생명과환경
교양 한국사의이해
교양 세상읽기와논술
2-2
(2020)
전공 프로그래밍언어론
전공 선형대수
전공 자료구조
교양 원격대학교육의이해
교양 대학수학의이해
교양 철학의이해
교양 생활속의경제
3-1
(2020)
교양 원격대학교육의이해
일반선택 그래픽커뮤니케이션
전공 HTML 웹프로그래밍
전공 데이터베이스시스템
전공 디지털논리회로
전공 운영체제
전공 알고리즘
3-2
(2020)
교양 원격대학교육의이해
교양 생활법률
전공 컴퓨터구조
전공 JSP프로그래밍
전공 UNIX시스템
전공 시뮬레이션
전공 컴파일러구성
4-1
(2020)
교양 원격대학교육의이해
전공 컴퓨터그래픽스
전공 모바일앱프로그래밍
전공 컴퓨터보안
전공 소프트웨어공학
전공 정보통신망
교양 생활과건강
4-2
(2020)
교양 원격대학교육의이해
일반선택 경영전략론
전공 클라우드컴퓨팅
전공 HTML5
전공 인공지능
일반선택 빅데이터의이해
교양 성,사랑,사회

 

전공과목 목록

성,사랑,사회와 같은 교양을 빼고 전공만 추리면 아래와 같다.

순서는 학년 순서대로다.

 

C프로그래밍
유비쿼터스컴퓨팅개론
인터넷과 정보사회
컴퓨터과학 개론
C++프로그래밍
멀티미디어시스템
Visual C++프로그래밍
Java프로그래밍
이산수학
프로그래밍언어론
선형대수
자료구조
HTML 웹프로그래밍
데이터베이스시스템
디지털논리회로
운영체제
알고리즘
컴퓨터구조
JSP프로그래밍
UNIX시스템
시뮬레이션
컴파일러구성
컴퓨터그래픽스
모바일앱프로그래밍
컴퓨터보안
소프트웨어공학
정보통신망
클라우드컴퓨팅
HTML5
인공지능

 

전공과목 소개

(출처: 한국방송통신대학교 컴퓨터과학과 교과소개)

학년·학기 교과목명 주요내용
1-1 컴퓨터의 이해 이 과목의 목적은 현대사회를 살아가는 데 교양인으로서 갖추어야 할 필수적인 컴퓨터 관련 지식의 이해와, 이를 바탕으로 정보화 사회의 컴퓨터 문화에 적응할 수 있는 능력을 함양하는 것이다. 주요 내용은 다음과 같다.
컴퓨터와 정보사회의 발전 과정
컴퓨터의 데이터 저장 및 처리 방법의 개념
컴퓨터 하드웨어 및 주변장치의 개념
컴퓨터의 소프트웨어의 개념과 다양한 활용 사례의 소개
정보통신, 인터넷, 모바일 서비스와 유비쿼터스 시대의 이해
안전한 정보서비스 이용을 위한 정보보안 개념
1-1 C프로그래밍 C프로그래밍은 현재 가장 많이 사용되고 있으며, 효율적인 언어로 인정받고 있는 프로그래밍 언어인 C 언어에 대해 그 문법적 내용과 프로그래밍 기법을 다루는 과목이다. C 언어는 다른 언어에 비해 확장성과 이식성 등 많은 장점을 가지고 있으며, 이러한 이유로 다양한 프로그래밍 능력의 향상을 위한 기초 언어로 적당하다. 따라서 본 과목을 통해서 C언어에 대한 전반적인 개념과 문법 등을 이해하고, 이를 바탕으로 프로그램 작성과 실행을 통해 실질적인 프로그래밍 방법을 배우도록 한다. 또한 상위 학년에서 배우게 될 자료구조나 알고리즘 등의 교과목과 웹 프로그래밍과 같은 다른 프로그래밍 언어들의 학습에 기초가 되도록 한다.
1-1 인터넷과 정보사회 과거 일상 생활과 전문적 업무와 관련한 노력과 경험이 능력으로 인정받던 과거와는 달리, 현대 사회에서는 필요한 데이터를 찾고 유의미한 정보를 추출할 수 있는 능력이 더욱더 요구되고 있다. [인터넷과 정보사회] 강의는 현대 사회의 일원으로서 반드시 알아야할 컴퓨터에서의 정보 표현방법, 컴퓨터의 구성요소 및 인터넷의 기본적인 구성, 기능, 서비스 등 우리가 필수적으로 알아야하는 컴퓨터의 기초적인 원리와 컴퓨터 기반의 다양한 유형의 서비스를 소개한다. 또한 단순히 인터넷에 대한 활용뿐만 아니라 정보의 소비주체로서 자각해야 할 인터넷 공간에서의 윤리적 규범에 대해서 소개한다.
1-1 유비쿼터스 컴퓨팅 개론 유비쿼터스 컴퓨팅 개론을 통해 유비쿼터스 환경을 위해 필요한 핵심 기술을 분류하고, 이에 대한 세부적인 내용을 배운다. 특히 유비쿼터스 컴퓨팅 개론은 기존의 컴퓨터 관련 지식을 보다 전문화시키고, 보다 넓은 시야를 갖게 해줄 것이다. 특히 RFID, MEMS, 유비쿼터스 네트워크, 센서 네트워크, 보안 기술, u-시티, u-러닝, u-의료 등에 대해 이해하고, 이를 토대로 구축된 유비쿼터스 환경을 이해한다. 마지막으로 유비쿼터스 환경을 어떻게 이해할 것인가에 대한 관점을 정립하는 것을 유비쿼터스 컴퓨팅 개론 과목의 가장 큰 목표로 삼을 것이다.
1-2 멀티미디어 시스템 오늘날 현대사회에서 멀티미디어 관련기술은 급속도로 변하고 있다. 멀티미디어를 구성하는 요소는 텍스트, 오디오, 비디오, 애니메이션, 그래픽 등이며, 컴퓨터를 통해 새로운 멀티미디어 콘텐츠로 합성된다. 본 과목에서는 21세기 고도 정보사회에서 필수적으로 활용되는 멀티미디어 관련 기술을 알아보기 위해 멀티미디어 데이터에 대한 기본 개념과 멀티미디어시스템의 기본적인 내용을 설명한다. 또한 멀티미디어 데이터를 이용한 각종 멀티미디어 활용기술에 관해 공부하고 다양한 멀티미디어 응용분야에 대해서 알아본다. 특히 본 과목에서 다루는 내용이 다양하고 광범위하므로 학습의 효과를 극대화하기 위하여 학생들은 반드시 사전에 예습을 한 후 방송강의를 청취할 것을 권한다.
1-2 C++프로그래밍 객체지향 프로그래밍은 소프트웨어 개발 업무의 복잡성이 높아지고 있는 환경에서 보다 명료하고, 신뢰성 있으며, 유지보수를 쉽게 할 수 있는 프로그램을 개발할 수 있도록 하기 위한 문제 접근 방법이다. 본 과목에서는 C++ 언어를 중심으로하여 객체지향 프로그래밍의 개념들을 프로그램으로 구현하기 위한 능력을 배양하는데 목표를 두고 있다. 주요 내용은 다음과 같다. C++ 프로그래밍 언어의 기본적인 문법요소
활용한 객체지향 프로그래밍을 위한 클래스 및 상속의 활용
템플릿을 이용한 일반화 프로그래밍의 활용
STL의 이해와 활용
예외처리 구문의 활용
1-2 컴퓨터과학 개론 컴퓨터과학개론'은 컴퓨터과학을 전공하는 1학년 학생을 대상으로 컴퓨터과학 전반에 걸친 핵심 내용을 소개하는 과목이다. 즉, 어떤 특정한 컴퓨팅 도구나 컴퓨터 이론/응용에 관련된 내용을 깊이 있게 배우는 것이 아니라, 앞으로 상위 학년에서 배우게 될 컴퓨터과학의 여러 핵심 분야의 내용을 개괄적으로 살펴보는 과목이다. 컴퓨터과학의 다양한 분야에 걸친 용어, 개념, 원리 및 방법 등을 미리 접해봄으로써 친숙해질 수 있는 기회와 환경을 제공하는 것이 본 교과목의 가장 중요한 학습 목표라고 할 수 있다.
2-1 Visual C++ 프로그래밍 MS Windows는 현재 데스크탑 PC, 노트북 등에서 가장 널리 사용되고 있는 운영체제이다. Windows 운영체제 위에서 우리가 흔히 사용하는 모든 응용프로그램들이 바로 다양한 윈도우로 표현되는 윈도우 프로그램들이다. 본 과목에서는 Visual C++을 사용하여 다양한 윈도우 프로그램들을 작성해 본다. 강의 구성은 먼저, 윈도우 프로그래밍의 개념을 학습하고 나서 Win 32 API 프로그래밍으로 다양한 윈도우를 작성하고 실습한다. 교재 2장부터는 MFC의 기본구조와 클래스의 개념을 학습하고 이후 응용 프로젝트로 SDI와 MDI, 메모장, 폼뷰, 학사관리, Ball 프로젝트, 네트워크 프로그래밍 등을 직접 작성하고 실습한다. 효과적으로 구성된 단계별 실습프로그램 등을 통하여 VC++을 이용하여 윈도우 프로그램을 작성하고 활용할 수 있는 능력을 갖는 것을 목표로 한다.
2-1 이산수학 이산수학은 연속적이지 않고 이산적인(discrete) 대상에 관해 연구하는 학문이다. 특히 다양한 수학 이론 중에서 컴퓨터과학에서 자주 활용되는 내용들을 주로 다룬다. 따라서 우리 학과에서 제공되는 이산수학에서는 컴퓨터과학을 보다 체계적으로 배울 수 있도록 논리, 증명, 집합, 행렬, 관계, 함수, 부울대수, 그래프, 트리, 조합이론, 알고리즘, 그리고 오토마다와 형식언어 등을 다룬다.
이산수학은 다른 수학 분야처럼 우리에게 지식을 체계화시킬 수 있는 논리를 제공해준다. 그러나 이러한 논리적 사고 능력은 단순히 암기함으로써 얻을 수 있는 것이 아니고 한 단계 한 단계를 이해해 나가는 훈련과정 중에 얻어지게 된다. 이러한 논리적 사고 능력의 배양과 함께 이산수학의 기본 개념들을 탐구하고 적용할 수 있는 능력의 개발이 본 교과목이 목표하는 바이다.
2-1 Java 프로그래밍 본 교과의 목적은 객체지향 언어인 Java의 기능과 특성을 이해하고 Java 프로그래밍의 기본 기술을 익히는 것이다. 차후 Java 언어에 바탕을 둔 고급 프로그래밍 기술을 학습하려면 본 교과목을 반드시 수강하여야 한다. 선수과목은 C++ 프로그래밍으로 객체지향 개념의 기본 지식을 먼저 갖추고 있어야 한다. 교재를 중심으로 Java 언어의 기본 기술을 이해하고 나아가 GUI, 입출력, 멀티스레딩, 예외처리, 데이터베이스 연동 등의 내용을 학습하도록 한다. 예제를 통해 학생 스스로 원리를 이해하고 문제를 해결하는 기회와 능력을 제공하도록 한다.
2-2 선형대수 수학은 크게 해석학, 대수학, 기하학 등 세 가지 분야로 구분한다. 이중 대수학은 방정식의 해법에 관한 수학이고 그중에서도 선형대수학은 차수가 1인 일차방정식의 해법을 연구하면서 발생한 대수학이다. 선형대수학은 수학 자체의 발전뿐만 아니라 다른 수학 분야처럼 자연과학과 사회과학 등 많은 분야에 활용되고 있다. 특히 4차 산업혁명시대에 핵심 키워드인 인공지능에서 소위 기계학습(machine learning)은 선형대수학을 가장 중요한 기초로 삼고 있다.
본 강의는 크게 세 부분으로 구성되어 있다 제1부에서는 연립일차방정식과 행렬에 관한 기본 개념을 설명하고 있으며 제2부에서는 벡터 공간이라는 대수 구조체를 다루고 벡터공간 사이에 선형성을 갖는 함수인 선형변환에 대해 설명한다. 제3부에서는 여러 분야에서 응용되고 있는 선형대수의 몇 가지 도구(고유값과 고유벡터, 직교벡터, 직교변환 등)를 설명하고 있다.
선형대수학은 우리에게 지식을 체계화시킬 수 있는 논리를 제공해준다. 그러나 이러한 논리적 사고 능력은 단순히 암기해서는 아니 되고 한 단계 한 단계를 이해해 나가는 훈련과정 중에 얻어 지게 된다. 이러한 논리적 사고 능력의 배양과 함께 선형대수의 기본 개념들을 탐구하고 적용할 수 있는 능력의 개발이 본 교과목이 목표하는 바이다.
2-2 프로그래밍언어론 프로그래밍 언어는 컴퓨터에 우리의 의사를 전달하는 도구이다. 본 교과목은 프로그래밍 언어의 정의, 기능, 구성 요소 등을 다루어 프로그래밍 언어 자체에 대한 감각을 키우는 데 목적을 두고 있다. 이를 통해 새로운 언어는 쉽게 배우고, 사용 중인 언어는 더 잘 이해할 수 있으며, 나아가 궁극적으로 현명한 언어 설계자가 될 수 있다.
2-2 자료구조 자료구조(Data Structures)는 컴퓨터 과학의 소프트웨어 분야에서 가장 기본이되는 과목으로, 자료를 컴퓨터 내에 어떻게 효율적으로 구성시켜 처리하느냐의 방법론을 공부하기 위한 과목이다. 컴퓨터에 의한 자료 처리 관점에서 프로그램의 문제는 이와같은 자료구조와 알고리즘이 불가분의 깊은 연관성을 갖으며 심도있는 학습이 이루어져야 한다. 이 과목은 화일처리, 알고리즘, 데이터베이스, 인공지능, 소프트웨어공학 등과 같은 상위과목을 공부하기 위한 기초과목이다.
3-1 운영체제 운영체제는 사용자가 컴퓨터 시스템을 편리하게 사용할 수 있도록 하는 동시에 컴퓨터 시스템의 자원을 효율적으로 관리하는 역할을 담당하는 핵심적인 시스템 소프트웨어이다.
본 교과목에서는 프로세스 관리, 메모리 관리, 입출력장치 관리, 파일 관리 등 운영체제가 담당하는 일반적인 역할의 구성 및 처리 과정에 대하여 이해하고, 분산 운영체제, 운영체제 보안, 임베디드 운영체제 등 최근 대두되는 운영체제와 관련한 주요 분야의 기초 지식을 배양하는 것을 목표로 한다.
3-1 디지털논리회로 디지털 논리회로는 컴퓨터과학의 주요한 필수과목으로서, 디지털 시스템의 구성 및 동작원리와 논리회로의 분석방법 및 설계방법에 대한 기본지식을 제공한다. 본 과목의 학습은 다음과 같이 크게 네 부분으로 나누어 진다. 첫 번째 부분에서는 디지털 시스템에 대한 개괄적인 설명과 함께 데이터를 컴퓨터에 나타내는 방법에 대해서 학습한다. 두 번째 부분에서는 디지털 시스템의 기능을 나타내기 위하여 부울대수의 기본 개념을 설명하고, 부울함수의 간소화 방법과 부울함수의 구현방법에 대해서 상세히 설명한다. 세 번째 부분에서는 조합논리회로와 순서논리회로의 분석과정 및 설계과정에 대해서 설명하고, 대표적인 구체적 예제를 통하여 분석 및 설계 방법을 익힌다. 마지막 부분에서는 레지스터와 카운터의 동작원리 및 특성, 기억장치의 종류 및 기본 구조에 대해서 다룬다. 이와 같은 디지털 논리회로에 대한 학습내용은 하드웨어 관련 교과목의 이해에 도움이 되고 특히 3학년 2학기에 개설되어 있는 컴퓨터구조 과목의 주요 내용들을 이해하는데 기초가 된다.
3-1 데이터베이스 시스템 디지털 데이터의 양과 유형이 폭발적으로 증가하고 있는 현대 사회에서 데이터베이스의 이론적 및 실무적 관점의 지식을 바탕으로 데이터를 효과적으로 관리 및 사용할 수 있는 능력은 필수적이다. [데이터베이스 시스템] 과목은 데이터베이스의 개념, 필요성 및 데이터 관리에 필요한 이론적 배경 지식을 정리하고, SQL 활용에 필요한 관계형 모델, 관계 대수 및 정규화에 대해 학습한다. 또한 효율적 데이터 저장 및 관리에 필요한 파일과 인덱스 구조 및 트랜잭션과 동시성 제어에 대하여 학습한다.
이와 더불어 실무 사례에서 가장 많이 사용되고 있는 MySQL Server와 MySQL 워크벤치를 사용하여 실제 데이터베이스 시스템을 구현하여 학습자가 실무적 감각 또한 배양할 수 있는 기초를 마련한다. 이 과목은 학습자가 자료구조, 이산수학 및 C 언어에 대한 기본 개념을 이미 알고 있는 것을 전제로 한다.
3-1 알고리즘 컴퓨터과학이 문제 해결을 위한 학문이라면 알고리즘은 주어진 문제를 어떤 방법과 과정을 거쳐 효율적으로 해결할 것인가를 다루는 기본적이면서 필수적인 분야이다. 알고리즘 없이는 컴퓨터를 이용한 자료처리가 불가능하므로 주어진 문제에 대한 효율적인 알고리즘을 찾는 것은 매우 중요한 일이다. 알고리즘 과목은 문제를 푸는 방법의 설계와 그 방법의 효율을 분석하는 것이 학습의 주요 내용이며, 이를 위해 본 교과목에서는 대표적인 알고리즘 설계 기법, 그리고 보편적이면서 활용 범위가 넓은 문제인 정렬과 탐색에 대한 알고리즘 등을 다룬다.
3-1 HTML 웹프로그래밍 모든 웹 개발자들은 웹페이지를 만들기 위해서 HTML, CSS, 그리고 자바스크립트를 반드시 알아야 한다. 즉 문서의 내용은 HTML을 이용해서 정의하고, 문서를 화면에 어떻게 표현할 것인가는 CSS를 이용하고, 자바스크립트를 이용해서 웹페이지의 동작을 프로그래밍하는 일련의 협업을 통해서만효율적인 웹페이지를 작성할 수 있다. 따라서 본 과목은 HTML, CSS, 그리고 JavaScript를 소개하고, 이들의 활용을 통해 다양한 형태의 웹페이지를 작성할 수 있는 기초적인 능력을 배양하는 것을 목표로 한다.
3-2 UNIX 시스템 UNIX의 표준을 준수하는 무료 공개 운영체제인 리눅스를 학습한다. 학습 목표는 서버 관리자가 되기 위한 지식과 역량의 함양 및 자가 학습 능력의 배양이다.
공개 소프트웨어 라이선스, 리눅스 표준 디렉터리, 셸의 기능과 기본 명령어, 리눅스의 부팅, 사용자 계정의 관리, 텍스트 편집, 파일 시스템과 프로세스의 관리, 패키지 관리, 셸 스크립트, 네트워크 설정 및 서버 관리에 관한 내용을 다룬다.
3-2 컴퓨터구조 컴퓨터 구조는 컴퓨터과학에서 필수적인 교과목으로서, 컴퓨터과학도에게 컴퓨터 하드웨어 시스템의 기본적인 지식, 즉 컴퓨터 시스템의 하드웨어 구성요소에 관한 구성과 동작원리 등의 기본지식을 제공한다. 본 과목은 학습내용이 다음과 같이 크게 네 부분으로 나누어진다. 첫 번째 부분에서는 컴퓨터 시스템에 대한 기본적인 이해 및 그 발전 역사에 대하여 공부한다. 두 번째 부분에서는 이 강의의 중심이라고 할 수 있는 컴퓨터 명령어, 처리장치, 제어장치, 그리고 중앙처리장치에 대해서 상세히 설명한다. 세 번째 부분에서는 기억장치와 입출력장치를 설명함으로써 컴퓨터 시스템에 대한 하드웨어적인 전반적인 개념을 익힌다. 마지막 부분에서는 발전적인 컴퓨터 구조에 관한 설명으로, 병렬처리시스템에 대하여 그 개념 및 분류와 종류 등에 대해서 다룬다. 이와 같은 컴퓨터 구조에 대한 학습내용은 컴퓨터과학의 다른 분야와의 깊은 관련성을 가지고 있으므로 컴퓨터과학의 다른 교과목을 이해하는데 폭 넓고 기본적인 시스템 지식을 제공하는 것을 목적으로 한다.
3-2 컴파일러구성 이 과목은 시스템 프로그램의 기본이라 할 수 있는 컴파일러에 관한 내용을 서술하였다. 선수 과목으로 학생들은 컴퓨터과학과에 개설된 프로그래밍 언어들을 실습하고 이해하고 있어야 한다.
강의는 교재의 내용을 중심으로 이루어지는데 주 내용은 컴파일러를 효과적으로 구성하기 위한 제반 사항들이다. 먼저 1장에서는 컴파일러의 논리적인 기능들인 어휘분석, 구문분석, 의미분석, 중간코드생성, 최적화, 목적코드생성 등의 기본 개념들에 대해서 소개한다. 그리고 다음 장부터 이들 각각의 단계들과 관련된 각종 기법과 이론들을 자세히 학습하게 된다. 강의와 교재에서 소개된 컴파일러 이론들은 관련된 예제들을 통하여 보다 쉽고 확실하게 이해하게 될 것이다. 또한 어휘분석기와 구문분석기를 직접 만들어 주는 유용한 소프트웨어로서 LEX와 FLEX(5강), YACC와 BISON(13강) 등을 소개하였다. 이들은 PC에서 실습이 가능하다. 다양한 예제 풀이와 실습을 통해서 컴파일러에 대한 확실한 이해와 제작 능력을 갖는 것을 목표로 한다.
3-2 시뮬레이션 시뮬레이션의 개념을 쉽게 이해하게 도와주는 전반부와 이론적으로 깊이 있게 공부하면서 시뮬레이션 언어를 직접 경험할 수 있도록 하는 후반부로 구성된다. 전반부는 제1장에서 5장까지이며 간단한 시뮬레이션 실습예제들을 중심으로 시뮬레이션에 대한 개념을 쉽게 이해할 수 있도록 구성하였다. 후반부인 제6장 이후에서는 앞에서 살펴보았던 시뮬레이션과 관련된 이론들을 깊이 있게 설명하며 아울러 실제 현장에서 사용되는 시뮬레이션 언어들에 대한 소개와 실습과정으로 구성하였다. 효과적인 학습을 위해서는 교재의 전반부에 제시된 시뮬레이션 예제들을 모두 실습하는 것이 바람직하다. 이를 위해 모든 예제들에 대한 C, JAVA 등이 교수 홈페이지 학습정보 게시판에서 제공된다. 그리고 10장에 소개하는 Riverbed Modeler 교육용 언어는 누구나 무료로 다운받을 수 있으므로 직접 네트워크 시뮬레이션을 설계하고 실행하는 경험을 할 수 있다. 아울러 실제 현장에서 응용되는 시뮬레이션 응용 사례들을 동영상으로 소개한다.
3-2 JSP
프로그래밍
JSP는 스크립트 방식의 웹 프로그래밍 언어로서 HTML, XML 문서에 함께 포함될 수 있으며 Java언어에 기반을 두고 있기 때문에 Java가 제공하는 객체지향 개념과 웹 환경에 필요한 다양한 기능들을 웹 프로그램 제작에 이용할 수 있다. 본 교과목은 교재를 중심으로 JSP 기술을 익히고 예제를 통해 실전에 응용할 수 있는 능력을 키우는 것을 목표로 한다. 본 교과목의 선수 과목은 Java 프로그래밍 과목이다.
4-1 컴퓨터그래픽스 컴퓨터 그래픽스는 시각적 요소를 이용하여 정보를 표현하고 전달하기 위한 학문이다. 본 교과목에서는 컴퓨터 그래픽스의 기본 원리를 익히고, 3차원 그래픽스 파이프라인을 구성하는 여러 가지 처리 단계를 구성하는 알고리즘을 이해함으로써 컴퓨터그래픽스를 활용하는 응용프로그램을 만드는데 필요한 이론 및 기술을 습득하는 것을 목표로 하고 있다. 주요 내용은 다음과 같다. 컴퓨터 그래픽스 시스템의 개념
그래픽스 기본요소의 개념과 래스터화 알고리즘의 이해
기하변환을 통한 그래픽스 기본요소의 변환
2차원 및 3차원 뷰잉
스플라인을 이용한 곡선 및 곡면의 표현
가시면 결정 알고리즘
셰이딩 알고리즘
OpenGL을 이용한 그래픽스 프로그램 입문
4-1 정보통신망 제4차 산업혁명시대는 인공지능, 사물 인터넷, 빅데이터 등이 가장 핵심적인 기술로서 이러한 기술이 효율적으로 운영되기 위해서는 정보통신망이 기반이 되어야 한다. 이러한 시기에 정보통신망에 대해 공부한다는 것은 상당히 시기적절하고도 필수적이라고 판단된다.
정보통신망은 컴퓨터에 의한 정보 처리 기술과 다양하고 신속한 통신 기술이 상호보완적으로 접목되어 크게 발전하고 있다. 즉, 정보통신망의 기반기술은 컴퓨터의 정보처리기술, 데이터 통신 기술, 네트워크 기술 등이다. 이러한 정보통신망은 자원의 공유, 신뢰도의 향상, 분산처리 등의 장점을 갖는 반면, 현재로는 운영의 복잡성, 통신정보보호의 문제 등을 단점으로 안고 있다.
본 강의는 컴퓨터의 정보처리 기술보다, 데이터 통신 및 네트워크 기술에 초점을 맞추어 진행된다. 즉, 데이터 통신의 기초적인 지식과 이론 그리고 데이터 통신의 중요한 기능들을 다루고 있으며, 개방형 시스템을 위한 OSI모델과 함께 TCP/IP 프로토콜, 더 나아가 근거리 통신망과 정보보호에 대해서도 설명하고 있다.
4-1 소프트웨어 소프트웨어 공학의 기본 원리와 이론을 소개하고 소프트웨어 공학 과정을 단계별로 나누어 학습한다. 프로젝트 계획, 요구 분석, 설계, 테스트, 품질 보증 및 유지보수 작업에 관해 살펴본다. 또 객체지향 분석과 설계를 위한 방법에 관해 학습하고 통합 모델링 언어인 UML을 사용하여 효과적으로 모델을 작성하는 방법을 학습한다. 본 교과목의 목적은 실제 프로젝트를 수행할 때 소프트웨어 공학의 제반 지식을 응용할 수 있는 실용적 적응력을 제공하는 것이다.
4-1 모바일앱
프로그래밍
현대 생활에서 스마트폰이 차지하는 비중이 커져가면서 컴퓨팅 환경의 일부분으로 자리잡고 있다. 특히 이동통신망을 기반으로 하는 다양한 서비스는 다양한 수요를 창줄하고 있으며 새로운 IT 분야가 되고 있다. 따라서 본 교과목에서는 안드로이드 운영체제를 기반으로 하여 다양한 서비스를 제공할 수 있는 프로그래밍 환경의 다양성을 이해하고 이를 스스로 구축할 수 있는 능력을 키우는 것을 모바일 서비스 프로그래밍의 목표로 한다.
4-1 컴퓨터보안 본 과목은 정보화 사회에서 컴퓨터 보안, 나아가서는 정보보호의 전반적인 내용을 다룬다. 정보보호의 의미와 역사를 포함하여 정보보호를 위한 이론적·기술적인 배경인 암호이론과 그 응용, 그리고 최근의 기술 동향과 발전 방향에 대한 내용을 다룬다.
4-2 HTML5 인터넷상에서 사용되는 웹페이지의 정보를 표현할 목적으로 사용되는 마크업 언어가 HTML이다. “HTML5”는 단순히 텍스트와 하이퍼링크로만 표시하던 웹페이지를 복잡한 애플리케이션까지도 제공할 수 있도록 웹 애플리케이션 플랫폼으로 향상된 버전이다. HTML5를 기반으로 하는 웹페이지를 제작하기 위해서는 HTML5에 새롭게 반영된 특징과 기능을 이해하는 것이 필수적이다. 따라서 본 교과목에서는 HTML5에서 강화된 HTML 요소, 업그레이드된 CSS3 속성, 그리고 다양한 자바스크립트 API를 다루고, 이들의 활용을 통해 웹 애플리케이션을 개발할 수 있는 능력 배양을 목표로 한다.
4-2 인공지능 인공지능은 컴퓨터에게 지적인 능력을 부여하기 위한 제반 학문분야를 통칭하는 것이다. 본 과목에서는 인공지능 및 그 응용분야에 대한 전반적인 이해를 하는 것을 목표로 하고 있다. 주요 내용은 다음과 같다. 전통적 문제풀이 방식
지식의 표현 및 지식기반 시스템의 개념
퍼지 이론
컴퓨터 시각 및 패턴인식 시스템
기계학습
신경회로망과 딥러닝
4-2 클라우드 컴퓨팅 다양한 유형의 컴퓨터 서버 도입 및 증설/감축에 대한 요구가 증가함에 따라 대규모 데이터 센터의 집중화된 서버를 기반으로 인터넷상에서 필요에 따라 원하는 만큼 컴퓨팅 환경을 제공할 수 있는 클라우드 컴퓨팅 기술의 중요성이 대두되고 있다. [클라우드 컴퓨팅] 과목은 서버 가상화, 분산 처리, 서비스 프로비저닝 및 멀티 테넌시 기술 등 클라우드 컴퓨팅에 필요한 이론 및 기술에 대하여 다루고 클라우드 서비스화를 위한 서비스 모델, 배포 모델, 아키텍처 및 보안과 프라이버시에 대하여 학습한다. 또한 실제 사용되고 있는 클라우드 서비스를 사용하여 여러 유형의 서비스를 구성해 봄으로서 실무적 감각을 위한 기초를 마련한다. 이 과목은 학습자가 자료구조, 운영체제, 네트워크 및 데이터베이스 시스템 관련 과목에 대한 기본 개념을 이미 알고 있는 것을 전제로 한다.

 

학습 내용 정리

다시 정리해보자.

 

기초

프로그래밍 언어: C, C++, Visual C++, 자바

수학: 이산수학, 선형대수

자료구조, 운영체제(UNIX 시스템), 데이터베이스, 알고리즘

하드웨어

시뮬레이션, 컴퓨터 그래픽스

 

개발

소프트웨어 개발 과정

웹 애플리케이션: HTML(프론트엔드), JSP(백엔드)

모바일 애플리케이션

인공지능

클라우드 컴퓨팅

컴퓨터 보안

 

정도다.

 

대학이라 그런지 요즘에 많이 쓰는 파이썬은 가르치지 않는다.

웹 애플리케이션 개발도 JSP로 자바 위주 교과과정이다.

빅데이터 과목은 없다.

 

비전공자가 부족한 점은?

비전공자는 많은 경우 학원을 다니며, 학원에서는 바로 코딩을 가르친다. 따라서 학원에서 배운 언어가 자바라면, 자바만 알고 다른 언어는 잘 모른다. 자바로 코딩을 하지만 다른 기초적인 용어, 배경지식이 부족하게 된다.

 

비전공자라면 위 기초 과목에 해당하는

수학: 이산수학, 선형대수

자료구조, 운영체제(UNIX 시스템), 데이터베이스, 알고리즘

과 소프트웨어 개발 과정 전체에 대해서 공부할 필요가 있다.

 

대학에 들어가서 공부를 하면 좋겠지만, 돈도 들고 시간도 드니 현실적으로 쉽지 않으니까.