소프트웨어 전공
최근 소프트웨어 분야의 응용 사례는 산업 전반에 걸쳐서 넓은 영역으로 확대되고 있으며,
이에 따라 소프트웨어 전문 인력에 대한 필요성이 커지고 있습니다.
본 전공은 다양한 소프트웨어관련 기술을 학습하는데, 특히 웹서비스, 소프트웨어교육, 블록체인 기술에 특화된 교과목들을 제공하여 기초 능력 함양 후 자신의 적성과 진로에 맞게 특화된 그룹의 교과목을 심화 이수할 수 있습니다.
클라우드 컴퓨팅 및 네트워크 기술 등이 발전함에 따라 대다수의 소프트웨어가 인터넷상에서 연결된 형태의 서비스를 제공하고 있고, 이에 따라 프론트엔드, 백엔드, 풀스택과 같은 전문 인력들의 수요가 급증했습니다. 웹서비스 그룹 교과목은 웹서비스 전반에 걸쳐 필요한 기술을 습득하고, 이를 심화할 수 있게 하며 실세계의 문제를 소프트웨어로 해결할 수 있는 역량을 키울 수 있게 합니다.
소프트웨어는 사회의 모든 영역에서 가장 핵심적인 도구로 자리 잡았으며, 소프트웨어 역량은 어떤 가치의 구현뿐만 아니라, 모든 영역의 지식을 습득하고 응용하는 과정에서도 요구됩니다. 소프트웨어교육 그룹 교과목은 배움의 길에 있는 학생들에게 융합적 사고를 할 수 있게 도와주는 효과적인 방법을 연구하고 창의적인 교육 도구와 콘텐츠를 만들어내는 선도적인 소프트웨어 교육 능력을 함양할 수 있게 합니다.
블록체인은 암호화폐의 기반 기술뿐만이 아니라 4차 산업혁명의 핵심 기술 중 하나로서 금융, 제조, 미디어, 유통, 의료, 공공서비스, 행정 및 정치 등 다양하게 그 응용 분야가 확장되면서 제2의 인터넷으로까지 간주하고 있습니다. 블록체인 그룹 교과목은 급성장하고 있는 블록체인 기술 전반에 대한 기초지식과 심화지식을 제공하며, 블록체인 기술뿐만 아니라 공유와 분산의 사회적 가치를 실현하며 혁신을 주도할 수 있는 능력을 함양할 수 있게 합니다.
파이썬 프로그래밍 언어를 이용하여 기초적인 프로그래밍 스킬을 학습하여 전공과정을 이수하는데 필요한 기초를 다질 수 있도록 한다.
컴퓨터 사이언스의 기초 이론(컴퓨터 구조, 운영체제, 네트워크, 데이터베이스 등)을 학습한다.
빅데이터, 인공지능, 머신러닝, IoT, 모바일, 오픈 소스 등 컴퓨터 시스템 응용 분야의 특징과 발전 방향에 대해 연구한다.
게임을 소재로 하는 응용 프로그래밍 실습을 통하여 사용자 상호작용이 포함되는 프로그래밍 기법을 익히고, 게임에 적용되는 알고리즘을 파이썬 프로그래밍 언어로 구현하여 프로그래밍 기초를 다진다.
OpenAPI, 프레임워크 등을 활용하여 인터넷 응용 프로그램을 작성하는 프로젝트의 수행을 통하여 웹 기반 응용 개발의 기초를 익히고, 간단한 매시업 응용을 개발할 수 있는 역량을 확보한다.
계산적 사고의 핵심인 알고리즘 역량을 높이기 위한 고급 자료구조, 알고리즘을 학습한다. 정보 올림피아드 스타일의 알고리즘 문제를 해결할 수 있다.
웹개발에 필요한 기본적인 기술의 이론을 학습하고 실습을 통해서 웹서비스를 구현해 보는 경험을 할 수 있다.
소프트웨어를 적정 시간과 비용 내에 개발하고 수정하기 위한 프로세스에 대해 학습하고, 다양한 실무 사례를 살펴본다.
문제 해결에 필요한 다양한 자료구조들의 개념 및 사용법과 알고리즘 기술에 필요한 원칙과 기법에 대해 소개하며, 스택(stack), 큐(queue), 정렬(sorting), 검색(searching) 등을 구현하고 분석한다.
팀 프로젝트로 소프트웨어(모바일 앱, 게임, 웹서비스 등) 개발을 수행하여, 협업 능력 및 문제 해결 역량을 증진시킨다.
인공지능 용어, 기술적 기초, 필요성, 작동원리, 인공지능의 한계, 활용사례, 전망 등 인공지능의 기초를 다룸으로써, 기술적인 지식이나 배경이 없는 학생도 이 강좌를 통하여 인공지능 전공 과정을 이수하는데 필요한 기초를 다질 수 있도록 한다.
깨끗한 코드를 작성하기 위한 원칙들과 이를 위해 소프트웨어 내/외부 설계를 위한 방안을 학습한다. 더불어 프로그래밍 실무에서 자주 마추질 수 있는 문제와 이를 해결하기 위해 자주 사용되는 설계 패턴 및 사례를 실습을 통해 학습한다.
이 과목은 우선 컴퓨터 통신과 네트워킹의 기본 개념을 5개의 계층으로 구성된 인터넷을 기반으로 공부하게 된다. 우선 컴퓨터 네트워킹의 개요를 설명하고, 최상위 응용 계층부터 데이터링크 계층까지 위에서 아래로 차례대로 공부한다. 응용 계층 학습 시기에는 실제로 응용 프로그램을 개발할 수 있도록 소켓 프로그래밍을 공부하고, 간단한 실습을 진행한다.
아마존 웹서비스(AWS) 등 클라우드 컴퓨팅 서비스를 활용하여 가상화된 컴퓨팅 환경을 구축하고 이를 이용하여 소프트웨어/서비스를 개발하는 기법과 개발된 소프트웨어/서비스를 배포하는 방법을 익히고 프로젝트를 통한 실습을 수행한다.
논문을 작성하거나 프로젝트를 수행하는데 필요한 기본적인 방법론을 학습하고, 연구 주제 발굴, 자료 수집 , 소프트웨어 구현 및 실험 등 논문 또는 프로젝트 진행에 필요한 연구 활동 계획을 수립하고 수행한다.
졸업학기에 석사학위논문 또는 졸업 프로젝트를 통한 졸업 요건을 만족시킬 수 있도록 논문 작성 및 프로젝트 구현에 필요한 다양한 연구 개발 활동을 과학적 방법론에 따라 진행한다.
데이터베이스(DB)는 대용량의 지식과 정보를 저장하는 장치이다. 데이터베이스는 정보를 추출하고 가공하여 데이터를 분석(Analysis)하고, 시각화(Visualisation)하여 사용자에게 정보와 인사이트를 제공하는 데 사용된다. 데이터는 정형 데이터(가로x세로 형태의 데이터)와 비정형 데이터(NoSQL, 형태가 일정하지 않은 데이터)로 나뉜다. 이 수업에서는 MySQL을 사용하여 정형 데이터를 주로 다룬다. MySQL을 사용하여 정형 데이터를 저장하고, 조건문(query)을 통해 필요한 내용을 가공/추출하며, 클라이언트에게 필요한 정보를 제공하기 위해 데이터를 입력/출력하는 실습을 진행한다. 수업은 DB소프트웨어(MySQL Workbench) 및 간략한 코딩(SQL)을 강사를 따라 입력하며 , 실습하는 방식으로 진행된다. 또한 공공데이터(Public Data)의 활용 방안, 가공을 마친 데이터를 사용자에게 웹 및 모바일로 전달하는 방법에 대해서도 알아본다.
테스트를 기반으로 개발하는 방법을 학습한다. 테스트 주도로 웹서비스를 확장하고 배포하는 실습을 한다.
산업체에서 널리 사용되는 웹서비스 최신 기술에 대해서 이론을 학습하고 실습을 통해서 산업체 전문가 수준의 구현 능력을 개발한다. 또한 공개된 실제 웹서비스 플랫폼을 활용하여 프로젝트를 실시하고 토론한다.
사물 인터넷의 기초 개념(센서, 통신, 보안 등)을 학습하고, 실습을 통해 응용해볼 수 있다.
Problem/Project Based Learning, Flipped Learning, Design Thinking, Gamification 등의 혁신적 교육 방법을 학습하고, 새로운 융합 교육 방법을 고안하고 실현할 수 있는 역량을 강화한다.
수리, 과학 분야를 주제로 하는 소프트웨어융합교육 콘텐츠를 개발하기 위한 과정설계, 제작, 지도 평가 과정에 대한 역량을 증진시킨다.
인문, 사회주제로 하는 소프트웨어 융합 교육 콘텐츠를 개발하기 위한 과정 설계, 제작, 지도 평가 과정에 대한 역량을 증진시킨다.
예술 분야를 주제로 하는 소프트웨어 융합 교육 콘텐츠를 개발하기 위한 과정 설계, 제작, 지도 평가 과정에 대한 역량을 증진시킨다.
교수-학습이론에 대한 체계적 이해를 바탕으로 다양한 교수 및 학습방법을 비교, 분석함으로써 수업의 기획 운영 및 평가능력을 향상시키기 위한 교과목이다. 특히 다양한 교수-학습방법을 적용한 교실 수업의 실제 등 교육현장과 밀접한 관련이 있는 교육방법에 대하여 학습한다.
프로젝트 기반 수업의 본질을 이해하고, 이를 바탕으로 소프트웨어 교육을 설계할 수 있도록 한다.
다양한 주제의 세미나와 특강을 통하여 소프트웨어 교육의 최신동향을 연구하고 분석한다.
블록체인의 개념을 수립하고 블록체인 용어, 기술적 기초, 필요성, 작동원리, 블록체인의 한계, 활용사례, 전망 등 블록체인의 모든 것을 기술, 사회, 경제 등 360도 각도에서 조망해본다.
블록체인 응용앱(DApp)의 개발요소 및 필요지식에 대하여 학습하고, 블록체인 응용앱 (DApp) 개발 실습을 진행한다. 개발 플랫폼은 Ethereum, EOS, HyperLedger를 사용한다.
블록체인플랫폼을 구성하는 다양한 요소 기술(리눅스 운영체제, 컴퓨터 네트워킹, 암호화 및 정보보안, Peer to Peer 시스템 등)에 대한 기반 지식을 제공하고, 이를 바탕으로 블록체인 플랫폼 종류별로 대표적인 플랫폼들(비트코인, 이더리움, EOS, 하이퍼레저 플랫폼 등)의 특성을 살펴보고 실습을 진행한다.
사용자 응용을 개발하는데 필수적인 모바일 응용을 개발하는 이론을 학습하고, 실제 모바일 앱 개발 도구를 활용하여 앱 개발 실습을 진행한다. 기존에 서비스가 되고 있는 다양한 앱의 특성을 분석하고, 이를 수업시간에 토론하여 성공적인 앱을 개발할 수 있는 여러 요소를 파악한다.
게임 산업의 동향 및 PC, 모바일 게임 현황을 이해하고 게임 소프트웨어관련 기본 지식을 학습한다. 이를 바탕으로 게임 소프트웨어 개발을 위한 환경 구축과 유니티 기본 기능을 학습하고 실습을 진행한다.
오픈소스 소프트웨어의 기술적, 문화적 의미와, 지적 재산권에 대한 이해를 바탕으로 오픈소스 소프트웨어 라이선스, 라이선스 준법성을 확보하기 위한 거버넌스 체계와 검증 도구 등을 배운다. 수업은 각 세부 분야의 전문가를 초청하여 오픈소스와 연관된 저작권, 정책적 거버넌스, 라이선스의 법적인 쟁점에 대한 이론과 실제 산업에서의 분쟁 사례를 분석하는 것으로 진행된다. 또 오픈소스를 활용하고, 공개함에 있어 소프트웨어에 적용된 각각의 라이선스가 정하는 권한과 책임을 다하기 위한 준법성 검증 도구 가운데 대표적인 것들을 실습으로 익혀 현업에서 필요한 스킬을 배운다.
컴퓨터 하드웨어를 관리하며, 프로그램 실행을 제어하는 컴퓨터 시스템의 핵심인 운영체제의 개념에 대하여 학습한다. 병행성, 시스템 보호, 장치 관리 등 컴퓨터 운영체제의 전반적인 설계와 구현에 대해 학습하고, 운영체제를 활용하기 위한 다양한 기법들과 성능 평가를 위한 여러 이론들을 살펴본다.
컴퓨터 그래픽스는 기하학적으로 정의되거나 계산 결과로 생성된 다양한 모델에 대한 물리학적 법칙과 수학적 변환 기법을 이용하여 2차원 및 3차원 영상을 생성하는 기술로 모델링, 애니메이션, 렌더링 분야 전반에 대한 기본 이론을 다루고, 이에 대한 다양한 구현 방식을 실현하여 본다.