목포해양대학교 컴퓨터공학과

교육 교과목소개

교과목소개

페이스북 인스타그램 유튜브 프린트

컴퓨터공학 개론 (Introduction to Computer Engineering)

새롭게 컴퓨터 분야에 입문하는 학생들에게 소프트웨어와 하드웨어, 인터넷, 정보 처리 등 다양한 주제를 소개하는 것을 목표로 한다.

프로그래밍 기초 실습 (Fundamental of Programming & Lab.)

본격적인 프로그래밍 언어 학습에 앞서, 프로그래밍에 대한 기본 개념을 습득하고, 흥미를 유발하는 것을 목표로 한다. 초보자들에게 적합한 C 언어를 사용하여, 변수, 반복문, 분기문, 배열 등의 기초 개념을 학습한다.

이산수학 (Discrete mathematics)

컴퓨터에서 활용되는 수학적 개념의 학습을 목표로 한다. 이를 위하여 실세계와 컴퓨터 자료와의 인과관계를 다루는 명제, 논리와 집합 이론 등을 학습하고, 이를 바탕으로 추론 규칙을 다룬다. 또한 재귀, 관계 및 함수 등을 학습함으로써 컴퓨터에서 다루어지는 문제들을 해결하기 위해 이런 이론들이 어떻게 활용되는지 살펴본다.

C 언어 및 실습 (C Programming & Lab.)

C 언어의 기본 원리와 프로그래밍 개념을 이해함을 목표로 한다. 이를 위하여 C 언어의 기본 원리, 변수 선언과 정의, 반복문, 조건문, 함수구현 및 호출, 포인터와 구조체 등을 학습한다.

디지털 전자회로 및 실습 (Digital electronic circuit & Lab.)

디지털 전자회로의 기본요소인 R, L, C 수동 소자의 개요와 역할, 그리고 활용법에 대하여 학습하고, 디지털 전자회로의 능동소자로 활용되는 트랜지스터와 스위칭 회로, 펄스 회로, 연산 증폭기 회로, 전원 회로 등에 대한 구조와 동작을 배우며, 실험실습을 통하여 디지털 회로의 측정과 디지털 전자회로의 동작을 이해할 수 있는 능력을 배양한다.

창의공학설계 (Creative engineering design)

창의적인 문제 해결 방법과 컴퓨팅 사고 방법을 학습하고, 문제 해결을 위해 창의성을 바탕으로 도출된 기본적인 아이디어를 설계하는 방법을 학습하고, 다양한 도구를 이용해 아이디어를 구현하는 방법을 학습한다.

논리회로 및 실습 (Logic circuit and Lab.)

논리회로의 기본 요소인 각종 게이트 소자에 대한 개요와 역할, 그리고 활용에 대하여 학습하고, 부울 대수, 디지털조합논리회로, 플립플롭 및 순차논리회로, 디지털 응용 회로 등에 대한 구성과 동작에 대한 강의와 응용 부분에 대한 실험 실습을 병행하여 논리 회로에 대한 실무능력을 기른다.

자료구조 및 실습 (Data Structure & Lab.)

본 교과목은 이산수학과 프로그래밍 언어 등에 대한 지식을 기반으로, 알고리즘의 기본 개념과 분석 방법, 배열, 리스트, 큐, 스택, 트리, 그래프 등의 기본 자료구조에 대한 개념과 활용 방안을 학습한다.

Java 및 실습 (Java Programming & Lab.)

객체지향 개념을 지원하며 다양한 플랫폼에 독립적인 프로그래밍 언어인 Java의 특징을 이해하고, Java SDK에서 제공하는 기본적인 라이브러리를 이용한 프로그램 개발 능력을 기른다. 주요 내용으로 클래스, 상속, 다형성, 인터페이스, 제네릭, 그래픽 처리(AWT, 스윙), 입출력 시스템 등과 관련한 문법 및 라이브러리 패키지 사용법을 다루고, 실습 및 과제물을 통해 구체적인 문제에 적용하는 방법을 익힌다.

UNIX 및 실습 (Unix & Lab.)

서버 환경의 대표적인 운영체제인 UNIX(LINUX)의 기본 명령어와 다양한 유틸리티, 쉘 프로그래밍, UNIX 환경에서의 프로그램 개발 방법 등을 학습한다.

오토마타(Automata)

컴퓨터의 수학적 모델인 오토마타와 오토마타가 인식 할 수 있는 형식언어에 대한 개념을 이해하여 컴퓨터에 관한 기본 원리를 습득하는 것을 목적으로 한다. 이를 위해 유한 오토마타와 정규 언어, 푸시다운 오토마타와 문맥-자유언어, 튜링 기계 등을 다룬다.

웹 프로그래밍 및 실습(Web Programming & Lab.)

이 과목에서는 인터넷 환경에서 활용도를 높일 수 있는 기본 기술을 습득하는 것을 목표로 한다. HTML의 기본부터 CGI, CSS, DHTML 등을 배우고 응용하는 방법을 학습한다.

컴퓨터구조 (Computer architecture)

컴퓨터를 구성하는 구성요소의 기능과 그들 상호간의 작용을 이해하고 이를 바탕으로 컴퓨터 시스템을 구현하는데 사용되는 여러 설계 기법들을 학습한다. 명령어집합, 중앙 처리장치, 파이프라이닝, 메모리 계층구조, 입출력장치, 멀티프로세서 등을 다루며 컴퓨터 발전의 역사적 고찰 및 컴퓨터 시스템의 성능 분석에 필요한 기본적인 지식 등을 배운다.

알고리즘 및 실습 (Algorithms & Lab.)

컴퓨터 응용 분야의 여러 문제들을 해결하는데 유용한 알고리즘들(다양한 탐색 기법, 정렬 기법, 해싱, 그래프에서의 탐색 기법 등)을 이해하고, 문제의 특성에 맞는 알고리즘을 선택할 수 있도록 알고리즘의 성능 분석에 필요한 이론을 소개하는데 그 목적이 있다.

UNIX 프로그래밍 및 실습 (Unix Programming & Lab.)

UNIX(LINUX)에서 제공하는 시스템콜들에 대한 이해를 바탕으로 UNIX 시스템 콜들을 이용한 파일 관리, 프로세스 관리, 프로세스간 통신 기능들을 구현한다.

확률과 통계 (Probability & Statistics)

정보통신 분야에서 기본이 되는 확률 이론과 이의 통계학적 응용에 대해 학습한다. 이를 위하여 확률의 기본 개념과 조건부 확률, 확률적 독립성, 확률 분포, 확률과정 등을 소개한다. 또한 통계적 추정 및 검정, 분산분석, 회귀분석 등에 관하여 소개한다.

프로그래밍 언어론(Programming Language)

컴퓨터공학 전공자로서 접하게 되는 다양한 프로그래밍 언어가 갖는 공통적인 구조와 개념에 대해 총괄적으로 학습한다. 변수, 제어 구조, 객체, 함수 등 다양한 부류의 프로그래밍 언어가 갖는 특징과 개념을 이해함으로써 프로그래밍 언어의 기능에 대한 이해를 넓히는 것을 목표로 한다.

공학글쓰기(Technical Writing)

공학 관련 보고서, 논술식 리포트, 졸업 논문 등의 작성에 필요한 글쓰기 능력을 향상시키기 위해 주제작성, 구성과 전개, 문장과 표현, 교정 등의 방법을 배우는 것을 목적으로 한다. 이를 위해 예비 과학기술자로서의 자기 이해, 바른 글쓰기의 기초, 공학적 사고, 제품 개발과 설명 등에 대해 학습한다. 또, 다양한 글을 직접 작성해봄으로써 학습한 내용을 연습할 수 있는 기회를 갖는다.

Java 응용 및 실습(Advanced Java Programming & Lab.)

Java SDK에서 제공하는 다양한 주제의 라이브러리 패키지를 이용한 고급 프로그램 개발 능력을 기른다. 주요 내용으로 멀티쓰레딩, 네트워크 프로그래밍, JDBC 등을 다루고, 습 및 과제물을 통해 구체적인 문제에 적용하는 방법을 익힌다. 선수과목으로 ‘운영체제’, ‘컴퓨터 네트워크’, ‘데이터베이스’, ‘Java 및 실습’ 이수가 필요하다.

운영체제 (Operating System)

컴퓨터구조와 프로그래밍 언어 등에 대한 지식을 기반으로 컴퓨터시스템의 핵심인 운영체제의 구성 요소들과 각 기능, 관련 알고리즘 등을 학습한다. 운영체제의 구성, 프로세스 관리, 기억장치 관리, 파일시스템, 입출력 장치 관리, 분산시스템, 보호 및 보안 등을 배운다.

데이터베이스 (Database)

데이터베이스 시스템의 기초 개념에서부터 시스템의 구조 및 데이타 모델, 관계형 데이터 베이스 시스템의 개념에 대해 학습한다. 이를 위해 정규화, 트랜잭션 관리 및 회복 기법과 데이터베이스 보안에 관한 이 질의어인 SQL 사용법 등을 학습한다.

C++ 및 실습 (C++ Programming & Lab.)

복잡하고 규모가 큰 프로그램 개발이 요구되는 컴퓨터 응용 분야에 필요한 객체지향 개념을 이해하고, 객체지향 프로그래밍 언어로 널리 알려진 C++을 학습하여 여러 문제 해결에 대한 활용 능력 배양을 목표로 한다. 다루는 주요 내용은 클래스, 상속, 오버로딩, 오버라이딩, 입출력시스템 등이며, 실습 및 과제물을 통해 구체적인 문제에 적용하는 방법을 익힐 수 있다.

객체지향모델링(Object Oriented Modeling)

컴퓨터 응용에서 복잡하고 규모가 큰 시스템을 분석하여 설계하는데 있어, 확장성 및 재사용성을 고려한 객체 지향 개념은 필수적이다. 이 과목는 시스템 개발을 위한 객체 지향 분석 및 설계에 필요한 개념을 이해하고, 분석 및 설계 과정을 적절히 표현하기 위한 도구로 활용되는 UML(Unified Modeling Language)과 많은 문제들에 공통적으로 사용되는 디자인 패턴들을 익히는 것을 목적으로 한다.

컴퓨터 그래픽스 및 실습 (Computer Graphics & Lab.)

본 과목에서는 2차원 및 3차원 컴퓨터 그래픽스에 대한 기본 개념과 원리를 소개한다. 이를 위하여 그래픽 입출력 장치, 기하학적 원시요소의 변환, 2, 3차원 변환, 클리핑, 뷰잉, 은면제거 등을 강의하고 텍스쳐, 조명모델, 색상 모델 등을 강의하여 컴퓨터 그래픽스의 이론적 배경과 그 기본 알고리즘을 이해함을 목표로 한다.

전공영어(Technical English)

컴퓨터공학 용어들은 대부분 영어로 되어 있는데, 이들 용어들에 대한 이해는 전공 학습에서 매우 중요한 요소이다. 본 강의는 컴퓨터 하드웨어와 소프트웨어에서 사용되는 여러 가지 영어로 된 용어들을 설명하고, 지속적으로 발전해가는 컴퓨터공학 분야의 신기술과 이에 관련된 영어 용어들을 학습함을 목표로 한다.

소프트웨어공학 (Software Engineering)

신뢰성 높은 소프트웨어를 효율적, 효과적으로 개발하기 위한 기법을 배운다. 소프트웨어 생명 주기를 이용하여 요구사항분석, 요구사항정의, 설계, 구현, 검증, 테스트, 유지, 보수에 이르기까지 소프트웨어의 개발과 유지 보수 등 소프트웨어 개발의 전 과정에 대한 전반적인 내용을 학습하고, 실례를 통하여 익힌다.

데이터 통신 (Data Communication)

정보통신과 컴퓨터 네트워크의 기본이 되는 기술과 원리에 대해 학습한다. 특히 OSI 7계층 중 하위 2개 계층에 대한 내용과 전화망, 이동통신망, LAN 등의 핵심 기능과 원리, 오류 제어 및 흐름 제어, 다양한 데이터 링크 계층 프로토콜에 대해 학습하여 인터넷과 컴퓨터 네트워크의 기반 개념을 정립한다.

데이터 분석(Data Analysis)

데이터 분석은 데이터에서 의미 있는 패턴과 통찰을 획득하여 의사결정을 지원하기 위한 기술이다. 이 과목은 데이터 수집, 가공, 분석, 시각화 등 데이터를 효과적으로 다룰 수 있는 다양한 방법들을 학습하고, 이를 기반으로 실제 데이터 분석에 사용하는 능력을 키우는 것을 목적으로 한다.

컴퓨터 네트워크 (Computer Networks)

컴퓨터 네트워크의 핵심 참조모델인 OSI 7계층 중 데이터 링크 계층 상위에 있는 네트워크 계층, 트랜스포트 계층, 세션 계층, 표현 계층, 그리고 응용 계층에 대한 이론을 바탕으로 소켓을 기반으로 하는 네트워크 프로그래밍에 필요한 기반 지식과 실기를 학습한다.

임베디드 응용 및 설계 (Embedded application design)

임베디드 ATmega328의 기본 구조와 기능 및 명령어에 대하여 이해하고, 데이터통신에 적용하는 인터럽트, I/O 포트, 타이머, 직렬포트와 같은 기능을 활용하는 소프트웨어 설계기법에 대하여 강의한다. 주변장치의 응용실습을 통하여 LCD구동, ADC 및 DAC, 디지털음악, 파형발생, 센서인터페이싱 등을 구현할 수 있는 실무능력을 갖추도록 한다.

데이터베이스 응용 및 설계 (Advanced Database & Design)

데이터베이스 이론을 바탕으로 실제 데이터베이스를 설계하고 구현하기 위한 기술들을 습득한다. ERWin설계 도구를 사용하여 설계하고, SQL을 사용하여 다양한 질의를 작성함으로써 데이터베이스의 실제 응용 방법을 학습한다.

멀티미디어 프로그래밍 및 실습 (Multimedia Programming & Lab.)

멀티미디어의 개념과 그 구성요소들을 이해함을 목표로 한다. 이를 위하여 멀티미디어의 정의 및 기본 개념, 멀티미디어 시스템 요구사항과 텍스트, 그래픽, 애니메이션, 영상, 비디오, 음성 등의 다양한 미디어 기술을 소개하고, 프로젝트를 통하여 응용 분야에 대해 학습한다.

윈도우 프로그래밍 및 실습 (Window Programming & Lab.)

소프트웨어 사용의 편리성을 위한 GUI(Graphic User Interface)는 소프트웨어 개발에 있어 중요한 요소이다. 이 강좌는 GUI를 기본으로 하는 윈도우즈 운영체제에서 실행되는 응용프로그램 개발을 위한 프로그래밍 기술을 익히고 활용 할 수 있도록 하는데 그 목적이 있다.

차세대 컴퓨팅 세미나(Next-generation Computing Seminar)

빠르게 변화하는 IT 분야의 최신 기술 동향과 4차 산업 혁명과 관련된 스마트 기술에 대해 학습한다. 사회 전반에 걸친 IT 기술의 접목 현황과 업무 프로세스, 드론, 3D 프린터, 가상 현실 등 4차 산업혁명을 이끌어 갈 최신 기술들을 학습한다. 학습을 바탕으로 최신 기술을 선도하는 리더가 될 수 있도록 동기를 제공한다.

기계학습(Machine Learning)

기계학습은 새로운 경험을 통해 성능을 향상시켜 나가는 것과 관련한 인공지능 기술이다. 이 과목은 기계학습의 개념과 용어, 회귀, 분류, 군집 등의 주요 알고리즘과 최근 많은 영역에서 뛰어난 학습능력을 발휘하고 있는 딥러닝 기술을 이해하고, 이를 문제해결에 활용 할 수 있는 능력을 키우는 것을 목적으로 한다.

캡스톤 디자인(Capstone Design)

전공에서 배운 모든 지식을 망라하여 하드웨어와 소프트웨어의 설계부터 구현까지 전체 과정을 실습한다. 팀에 기반하여 진행하며, 팀별로 주제를 정하여 전 과정을 실습함으로써 창의성을 개발하고, 협업의 기본을 배운다.

네트워크 프로그램 설계 (Network Program Design)

컴퓨터 네트워크, 프로그래밍 언어 등에 대한 지식을 바탕으로 인터넷 주요 응용 프로토콜의 동작과 구성을 학습하고 이를 바탕으로 응용 프로그램을 설계하고 구현한다.

영상처리 (Image processing)

2차원 디지털 영상처리의 기본 개념과 그 이론을 이해하고 실제적으로 응용할 수 있는 능력을 배양함을 목표로 한다. 이를 위하여 영상의 표현, 잡음 제거, 명암 대조 개선, 히스토그램 분석 등의 화질 개선 분야, 이진화, 영상 분할, 영상 표현 등의 영상 특징 추출 분야, 영상 해석을 포함하는 영상 이해 분야, 그리고 주파수 도메인의 영상 처리, 비디오 압축, 움직임 추정 등의 주제를 학습한다.

인공지능 (Artificial Intelligence)

지적 능력을 컴퓨터를 통해 실현시키고자하는 다양한 기술들을 이해하고, 이를 이용한 응용 예들을 살펴봄으로써 지능시스템에 대한 기초 개념을 습득할 수 있도록 한다. 인공지능의 주제 중 탐색, 불확실성, 전문가 시스템, 퍼지, 인공신경망, 유전알고리즘 등을 다루고, 인공지능 분야에서 많이 사용되는 리스트계열 언어(예, LISP)도 학습 할 수 있다.

해양IT (Marine IT)

VHF, AIS 등의 선박통신과 레이다, ECDIS 등의 항법장비에 대한 종류와 개요를 이해시키고, 관련 장비들이 연계되어 항해정보 및 해상교통관제시스템을 구성하는 계통에 대하여 강의한다. 해상정보의 교환과 모니터링 그리고 안전항해를 목적으로 하는 해상안전정보 및 관련 SW의 운용과 발전 동향을 제시함으로써 학생들이 장차 해양ICT 분야에 진출할 수 있는 기본능력을 배양한다.

스마트전력ICT개론(Introduction to Smart Power ICT)

전력ICT는 전력 기술에 정보통신 기술을 융복합화 하여 전력 기기와 전력 시스템을 디지털화, 지능화하고, 이를 통해 전력 공급의 신뢰도 향상, 전력 품질 개선, 전기화재 비율 감소, 전력 거래의 활성화, 대규모 수용가 중심의 전기 절약 등을 도모하기 위한 기술이다. 본 강의는 발전, 변전, 송전, 배전, 전력판매, 전력거래, 전력보안, 전력정보시스템 등의 전력계통과 이와 관련된 ICT 기술을 소개함으로써, 전력 ICT 분야에 대한 폭넓은 기초 지식을 갖추도록 하는데 그 목적이 있다.

정보보호 (Information Security)

운영체제, 컴퓨터 네트워크, 인터넷프로토콜 등에 대한 지식을 바탕으로 암호화, 인증, 전자서명 등의 기본 개념과 주요 해킹 기법, 시스템 및 망 취약성 등을 익히고, 이를 통해 시스템 보안과 망 보안, 미디어 보안, 소프트웨어 보호 등을 학습한다.

정보보안 응용 및 실습 (Advanced information security)

정보보안의 최신 기술을 응용하고 활용하는 방법에 대해 학습한다. 클라우드 환경에 대한 이해와 기본적인 가상 인프라 구축, 클라우드 보안을 위한 위협 모니터링, 취약점 진단 등을 학습한다.

해양ICT실무(Marine ICT Practice)

e-Navigation 및 자율운항선박 분야에 요구되는 선내모니터링 및 원격콘트롤에서 필수 요소인 각종센서의 활용, 인터페이스 설계 그리고 선박내 네트워크의 구성과 관련 SW 설계에 필요한 기본지식을 습득한다. 선박의 항해, 기관, 통신설비는 물론 전기안전, 선내보안, 화재감시, 화물상태, 연료 및 청수량 등의 모든 상태를 모니터링하고 평가하여 최적화로 자동원격제어 하는 실무를 학습한다.

모바일 프로그래밍(Mobile Programming)

대표적인 모바일 프레임워크인 안드로이드 플랫폼에 대한 이해와 위젯, 이벤트 처리, 액티비티와 같은 컴포넌트에 대해 학습한다. 또한, 기초 안드로이드 앱에서부터 센서, 지도 등을 활용한 고급 프로그래밍을 통해 안드로이드 플랫폼이 제공하는 다양한 서비스를 활용할 수 있는 기반 지식을 갖춘다.

ICT학점연계인턴쉽(ICT Curriculum Association Internship)

정규학기 중 산업체 현장실습을 통해 취업진로 계획을 수립하고 정규학기 강의에서 얻기 어려운 전공분야의 트렌드를 습득한다.

ICT창업전략(ICT Startup Strategy)

ICT 산업에서 컴퓨터공학 전문인이 쉽게 접근할 수 있는 소프트웨어 및 하드웨어 분야에 대하여 심도있게 조사하고, 실무수행 가능성 및 애로사항을 분석하여 평가하는 세미나 과정을 갖는다. 세미나 과정에서 제시되는 관련 기술분야에 대한 소프트웨어의 설계기법, 임베디드 응용의 인터페이스와 네트워크 설계에 필요한 이론과 실무기술에 대하여 실험실습 중심의 수업을 진행한다.

현장실습I, II, III(Field Exercise)

산업체 현장실습을 통해 취업진로 계획을 수립하고 정규학기 강의에서 얻기 어려운 전공분야의 트렌드를 습득한다.