강의 내용 정리(126)
-
자료구조 (3) 데이터 디자인과 구현
Data design and Implementation 1. 데이터 디자인 1) 자료의 추상화 - 자료의 구현에서 자료 형식의 논리적인 특징을 분리하는 방법 - Logical properties: 흐름도가 만들어져있고, 흐름도를 코드와 유사한 형태로 표현 - Implementation: 실제 코드를 구현하는 부분 2) 자료의 캡슐화 - 의사코드로 작성이 되어있는 부분을 문법적으로 채워넣는 것 - 논리 레벨에서 데이터를 사용하는 것으로부터 데이터의 표현을 분리하는 행위 - 코드 작성은 사람이 사용하는 언어와 가까운 형태로 기술을 하면 내부적으로는 컴퓨터가 다룰 수 있는 언어로 바뀌게 된다. 따라서 코드를 작성하는 우리는 컴퓨터가 어떤 식으로 저장되어있는지를 모두 알 필요는 없다. 이는 캡슐화덕분이다. - ..
2022.03.17 -
자료구조 (2) 소프트웨어 공학 원리
소프트웨어 공학 원리 1. S/W revolution 1) 프로그래밍 초기 단계 - 프로그래밍은 단순한 문제 해결만 가능하고 적은 수의 프로그래머밖에 없었다. 또한 컴퓨터의 큰 비용 문제가 있었다. - 프로그램의 목적은 문제 해결을 위한 방법 및 행위에만 초점을 맞췄다. - 군사용으로 등장했다. 또한 컴퓨터가 과학자들보다 몸값이 높았다. 이에 따라 컴파일 과정을 수작업으로 진행했다. 2) 프로그래밍 과도기 - 프로그래밍은 보다 큰 문제 해결을 위한 것에 목적이 있었지만 역시나 문제 해결을 위한 방법에 초점을 맞췄다. - 타이트한 데드라인에 맞춰 개발 - 대표적인 언어가 c언어임 3) 프로그래밍 현재 - 프로그래밍은 아주 큰 문제 해결에 초점을 맞추고 문제 해결 방법보단 데이터가 더 중요하다. - 항상 가..
2022.03.17 -
소프트웨어 공학 (2) 소프트웨어 공학의 윤리 와 케이스 스터디
소프트웨어 공학 윤리 - 소프트웨어 공학은 단순히 기술을 넘어서 윤리적인 책임과 의무도 이야기함 - 공무원뿐만이 아니라 대부분 회사는 윤리사항은 인사 조항에 명시를 해놓음 -> 이를 지켜야함 Confidentiality - 본인이 개발한 내용을 관련없는 다른 사람들에게 얘기하지 말기 Competence - 본인이 할 수 있는 능력에 대해 정직하게 얘기해야함 지적 재산권 - 특허와 같은 지적재산권을 지켜야함 - 오픈소스와 관련된 라이센스를 지켜서 활용해야함 Computer misuse - 지급받은 컴퓨터, 소프트웨어 등을 업무 이외의 목적으로 사용하지 않기 ACM/IEEE Code of Ethics - 두 학회에서 소프트웨어를 다루는 사람부터 전기를 다루는 엔지니어가 지켜야하는 윤리 사항을 명시해놓음 - ..
2022.03.15 -
컴퓨터 구조 (2) Combinational Logical Circuits and Design
Combinational Logical Circuits and Design 1. Building blocks of modern computers (1) Transistors - 컴퓨터는 매우 간단한 스트럭쳐인 트랜지스터가 매우 많이 들어가있다. ex) 2000년에 판매된 Intel's Pentium IV 마이크로 프로세서는 42milion MOS 트랜지스터가 있었는데 2016년에 판매된 i7은 3.2bilion MOS 트랜지스터가 사용됨 MOS 트랜지스터 - Conductors(Metal), Insulators(Oxide), Semiconductors로 구성되어있음 - 간단한 로직게이트를 MOS 트랜지스터를 사용해 구현할 수 있기에 유명함 - MOS 트랜지스터의 두 가지 유형 * n-type: 특정 vo..
2022.03.15 -
소프트웨어 공학 (1) 서론
소프트웨어 개념 - 개인목적으로 만드는 것이 아닌 돈을 받고 파는 프로페셔널한 소프트웨어는 상업적인 목적을 가지고 있기에 이를 위한 이론 및 방법론을 의미 - 대부분 나라들은 경제의 대부분을 소프트웨어에 의존하고 있음 ex) 배민의 정보 및 라이더 연결 / 네이버 검색 등 - 하드웨어가 로봇으로 바뀌고 이를 통제하는 소프트웨어의 중요성이 점점 증가하고 있음 ex) 창구 -> 키오스크 / 단순업무 -> AI 등 소프트웨어의 비용 증가 - 소프트웨어를 상용적인 목적을 위해 만듦 -> 이러한 측면에서 고려되어야함 - 이에 따라 이는 매우 중요한 모멘텀이 될 수 있음 - 소프트웨어의 비용 유형 (1) 소프트웨어를 구동하기 위한 환경(컴퓨터 등)에 대한 비용 -> 점점 하드웨어보단 소프트웨어의 비용이 증가함(MS..
2022.03.15 -
오픈소스 SW개발 (1), Open Source Software
Open Source Software 1. 오픈소스 소프트웨어 기초 1) 오픈소스 소프트웨어란? 소스코드가 공개되어있는 소프트웨어를 의미한다. 즉 소프트웨어 및 소스코드를 제한해선 안되고 어느 누구라도 확인, 재배포, 수정 및 변경할 수 있는 권한이 있어야한다. 따라서 특정 인물이나 그룹을 차별할 수 없고, 특정 os나 기술 등에 종속되어도 안된다. 한마디로 어떤 제한도 걸어서는 안된다. 오픈 소프트웨어는 비용이 거의 없거나 아주 적게 들 수 있다. 이에 따라 유연하고 퀄리티나 호환성이 좋아지며 초기에는 의존성이 있을 수 있더라도 차차 없어진다는 장점이 있다. 하지만 일반적인 소프트웨어와는 다르게 어느 누군가가 소프트웨어에 대해 보증해주지 않고, 어떤 기업에서 동력을 주는 것이 아니라 확장 범위와 속도가..
2022.03.11