전공기초 | 컴퓨터수학1, 파이썬프로그래밍및실습, 컴퓨터수학2, C프로그래밍및실습, 컴퓨터시스템기초설계 |
---|---|
전공필수 | 자료구조, 컴퓨터구조, 알고리즘, 운영체제 |
전공선택 | 선형대수, 객체지향프로그래밍, 논리회로설계및실험, 확률및통계, 형식언어및오토마타, 데이터분석및실습, 사용자인터페이스및실습, 컴퓨터네트워크, 프로그래밍언어, 파일처리, 문제해결, 시스템프로그래밍, 지능형시스템, 소프트웨어공학, 데이터베이스, 컴파일러, 임베디드시스템구조, 인공지능, 정보보안, 컴퓨터비전, 웹프로그래밍설계및실습, 전공종합설계1,2, 임베디드시스템소프트웨어, 데이터베이스응용, 컴퓨터그래픽스, 정보기술세미나1,2, 컴퓨터공학특강1,2, 모바일네트워크, 분산및병렬처리컴퓨팅, 컴퓨터학개론, 컴퓨터미적분활용, 컴퓨터공학응용기초, 어셈블리프로그래밍, 네트워크프로그래밍, 리눅스시스템프로그래밍, 머신러닝, 컴퓨터비전응용, 딥러닝 |
컴퓨터학을 학습하는데 기반이 되는 수학적 기초지식을 습득한다. 술어논리, 증명 방법, 집합, 알고리즘, 수학적 귀납법, 재귀, 경우의 수 계산법 및 이산 확률 등을 배운다.
컴퓨터에서 운영체제와 프로그래밍은 컴퓨터를 실제로 유용하게 만드는 핵심적인 구성 요소이다. 다양한 운영체제와 프로그래밍 언어가 있지만 UNIX 운영체제와 C 프로그래밍 언어는 가장 많이 사용되고 있고 또한 다른 변종들에 많은 영향을 주고 있기 때문에 매우 중요한 운영체제와 프로그래밍 언어라 할 수 있다. 본 과목에서는 UNIX의 사용법과 C 프로그래밍에 대해서 배운다.
컴퓨터학을 학습하는 데 기반이 되는 수학적 기초지식을 습득한다. 관계, 그래프, 트리, 불 대수 및 유한자동기계나 튜링기계와 같은 계산 모델 등을 배운다.
프로그래밍1 및 실습을 통해 UNIX의 사용법과 기본적인 C 프로그래밍에 대해서 학습하였다. 프로그래밍2 및 실습에서는 전처리기와 구조체/공용체를 이용한 사용자 정의형을 만드는 방법과 자기참조 구조체를 사용한 고급 프로그래밍에 대해서 배운다. 또한 UNIX 컴퓨터상에서의 기초적인 시스템 프로그래밍에 대해서도 배운다.
전자계산에서 처리하는 데이터의 기본 개념과 이를 효율적으로 처리하는 방법에 대해 학습한다. 학습의 이해를 높이기 위해 Java 언어를 이용한 실습 및 과제를 활용한다.강의, 실습 및 과제를 통하여 Linked List, Stack, Queue, Recursion, Tree, Searching, Sorting, Graph 등의 기본적인 자료구조의 이해, 설계 및 분석 방법을 숙지하여 실무에 적용할 수 있는 프로그래밍능력 함양을 목표로 한다.
컴퓨터의 기본 구조와 동작원리를 학습한다. 명령어의 형태와 표현 형식을 공부하고 이를 바탕으로 간단한 프로세서를 설계함으로써 프로세서의 내부 구조와 동작 원리를 이해하도록 한다. 또한 메모리 계층구조를 학습하여 낮은 가격에 속도 빠르고 용량이 큰 메모리를 구성하는 기술을 터득한다. 입출력 장치를 프로세서 및 메모리와 연동시키고 제어하는 방법을 학습하여 완전한 컴퓨터시스템을 설계할 수 있는 능력을 배양한다.
어떤 문제의 모든 사례에 대하여 해답을 찾을 수 있도록 컴퓨터 프로그램을 만들어내기 위해서는 각 사례에 대하여 해답을 찾아야 하는 일반적인 단계별 절차를 명시해야 하는데, 이러한 단계별 절차를 알고리즘이라고 한다. 알고리즘은 컴퓨터학의 모든 분야를 이해하는 기초가 되는 중요한 분야이다. 이 과목을 통해서 문제 해결을 위한 접근 방법들과 그 방법에 대한 성능평가를 수행하고, 이를 효과적으로 구현할 수 있는 능력을 배양하고자 한다.
컴퓨터 구조에 대한 이해를 바탕으로 컴퓨터 시스템을 구성하고 있는 자원들의 존재를 인식하고 어떤 정책을 적용하여야 이들의 효율성을 극대화할 수 있으며, 어떤 개념을 기반으로 정책을 수립하여야 이들 자원을 이용하여 사용자들에게 보다 편리한 기능을 제공할 수 있는 것인지를 알기 위하여 기본적으로 사용할 수 있는 정책과 개념에 대하여 학습한다. 또한, 이러한 기본 이론을 기반으로 현재 상용 운영체제에서 구현하고 있는 정책의 진화된 모습을 파악하고 실제 문제에 적용하기 위하여 커널을 분석, 문제를 해결하는 능력을 키운다.
공학 전반에서 필요한 선형대수의 기초개념들을 습득한다. 일차연립방정식의 해, 행렬, 가우스 소거법, 대각화와 LU factori-zation, Determinant, 고유치와 고유벡터, 선형변환을 표현하는 행렬과 그의 분석 등 각종 응용분야에서 사용되는 선형대수 이론을 배운다.
프로그래밍2및실습 과목을 수강한 학생들을 대상으로 객체지향프로그래밍의 기본 개념인 객체, 클래스 및 상속 등을 소개한다. 자바 언어를 이용한 객체지향프로그래밍을 실습을 통하여 습득한다.
디지털 시스템의 분석과 설계를 위한 논리회로의 기본개념 및 원리를 습득한다. 이를 통하여 조합회로 및 순차 회로의 구현방법을 익히고 면적과 성능을 향상시키는 다양한 기법을 배운다. 아울러 실습을 통하여 실제회로를 제작함으로써 교육적 효과를 배가시킨다.
주어진 자료에서 유용한 정보를 추출하여 이러한 정보를 바탕으로 자연 현상이나 사회적 현상 등에 대한 확률적 추론이나 예측을 할 수 있도록 각종 자료 분석 방법의 기초를 학습한다. 구체적으로 표본공간과 사상들에 대한 개념을 기반으로 확률론의 기본 개념을 이해하고, 확률분포, 표본분포, 통계적 추론(추정 및 검정) 등의 통계학의 기초적인 개념과 이론을 학습한다.
Computer의 수학적 모델인 Automata에 대해 학습하고, Context-free language, Turing machine 등 유용한 개념들에 대한 관심과 이해를 넓힌다. 또한, 주어진 문제의 Computability와 Complexity, 알고리즘 분석과 개발에 필요한 기초지식을 배운다.
확률 및 통계의 기초이론을 기반으로 통계적 추론의 두 주요 개념인 추정과 검정의 이론을 심도 있게 학습하고, 통계 분석기법중 실제로 많이 사용되는 분산분석, 회귀분석, 이산형 자료 분석 등을 학습한다. 또한 통계패키지를 이용하여 실제적인 통계자료 처리과정을 학습한다.
사용자 인터페이스(UI, User Interface)는 단순 텍스트 형식을 포함한 그래픽 환경에서 사용자가 간단한 동작으로 컴퓨터를 편리하게 사용하게 해주는 기술이다. UI 프로그래밍 수업에서는 Graphic UI 기반 어플리케이션 소프트웨어를 다루며, 요구사항에 따라 결과를 처리하는 이벤트 기반 프로그래밍 기법을 배운다. 또한 학생들은 이동장치에서 사용되는 다양한 UI 프로그래밍 기법을 익히고 개발도구를 사용하여 이동장치에서 동작하는 간단한 앱을 작성해본다.
1. 인터넷이 동작하는 원리를 TCP/IP 계층과 데이터 억세스 링크 및 물리 계층에 이르기까지의 최상위 계층인 응용계층을 제외한 모든 레이어에 걸쳐서 살펴본다. 2. 인터넷에서 응용계층에서 데이터가 발생한 시점에서 이들이 사용자에게 전달되는 과정에서 어떠한 절차를 거쳐 전달되는지의 과정을 공부한다. 3. 2.에서 데이터 전달 중에 어떠한 문제점이 발생하며 어떻게 극복되는지를 공부한다. 4. 수업범위 영역에서 근거가 되는 수학 및 물리적인 성질을 공부한다.
프로그래밍언어들을 특성에 따라 imperative(명령형), functional(함수형), logic(논리형), object-oriented(객체지향형) 4가지로 구분한다. 본 강의에서는 일반적으로 많이 다루어지는 고급언어인 C 와 Pascal 과 같은 imperative language (명령형 언어)를 중심으로 언어의 설계 원리를 이해하고 언어의 구성요소인 identifier(식별자), data types, expressions, statements, subprograms에 대한 특성과 설계 시 고려해야 할 것들을 학습한다. 또한 Java, Haskel, Prolog와 같은 언어들에 대하여 특성과 사용방법을 학습한다. 따라서 단순히 언어의 사용법만을 익히는 것이 아닌 설계 원리 및 구현 방법들을 고려한 프로그래밍 방법론을 익힐 수 있도록 한다.
데이터를 저장하고 처리하기 위한 파일의 기본 개념, 파일 저장장치, 파일의 입출력 제어, 효율적인 파일 구성 방법, 그리고 데이터베이스와의 관계 등을 학습한다. 또한 컴퓨터 기술의 발전에 따른 새로운 응용을 위한 다차원 데이터를 위한 파일구조 등에 대해서 학습한다.
컴퓨터정보기술 관련 일을 해나가는데 있어 필수적인, 응용문제의 정확한 이해, 그리고 이를 해결할 수 있는 프로그램 작성능력을 향상시킨다. 간단한 응용문제들을 읽고 이를 해결하는 프로그램을 작성하게 하고, 현대적인 몇 가지 알고리즘과 방법들을 배워 적용시키는 기법을 훈련한다.
컴퓨터의 기본 구조에 대한 이해를 바탕으로, 아주 간단한 구조를 가진 단순화된 컴퓨터 (Simplified Instruction Machine)에서 작동하는 어셈블리 언어를 이용하여, 기계어의 구조, 어셈블러, 로더, 매크로처리기 등의 구조와 동작원리를 학습한다. SIC에서 작동되는 어셈블러, 로더를 작성하고, 이를 작동시키는 시뮬레이터를 완성해봄으로써, 기본적인 시스템소프트웨어에 대한 이해를 높이도록 한다.
지능형 시스템 구축을 위한 프로그램 구조에 대해서 학습한다. 기존의 procedural 개념과는 달리 declarative한 방식으로 프로그램 함으로써, 지식베이스 및 추론 엔진에 대한 개념을 학습한다. 학습한 내용을 Jess 기반의 시스템으로 단계별로 구축함으로써, 지능형시스템의 구조를 이해할 수 있도록 한다.
지금까지 연구된 소프트웨어 개발 방법을 숙지하고, 개발의 각 단계에서 수행하여야 할 일들과 만들어 져야 할 산출물에 대하여 학습한다. 소프트웨어 공학의 기본 개념과 프로세스를 이해하고, 요구사항 분석이 설계와 어떻게 효과적으로 적용되는지를 이해한다. 요구사항 분석의 방법을 이해하여야 하며, 객체지향 방법의 기본 원칙을 이해한다.
데이터베이스 시스템에 대한 기본적인 지식을 습득한다. 데이터베이스의 기본 개념, 데이터 모델의 목적 및 종류, ER 데이터모델, 실세계에서 주로 사용되는 관계형 데이터베이스 모델 등을 공부한다. 데이터베이스 언어인 SQL를 습득하며, 상용 데이터베이스 시스템을 이용하여 실습을 병행한다. 또한 데이터베이스 설계의 중요한 단계인 정규화 이론에 관하여 학습한다.
컴파일러는 고급프로그래밍언어로 작성된 사용자 프로그램은 실행 컴퓨터 환경에 적합한 실행 가능한 코드로 변환시키는 시스템 소프트웨어이다. 본 강좌에서는 컴파일러의 설계원리와 처리 과정을 학습하고 간단한 컴파일러를 구현한다. 문법을 정의하는 형식언어에 대한 정의, 컴파일러의 단계인 어휘 분석, 구문 분석, 의미 분석, 코드화 및 코드의 최적화 등을 학습하고 고급언어를 이용하여 실제로 컴파일러를 구현하여 컴파일러에 대한 이해를 높이고 효율적인 컴파일러를 만들 수 있는 시스템프로그래밍 능력을 배양시킨다.
컴퓨터구조에 관한 지식을 바탕으로 임베디드 시스템에서 사용하는 CPU의 구조를 이해하고, 오늘날 대표적으로 사용하는 CPU가 어떻게 설계되고 구현되었는지를 구체적으로 학습한다. 또한 그 위에서의 사용하는 어셈블리 언어를 학습함으로써 컴퓨터구조와 프로그램 언어의 상관관계를 이해하도록 한다.
인공지능이란 컴퓨터를 인간과 같은 지능을 갖게(보고, 듣고, 말하고, 생각하며 학습할 수 있게) 하기 위한 이론과 방법에 관한 학문으로 컴퓨터의 핵심기술로 다양한 분야에서 응용되고 있다. 본 과목에서는 인공지능의 기본 개념 및 관련 용어, 문제 해결을 위한 지식표현, 추론방법 및 다양한 탐색기법, 그리고 기계학습 기법에 대하여 학습한다. 또한, 전문가 시스템, 데이터마이닝, 에이전트 시스템, 지능형 로봇 등의 구조, 기능, 구현 방법 및 응용분야에 대한 이해를 통하여 다양한 인공지능 문제를 다룰 수 있는 능력을 배양한다.
컴퓨터 시스템 자원을 보호하기 위한 보안 기초지식이론을 학습한다. 수강생들은 바이러스, 웜과 같은 악성코드의 제작 원리를 이해하고, 악성코드를 막기 위한 응용 프로그램 레벨의 보안 기술과 메모리, 파일 시스템, 프로세스 관점에서의 시스템 보안 기술, 저장 또는 유통되는 데이터 보호를 위한 데이터베이스 보안기술을 학습한다. 추가적으로, 수강생들은 암호 라이브러리를 이용한 보안 시스템 구현 기법을 배운다.
컴퓨터가 사람의 눈과 뇌와 같이 영상을 분석하여 지식을 축적하고 환경에 반응하도록 하는 기술을 학습한다. 영상획득원리, 영상처리, 잡음제거, 특징추출, 학습 및 인식 등을 다룬다. 또한 학습된 기술과 관련된 소프트웨어 도구를 활용하여 영상정보인식시스템을 개발한다.
웹프로그래밍에 대한 기초이론과 응용기술을 이해한다. WWW의 실질적인 사이트 제작과 운용에 관련된 응용 프로그램들을 학습하며, XML, CGI, ASP, JSP 및 확장된 기능 프로그래밍을 훈련한다.
전공종합설계는 공학과 과학 지식을 활용하여 요소, 프로세스, 시스템을 설계하는 과목이다. 수강생들은 개인 혹은 팀을 구성하여 지도교수의 지도하에 관심있는 연구 주제를 설정한다. 또한 이 과목은 과제 설계 및 진행 방법, 문제 설계/명세/구현/평가를 다룬다.
임베디드 시스템 구조에서 배운 ARM 프로세서에 대한 기본지식을 바탕으로 ARM2410-PRO 보드를 이용하여 실제 시스템을 구현하여 다양한 실습을 한다. Code Warrior와 AXD 디버거를 사용하여 ARM2410-PRO 보드에서 프로그램을 구현한다. 다양한 주변장치들을 제어하여 기본 지식을 익힌후 프로젝트를 통하여 다양한 임베디드 시스템을 직접 구현한다.
본 과목은 데이터베이스 과목에서 배운 지식을 바탕으로 객체 지향형 데이터베이스 및 객체 관계형 데이터베이스에 관한 지식을 습득한다. 각 시스템의 특성, 주요기능, 구현 현황에 관하여 데이터베이스 표준언어인 SQL을 기반으로 강의한다. 트랜잭션의 개념을 익히고, 동시성 제어 방법과 문제점, 해결 방안들에 대해 습득한다. 이를 바탕으로, 객체 관계형 상용 데이터베이스 시스템인 UniSQL/X에서의 데이터베이스 프로그래밍을 실습한다.
컴퓨터를 이용하여 영상을 조작하거나 새로운 디지털 영상을 만들고 처리하는 기술을 학습한다. 그래픽스 라이브러리의 활용 방법, 그래픽을 처리하는 여러 가지 장치, 기하학적 변환, 투사법, 가시변환, 은면 제거, 렌더링, 애니메이션, 가시화 알고리즘, 3차원 형상의 표현 등을 다룬다.
컴퓨터 분야의 현장에서 다양한 신기술에 대한 최신의 연구/개발 및 시장동향을 외부 전문가들의 강의를 통해 이해하도록 한다.
컴퓨터 분야는 급속하게 변화되어 항상 새로운 내용과 연구 분야가 창출되고 있다. 컴퓨터시스템, 소프트웨어 공학, 인공지능 및 컴퓨터 통신 등 컴퓨터 분야 전반에 걸쳐 새롭게 연구되고 있는 분야의 내용들을 선별하여 심도있게 학습한다.
이동 인터넷 단말기가 중단없이(seamless) 네트워크 서비스를 제공받기 위한 프로토콜 및 네트워크 인프라 기술을 가르친다. 네트워크의 기본 이론을 바탕으로 무선 접속 네트워크 기술, 이동 인터넷 기술, 4G 이동 통신 기술, 이동 데이터 트래픽 분산 기술 등을 학습한다.
전통적인 분산시스템을 포함하여 모바일 컴퓨팅, 유비쿼터스 컴퓨팅, 웹서비스 등의 다양한 분산 컴퓨팅 환경을 이해하고, 분산시스템을 구성하기 위해 고려해야 할 디자인 이슈들을 학습하고, 주요 인프라 기술을 가르치며, 웹서비스의 구성요소와 표준기술에 대해서 중점적으로 다룬다. 학생들은 개발 플랫폼, 개발 도구를 이용하여 웹서비스를 구현한다.