교과목 소개

본문 바로가기

과목개요

  • 기초프로그래밍 (Introductory Programming)

    본 과목은 UNIX 계열 운영체제 상에서 기초적인 표준 C 프로그래밍 방법을 익히는 것을 목표로 한다. 이를 위해 표준 C 프로그래밍 언어가 무엇인지 배우고, 변수, 선언문, 반복문, 선택문, 배열, 함수 등의 사용방법 등을 실습을 통해 익히며, 팀 프로젝트를 진행하면서 팀원들 간의 의견 교환 방법 및 문제 해결 능력을 배양한다.

    컴퓨팅개념이해 (Understanding Computing Concepts)

    컴퓨팅의 기본적인 개념과 원리를 기반으로 문제를 구성하고 모형화 하여 해결책을 도출하는 과정에 대한 방법을 이론과 실습을 통해 강의한다. 또한 본 교과목에서는 코딩 교육을 통해 컴퓨팅 사고를 학습시킬 수 있는 방법을 살펴본다.

    정보보호개론 (Introduction to Information Security)

    최근 정보는 수집, 가공, 저장, 검색, 송신, 수신 도중에 정보의 훼손, 변조, 유출 등의 방법으로 공격을 받는다. 정보의 위협이 점차적으로 증가하고 있기 때문에 이를 방지하기 위한 대책이 필요하다. 바이러스 및 악성코드 침투, 해킹 등 여러 가지 보안 이슈들이 사회적으로 자주 발생하고 있으며 이러한 보안 이슈들을 해결하기 위해 정보보호 기술이 필수적이다. 본 교과목에 서는 정보보호의 개념과 기술 등 기본적인 이론부터 실생활에 필요한 응용기술까지 현대암호와 함께 정보보호의 전반적인 이론 및 기초 지식에 대해 학습한다.

    응용프로그래밍 (Advanced Programming)

    본 과목은 기초프로그래밍에서 배운 기초 C 프로그래밍 지식을 바탕으로, 전처리기, 포인터, 자기참조 구조체, 파일 처리 등을 사용하는 고급 C 프로그래밍과 간단한 시스템 프로그래밍에 대해 익히고, 디버거, 프로파일러, make 등과 같은 프로그래밍 도구에 대해서 학습한다.

    리눅스활용 (Linux Utilization)

    본 과목은 Linux 운영체제를 이해하고, 내부구조와 관리 방법을 습득하여 시스템 응용능력을 배양하는 것을 목표로 한다. Linux 설치, 서버구축 등을 실습 환경 구축 방법을 배운다. 다양한 프로그램 컴파일 방법을 익히고, 디버거 활용법을 배운다.

    사이버보안윤리 (Cybersecurity Ethics)

    사이버보안 윤리 개념과 법제도, 다양한 사이버 침해, 범죄 개념과 실제를 학습하고, 유해컨텐츠, 저작권 등 윤리 위반 요소와 대응 기술들에 대해 학습한다.

    자료구조 (Data Structures)

    자료구조는 프로그램에서 사용되는 데이터를 구성하는 방식과 이를 효율적으로 사용하는 방법과 관한 것이다. 본 과목은 List, Stack, Queue, Recursion, Tree, Graph, Sorting 등 기본적인 자료구조를 이해하고, 이에 대한 설계 및 분석 기법을 학습하여 실무에 적용할 수 있는 프로그래밍 능력 함양을 목표로 한다.

    컴퓨터구조 (Computer Architectures)

    본 과목은 소프트웨어 전공 학생들로 하여금 컴퓨터에서 하드웨어 및 시스템의 역할을 학습하는 것을 목표로 한다. 특히, 하드웨어 요소 중 소프트웨어의 성능에 가장 큰 영향을 미치는 프로세서와 메모리 구조 및 동작 방식을 이해하고, 이를 바탕으로 소프트웨어를 최적화할 수 있는 방법을 학습한다.

    객체지향프로그래밍 (Object-Oriented Programming)

    본 과목은 객체지향 패러다임의 근간을 이루는 객체, 클래스, 상속, 다형성 등의 개념들을 다룬다. 이를 위해 대표적인 객체지향 프로그래밍 언어인 Java에 대해 학습하고, 실습을 통해 Java를 사용한 객체지향 프로그래밍 기법을 익힌다. 또한, 프로젝트를 통해 문제 해결 능력을 배양한다.

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

    모바일환경이 극대화됨에 따라 기존의 폐쇄적인 통신환경에서 벗어나, 열린 개발 환경을 제공하게 되었다. 이에 혁신적인 모바일용 애플리케이션인 안드로이드 기반의 모바일 어플리케이션 개발 환경을 이해하고 다양한 실습을 통해 개발하는 방법을 익히도록 한다. 구글 안드로이드 플랫폼 환경하에서 사용되는 자바 언어의 기본 문법을 숙지하여 앱 개발을 위한 프로그래밍 스킬을 키우도록 하며 응용 개발을 위한 핵심 구성 요소들을 학습하기도 한다.

    웹해킹과보안 (Web Hacking and Security)

    웹 서비스의 구조를 학습한 후, HTTP 프로토콜에 대해 학습을 진행한다. SQL Injection, CSRF, 파일 다운로드 취약점, 파일 업로드 취약점 등의 고급 웹 해킹 기법들을 학습하고 이를 다룰 수 있는 시큐어 코딩 적용에 대해 실습한다.

    알고리즘 (Algorithms)

    알고리즘은 문제 해결을 위한 일련의 절차로, 소프트웨어 개발은 정확하고 효율적인 알고리즘을 만드는 것에서부터 시작한다. 이 과목에서는 프로그램 복잡도, 정렬, 다이나믹 프로그램, 그래프 문제, NP-complete 등 기본적인 알고리즘 지식을 학습한다. 또한 이를 사용한 문제 해결방법과 프로그래밍 기법을 익힌다.

    컴퓨터네트워크 (Computer Networks)

    본 과목에서는 TCP/IP 모델을 사용하여 인터넷이 동작하는 원리를 학습한다. 응용계층, 전송계층, 네트워크 계층, 링크 계층 등 각 계층에서의 동작원리와 에러탐지 등을 학습한다. 또한 통신네트워크와 관련된 자료를 이해하고 분석하는 능력과 이를 공식화하여 해결할 수 있는 능력을 배양한다.

    어셈블리프로그래밍 (Assembly Programming)

    프로그래머 관점에서 80x86 프로세서의 구조를 이해하며, 어셈블리 프로그램을 사용하여 프로세서 내부의 동작을 레지스터 수준에서 공부한다. C 등 고수준 언어가 어떻게 기계어로 번역되어 실행되는지를 이해하며, C 와 어셈블리 언어와의 인터페이스에 대해서 알아본다.

    암호와응용 (Cryptography and Its Applications)

    대칭키 암호 알고리즘 및 공개키 암호 알고리즘 등의 기초 암호기술에 대한 이해도를 높인다. 암호 기술들이 활용되는 대표 응용 사례인 Bluetooth 통신, WiFi 통신, Cellular 통신, DRM (Digital Right Management), OTA (Over-The-Air) update, 블록체인 등에 적용된 암호 기술 및 암호 프로토콜을 학습한다.

    개인정보보호 (Privacy Protection)

    개인정보가 노출되어 발생하는 피해 규모가 급증하고 있으며, 이에 따라 개인정보보호를 위한 규제도 증가하고 있다. 본 과목에서는 개인정보 개념, 개인정보보호를 위한 벱제도, 개인정보보호 기술, 개인정보 안전 활용 기술, 개인정보보호 조치 등에 대해 학습한다.

    시스템프로그래밍 (System Programming)

    본 과목에서는 시스템 프로그램의 역할을 이해하고, 응용 프로그램이 실행될 때 단계별 처리과정을 학습한다. 이를 위해 User space에서 저수준의 프로그래밍 방법들과 POSIX를 이용한 시스템 프로그래밍 방법에 대해서 이해하고 학습한다. 또한, 메모리 관리 방법, 멀티 쓰레딩 및 프로세스 이용법과 동기화 방법들에 대해서 학습한다.

    네트워크프로그래밍 (Network Programming)

    응용 계층에서 사용되는 프로토콜 원리를 학습하고, 클라이언트-서버간의 데이타 전송을 위한 프로토콜 설계 방법을 학습한다. 네트워킹을 위한 프로토콜 메세지를 텍스트 또는 바이너리 기반으로 인코딩/디코딩하는 방법을 학습한다. TCP 소켓 기반 네트워크 프로그래밍과 응용계층 프로토콜을 설계하고 구현할 수 있는 능력을 배양한다.

    보안프로그래밍 (Security Programming)

    소프트웨어 사회가 가속화되는 것과 더불어 정보보호를 통한 안전한 IT서비스가 필수적인 요소가 되고 있다. 따라서, 소프트웨어 전공자들은 반드시 정보보호 개념을 기본적 소양으로 갖추어야 한다. 본 과목에서는 보안 프리티미브 (암호 기술, 암호 응용, 네트워크 보안) 관련 기초 지식 및 프로그래밍 능력에 대해 학습한다.

    인공지능 (Artificial Intelligence)

    인공지능이란 인간의 지능으로 할 수 있는 인지, 사고, 학습 등을 컴퓨터가 할 수 있도록 하는 기술이다. 본 과목에서는 지식의 표현과 추론, 탐색, 기계학습, 딥러닝 등 인공지능의 기본 개념 및 기법에 대하여 다룬다. 또한 인공지능의 핵심 개념과 내용을 탐색과 최적화, 기계학습의 관점에서 살펴보고 관련된 프로젝트를 수행한다.

    데이터베이스 (Database)

    본 강좌는 데이터베이스 시스템에 대한 입문 강좌로서, 주요 강의 내용은 relational data model, SQL, main functions of relational database systems, application development, Entity-Relationship data model, database design 등이다. SQL 언어를 사용하여 데이터베이스 시스템의 주요 기능을 살펴본다.

    운영체제 (Operating Systems)

    운영체제의 구조를 살펴보며, 운영체제에서 제공하는 서비스를 사용하는 능력을 배양한다. 그리고 컴퓨터 시스템을 구성하고 있는 자원들의 존재를 인식하고 이들 자원을 효율적으로 이용하기 위하여 사용할 수 있는 정책과 개념에 대하여 학습한다. 이러한 기본 이론을 기반으로 운영체제 수준에서 발생할 수 있는 문제들을 분석하고 해결하는 능력을 배양한다.

    네트워크보안 (Network Security)

    네트워크 보안에 대한 기본 개념과 응용 능력을 학습한다. 대칭키와 공개키 암호의 기본 개념을 이해하고 이를 응용한 인증, 전자서명 개념을 학습한다. 네트워크 접근 통제 , 전송 보안 , 무선 네트워크 보안 , 이메일 보안 등의 개념을 배우고 실습하며, 악성소프트웨어와 방화벽 , 침입차단시스템 등에 대해 개념을 배우고 관련 도구를 실습한다.

    시큐어코딩 (Secure Coding)

    시큐어 코딩은 프로그램의 잠재적인 보안약점을 제거하여 안전한 소프트웨어를 만들기 위한 개념이다. 본 수업에서 학생들은 보안약점과 시큐어 코딩의 기본 개념에 대해 이해하고, 이를 실제로 SW개발에 적용하여 취약한 코드를 진단하고 제거하기 위한 기법을 학습한다.

    인공지능보안 (Artificial Intelligence Security)

    본 강좌에서는 AI를 활용한 보안, AI 자체의 보안 취약점 및 방어 등 AI와 관련된 보안의 여러 가지 측면을 학습하고, 실습을 통해 직접 사용할 수 있도록 한다.

    데이터베이스보안 (Database Security)

    본 과목은 (i) 데이터베이스 시스템을 어떻게 사용하고 (ii) 데이터베이스 시스템을 안전하게 보호할 것인가라는 두 가지 측면에서 발생하는 문제를 해결하기 위한 도구와 기법에 대해 학습한다. 특히 무결성 규칙, 질의문 작성, 데이터 모델링, 테이블 설계, 권한 및 접근 제어, 뷰, 백업 및 복구, 데이터베스 암호화에 대하여 학습한다.

    시스템보안 (System Security)

    본 과목은 컴파일러, 운영체제, 프로그래머 관점에서 시스템 해킹을 막기 위한 보안 기술에 대한 이해를 목표로 한다. 프로세스 메모리 주소 공간, 세그먼트 보호 기법, 스택 메모리 구조, 함수 호출 규약 등 시스템 보안에 필요한 기초지식을 실습을 통해 학습한다. 기초 리버싱, 쉘코드 작성, 스택 및 힙 버퍼 오브플로우 등 시스템 해킹 기술들을 실습한다.

    악성코드분석 (Malware Analysis)

    본 강의에서는 동적/정적 분석 방법을 이해하고 이를 바탕으로 악성코드를 분석할 수 있는 능력을 함양한다. 또한, 학생들은 안티디버깅 기법을 이해하고 이를 우회하여 분석을 수행할 수 있는 방법들에 대해 학습한다.

    융합보안프로젝트1,2 (Convergence Security Project 1,2)

    이 교과목은 보안 지식을 활용하여 요소, 프로세스, 시스템을 설계하고 구현하는 프로젝트를 수행하는 과목이다. 수강생들은 개인 혹은 팀을 구성하여 지도교수의 지도하에 관심있는 보안을 융합하는 연구 주제를 설정하고, 과제 설계 및 진행 방법, 문제 설계/명세/구현/평가 방법 등 프로젝트 수행 능력을 배양한다.

    정보보호특강1,2 (Special Topics in Information Security 1,2)

    응용 계층에서 사용되는 프로토콜 원리를 학습하고, 클라이언트-서버간의 데이타 전송을 위한 프로토콜 설계 방법을 학습한다. 네트워킹을 위한 프로토콜 메세지를 텍스트 또는 바이너리 기반으로 인코딩/디코딩하는 방법을 학습한다. TCP 소켓 기반 네트워크 프로그래밍과 응용계층 프로토콜을 설계하고 구현할 수 있는 능력을 배양한다.

    현장실습1,2 (Field Training 1,2)

    학생들은 산업체(LGU+등)로 부터 실무능력을 습득할 수 있는 기회를 제공 받는다. 이를 통해 학교에서 배운 전공과목에 대한 이론을 실제 산업현장에서 어떻게 적용하는지를 체험하게 한다.