컴퓨터공학의 개념, 필요성 및 연구내용
컴퓨터공학과
2005200347
정훈섭
1. 컴퓨터공학의 개념
컴퓨터공학에서 컴퓨터란 연산을 할 수 있는 기기를 뜻한다. 이는 비단 데스크탑이나 랩탑과 같이 우리가 흔히 ‘컴퓨터’라 부르는 것 이외에도 휴대폰, PMP, PDA, 네비게이션 등을 포함한다. 컴퓨터공학은 이러한 컴퓨터에 들어가는 소프트웨어를 다루는 학문이다. 보다 편리하고, 보다 성능이 좋은 컴퓨팅 시스템을 개발하여 많은 곳에 응용하는 것을 목표로 하고 있다. 건강한 육체에 건강한 정신이 깃든다는 말이 있다. 같은 학부의 전자 전파 공학에서 건강한 육체 즉 뛰어난 하드웨어를 만들기 위해 회로나 신호 시스템 등을 배우고 연구한다면, 컴퓨터공학은 뛰어난 하드웨어에 뛰어난 소프트웨어를 입히기 위한 공학으로 소프트웨어개발 분야, 임베디드시스템SW 분야, 네트워크 분야, 멀티미디어 분야 등을 연구하고 개발한다.
2. 컴퓨터공학의 필요성
개념에서도 언급했듯, 컴퓨터는 우리 생활에 밀접한 연관이 있다. 휴대폰, PDA, PMP, 네비게이션 등등 이미 우리 생활 밀접한 곳까지 컴퓨터는 들어와 있다. 심지어 집 현관문에 달려있는 지문인식기, 또는 디지털 도어락 또한 컴퓨터의 일종이라고 볼 수 있다. 이러한 컴퓨터에 들어가는 소프트웨어를 연구하는 학문이 없다면, 과연 이렇게나 많은 디지털 제품이 우리 생활에 이용될 수 있었을까?
컴퓨터는 인간에게 있어 인간다운 삶을 누릴 수 있도록 하는 데에 많은 기여를 하고 있다. 우리는 디지털 도어락으로 안심하고 잠들 수 있으며 휴대폰을 비롯한 많은 통신기기로 사람과 사람 사이의 커뮤니케이션을 행할 수 있으며 랩탑이나 데스크탑과 같은 소위 ‘컴퓨터’로 많은 일을 수행함으로써 지식을 쌓고 효율적으로 일을 수행할 수 있게 되었다. 그 모든 것이 없다면 우리의 생활은 과연 어디서 정지해 있을지 상상조차 가지 않는 것이 사실이다.
또한 컴퓨터공학은 이미 우리 삶의 질을 높이는 데에서 그치지 않고 삶의 대부분을 차지하게 되었다. 프로그램이 인간의 생명을 좌우할 수 있다고 말할 수 있는가? 답은 ‘그렇다’이다. 간단한 예로, 병원에서 사용되는 기기 안으로 들어가는 소프트웨어는 사람의 생명을 판단하고 그 수명을 늘리는 곳에 사용되고 있다. 컴퓨터공학은 인간 삶에 있어서 이젠 빠질 수 없는 존재가 된 것이다.
현대 사회는 정보화 사회이자 기계 문명을 바탕으로 하고 있다. 기계가 있는 그 어느 곳이든 컴퓨터는 필요하고, 정보가 필요한 어느 곳이든 프로그램은 필요하다. 따라서 현대 사회에서 컴퓨터공학은 필수불가결한 학문이고 연구 과제이다.
3. 컴퓨터공학의 연구내용
컴퓨터공학에서는 컴퓨터 메모리의 활용을 연구한다. 현재 환경에 빗대어 이야기하자면 더 적은 자원으로 많은 에너지를 만들어내며 환경오염을 최소화 시키려는 지속가능한 발전을 추구하듯이 컴퓨터공학은 메모리의 낭비 없이 프로그램에 딱 맞는 용량만을 차지하나 자료 처리 능력은 우수한 프로그램을 개발하는 것을 중요시한다. 따라서 프로그래밍 기초나 고급객체지향 프로그래밍 과목에서 첫 번째로 배우는 것은 각각의 변수가 차지하는 메모리의 용량과 컴퓨터 프로그램의 실행 과정 등이다.
메모리를 연구하여 새로운 프로그램을 짜는 것이 컴퓨터공학의 역할이긴 하지만 이미 존재하고 있는 프로그램의 유지 보수, 그리고 다방면에 활용되고 있는 컴퓨터 프로그램들의 활용 방법과 가치를 높이는 것 또한 컴퓨터공학의 연구내용이고 과제이다.
다음은 컴퓨터공학에서 배우는 과목들 중 본인에게 필요하다고 생각되는 과목들이다. 네트워크방면으로 필요한 과목 목록과 그에 대한 설명이다.
고급객체지향프로그래밍 (Advanced Object-Oriented Programming)
객체지향 프로그래밍 기초에서 배운 데이터 형, 입출력, 선택문, 반복문, 함수, 배열, 포인터, 문자열 등을 기본으로 하여 클래스, 함수 오버로딩, 연산자 오버로딩, 상속, 가상함수, 템플릿, 네임스페이스 등의 고급 객체지향 프로그래밍 기법을 배우고 이를 실습을 통해 익힌다.
확률 및 랜덤변수 (Probability and Random Variables )
전산학에서 응용할 수 있는 제반 기초 이론을 습득하고 실제적인 응용 확률통계와 통계 소프트웨어 패키지를 사용하는 방법을 익힌다.
기초공학설계(Fundamental Engineering Design)
필요성 인식과 여러 설계 요소의 정의로부터 도출되는 기초적인 공학설계과제에 대한 이해와 모든 공학적요소와 해답에 영향을 주는 비공학적 요소를 포함하는 공학문제에 대한 학생들의 사고판단 개념을 넓혀줄 수 있도록 하는 것이 본 교과목의 목표이며, 이를 달성하기 위하여 학생들이 개방형 개발과제를 수행할 수 있도록 그와 관련된 강의, 사례연구 및 과제수행을 순차적으로 진행시켜 교육한다.
논리회로 (Digital Circuit)
디지털 논리회로의 기본요소인 논리소자 특성 이해 및 디지털 논리회로(조합회로, 순서회로)에 대한 설계방법을 익혀 실제적 응용 디지털 회로설계와 컴퓨터의 기본구조 설계에 관해 학습한다.
자료구조 (Data Structures)
자료 추상화, 배열, 리스트, 스택, 큐, 트리, 그래프 등의 자료구조와 그러한 자료구조를 활용할 수 있는 알고리즘을 배운다. 이 과목을 통해서 학생들은 전산학의 지식을 확대하고 프로그래밍 기술을 향상시킬 수 있다.
컴퓨터 구조 (Computer Architecture)
컴퓨터 구조 설계의 기초 이론으로써 기본적인 컴퓨터 시스템의 구성과 설계에 대한 개념과 기법을 소개한다. 데이터의 표시방법, 레지스터의 전송과 마이크로 동작, 컴퓨터 소프트웨어를 포함하여 연산장치, 제어장치, 입출력장치의 구조와 설계기법을 학습함으로써 컴퓨터를 설계할 수 있는 지식을 습득하고 명령포맷,CPU 내부구조, 하드와이어드 제어에 의한 제어 유닛 설계, 마이크로프로그램 제어에 의한 제어 유닛 설계, 인터럽트, DMA등에 의한 I/O 처리 기술을 배운다. 이 과목을 수강하기 전에 논리회로를 수강할 것을 권고한다.
이산구조 (Discrete Structures)
수학적인 관점에서 논리적인 디지털 컴퓨터 구조를 이해하기 위해 형식논리, 알고리즘 증명, 재귀, 집합, 순열과 조합, 이항정리, 이진관계, 함수 및 행렬, 그래프, 트리, 그래프 알고리즘, 프로그램의 검증, 부울 대수와 컴퓨터 논리 등에 관하여 배운다.
운영체제 (Computer Operating System)
시스템 개발과정을 소개하며, 소프트웨어 시스템 분석 및 설계 시에 확장성과 재사용을 용이하게 하기 위한 구조적 방법과 객체 지향적 방법을 익힌다.
시스템분석 및 설계 (Systems Analysis and Design)
컴퓨터 구조 설계의 기초 이론으로써 기본적인 컴퓨터 시스템의 구성과 설계에 대한 개념과 기법을 소개한다. 데이터의 표시방법, 레지스터의 전송과 마이크로 동작, 컴퓨터 소프트웨어를 포함하여 연산장치, 제어장치, 입출력장치의 구조와 설계기법을 학습함으로써 컴퓨터를 설계할 수 있는 지식을 습득하고 명령포맷,CPU 내부구조, 하드와이어드 제어에 의한 제어 유닛 설계, 마이크로프로그램 제어에 의한 제어 유닛 설계, 인터럽트, DMA등에 의한 I/O 처리 기술을 배운다. 이 과목을 수강하기 전에 논리회로를 수강할 것을 권고한다.
컴퓨터네트워크 (Computer Networks)
컴퓨터 네트워크를 구성하는 각종 네트워킹 장치들의 계층 모델, 특성, 동작 방법, 그리고 운용 기술에 대하여 학습한다. 또한 이들 장치를 상호 연결한 인터네트워크의 구성과 동작 방법에 대하여 소개한다. 본 과목의 수강을 통하여 컴퓨터 네트워크의 구성과 동작 방법에 대하여 소개한다. 본 과목의 수강을 통하여 컴퓨터 네트워크의 7계층 구조와 인터넷 4계층 구조를 이해할 수 있고, 간단한 LAN (Local Area Network)을 설계할 수 있으며, 계층 모델을 기반으로 한 컴퓨터 네트워크의 이론적 이해 및 분석력을 함양함으로써 컴퓨터 네트워킹 개념에 대한 이론과 실용 기술을 체득할 수 있다.
Windows프로그래밍 (Windows Programming)
본 과목은 Windows 시스템의 구조와 관련 있는 프로그래밍 기술을 익히는 과목으로 Windows API (Application Programming Interface) 함수, DLL (Dynamic Linking Library) 함수 및 OLE (Object Linking and Embedding) 객체를 다루는 Windows 시스템 함수들을 사용하는 기법을 소개한다.
인터넷프로토콜 및 프로그래밍 (Internet Protocol and Programming)
본 과정에서는 인터넷의 요소기술인 TCP/IP 프로토콜에 관하여 다룬다. 특히 인터넷에 관련된 IP Addressing, Subnet, Routing프로토콜 (ARP, ICMP, IGMP, RIP, OSPF, BGP)의 프로토콜을 익힌다. 그리고 동적 IP 할당을 위한 DHCP와 도메인 네임을 관리하는 DNS와 IPv6등에 관한 사항을 학습함으로써 인터넷통신에 대한 기본적인 지식의 습득을 목표로 한다. 또한 실습을 통하여 애플리케이션을 위해 인터넷 프로토콜을 구현하는 방법을 익힌다.
Java응용프로그래밍 (Java Application Programming)
자바는 인터넷의 대중화와 더불어 가장 강력한 객체지향 프로그래밍 언어로 자리 잡고 있다. 자바는 현재 엔터프라이즈 솔루션의 핵심적인 웹 애플리케이션 서버의 책임 언어이며, 인터넷 분야뿐만 아니라 네트워크, 멀티미디어, 그래픽스, 임베디드 시스템까지 광범위하게 응용되고 있다. 본 과목에서는 자바 프로그래밍의 기본 개념을 배우고 여러 응용 프로그래밍을 구현함으로서 실제 업무에 적용 가능한 실무능력을 키운다.
네트워크보안 (Network Security)
본 과정에서는 네트워크보안의 기본개념과 암호화 알고리즘, 인터넷보안 메커니즘과 무선망 보안등에 대하여 다룬다. 그리고 국내외 보안기술표준화동향 등에 대해서도 강의한다.
컴퓨터그래픽스 (Interactive Computer Graphics)
2D와 3D 객체의 생성과 디스플레이를 위한 기본적인 기술들을 소개한다. 주요 강의 내용은 그래픽스를 위한 자료구조, 그래픽 프로그래밍 언어, 기학학적 변환, shading, 가시화 등을 포함한다.
설계 패턴(Design Patterns)
객체지향설계에서 반복적으로 발생하는 문제에 대한 단순하고 효과적인 해결책들을 제시하는 설계패턴을 학습하여 소프트웨어 개발에 필수적인 설계 능력을 향상시킨다. 주요 내용으로는 생성관련 패턴, 구조관련 패턴, 행위관련 패턴을 포함한다
프로그래밍기초 (Programing Basis)
기초적인 C++ 프로그래밍을 익히는 것이다. 이를 위해, C++ 프로그램의 기본적인 구조, 데이터 형, 변수, 함수, 분기문, 반복문, 재귀 프로그래밍, 문자 입출력, 배열, 포인터 등 고급 C++ 프로그래밍을 위한 기초를 배운다. 교재는 많은 예제 프로그램을 포함하여, 초보자도 쉽게 프로그래밍에 친숙해질 수 있고, 이론과 실습을 병행함으로써 컴퓨터 공학을 비롯한 전자정보학부에서 필요한 기초적인 프로그래밍 능력을 배양한다.
과제1-정훈섭.hwp