패턴 인식은 컴퓨팅 사고 4가지 구성 요소 중 하나입니다.

 

 

컴퓨팅 사고(Computational Thinking)의 4가지 구성요소

1. 분해(Decomposing)   2. 추상화(Abstraction)   3. 패턴인식(Pattern recognition)   4. 알고리즘(Algorithms)

 

 

 

 

 

패턴인식이란

주어진 문제를 분해하기 위한 혹은 분해된 문제들의 유사성을 찾기 위한 과정.

유사한 문제들은 동일한 해결책 적용이 가능합니다.

 

완벽하게 동일한 모양의 공ㅌ통점을 파악하는 것도 중요하지만,

어느 정도 비슷한 모양의 공통점을 파악하는 것이 더 중요.

 

'유사한 패턴을 어느 범주까지 같은 패턴으로 인식할 것인가'

 

 

 


개인적으로 패턴인식은 정말 중요하다고 생각합니다.

일상에서 패턴을 인식하는 능력이 있으면 그것을 통해 서비스를 만들 수 있기 때문입니다.

 

예시로 매일 똑같은 루트의 대중교통을 이용하는 것도 하나의 패턴입니다.

이런 패턴을 빠르게 인식하고 편리한 서비스로 만들어서 이익을 창출하고 있습니다.

 

 

 

 

반응형

컴퓨팅 사고는 컴퓨터가 사고하는 방법을 우리가 새로 배우는 것이 아닙니다.

과거에 인간들은 문제 해결을 위해 컴퓨팅 사고를 사용하고 있었습니다.

 

 

컴퓨팅 사고라는 용어는 카네기 멜론 대학의 자넷 윙(Jeannette M.Wing) 교수가 정의했습니다.

자넷 윙 교수는 2006년 '컴퓨팅 사고'가 현대인이 갖춰야 할 핵심 역량이라고 소개했습니다.

 

 

 

 

 

컴퓨팅 사고(Computational Thinking)의 4가지 구성요소

1. 분해(Decomposing)   2. 추상화(Abstraction)   3. 패턴인식(Pattern recognition)   4. 알고리즘(Algorithms)

 

 

 

 

오늘은 위의 4가지 요소 중 분해를 다뤄보려고 합니다.

 

 

 

 

 

분해

분해란 말 그대로 복잡한 문제를 풀기 쉬운 단위로 잘게 나누는 것입니다.

단순히 잘게 나누는 게 아니라 해결하기 쉬운 단위로 변형하는 데 있습니다.

 

분해를 안 해도 쉬운 문제이면, 굳이 안 해도 됩니다.

 

다양한 분해 방법들이 곳곳에서 사용되고 있습니다.

 

 

 

 

 

 

 

 

첫 번째, 문제 진행 순서에 따라서 분해(절차 분해)

 

절차 분해는 앞 단계가 완료되면 다음 단계로 넘어가는 형식으로 진행됩니다.

앞 단계의 결과물이 다음 단계에 중요한 자원으로 사용됩니다.

그래서 앞 단계를 건너뛰고 진행하면 문제가 생길 수 있습니다.

 

절차 분해는 장난감을 조립하거나 분해할 때 사용될 수 있습니다.

올바른 절차를 따르지 않으면 장난감이 고장 날 수 있습니다.

 

 

 

 

 

 

두 번째, 문제의 단위를 소분류로 분해

 

소분류로 분해는 일의 분업화로 이해하면 쉽습니다.

 

예를 들어 휴대폰을 만든다고 하면 조립은 순서를 지켜야 합니다.

하지만 부품을 생산하는 과정은 소분류로 나눠도 문제가 없습니다.

그 이유는 분류를 나눠도 시간적으로 서로 종속되어 있지 않기 때문입니다.

 

이런 방식은 일을 더욱 효율적으로 만들어 주게 됩니다.

 

공장에서는 소 분류된 부품이 동일한 시간에 생산되는 걸 중요시 생각합니다.

그래야 부품을 동시에 조립 하는 생산라인을 만들 수 있기 때문입니다.

 

 

 

 

 

 

 

세 번째, 문제를 뭉쳐서 해결

 

문제의 분해는 엄밀히 말하면 문제를 해결 가능한 형태로 변형하는 것입니다.

해결하기 적절한 단위로 만든다고 이해하는 것이 좋을 것입니다.

 

세 번째 방법은 프로그래밍에서 함수 기법에서 많이 적용하는 방식입니다.

클래스와 객체라는 개념이 있습니다.

 

자바와 같은 객체 지향 프로그래밍 언어에서 많이 사용하는 개념입니다.

 

 

 


분해의 과정은 단순히 나누는 과정으로 보기 어렵습니다.

자료를 분석하고 논리적으로 조직화하는 과정이라고 보시는 게 좋습니다.

 

 

 

 

 

 

* 참고 도서

- 논리적 문제 해결을 위한 컴퓨팅 사고 (저자 김두진)

반응형

SNS, 게임, 알코올 외에도 수많은 중독이 있습니다.

 

그중 유튜브 중독이라는 것이 새로운 문제가 되고 있습니다.

유튜브(YouTube)에서 영상을 한번 보기 시작하면 계속 보게 되는 것이 문제입니다.

 

유튜브의 시스템을 보면 끊임없이 새로운 영상들을 추천해 줍니다.

사용자가 자주 보는 영상 데이터를 바탕으로 비슷한 영상을 추천합니다.

 

 

유튜브 중독을 벗어나기 위해서는 아예 사이트를 차단하는 방법이 있습니다.

하지만 유익한 영상도 많기 때문에 거기서 얻는 이득을 쉽게 차 버리게 되는 것입니다.

 

 

여기서 제가 발견한 가장 좋은 방법이 있습니다.

 

그것은 바로 DF Tube라는 크롬 확장 프로그램입니다.

 

DF Tube 링크 바로가기

* 위 프로그램은 크롬 브라우저에서만 지원됩니다.

 

 

<적용 전>

평범한 유튜브 메인 화면입니다.

 

 

 

 

 

<적용 후>

 

처음 유튜브에 들어가면 나오는 피드 영역을 지워버렸습니다.

이 외에도 다양한 기능들이 있습니다.

 

 

 

 

 

 

 

 

설치 후 브라우저 우측 상단 확장프로그램 아이콘을 통해 설정 할 수 있습니다.

(사진 빨간 동그라미 속 좌측 아이콘[DF Tube], 우측 아이콘[확장 프로그램])

 

 

 

 

 

 

 

 

 

반응형

 

컴퓨팅 사고의 4대 핵심 개념

 

 

 

 

 

1. 분해(Decompostion)

 

문제를 잘게 나누어 문제를 해결하는 것입니다.

엄두가 안 날 정도로 큰 문제는 "분해"의 방법을 사용합니다.

 

"분해"는 우리가 목표를 달성하기 위해 잘게 나눌 때도 사용하고 있습니다.

공장에서도 물건을 만들 때 부품을 하나씩 나눠서 각 파트에 맞게 만들 때도 사용됩니다.

 

 

 

 

 

 

 

2. 패턴인식(Pattern Recognition)

 

유사한 문제 해결 유형을 모아서 이것을 공식화하는 것을 말합니다.

프로그래밍에서는 함수(Function)를 만드는 것과 같습니다.

 

비슷한 문제가 발생 시 유사한 문제 해결 방법을 적용합니다.

이런 패턴인식 해결 방법을 많이 가지고 있으면 문제를 좀 더 쉽게 해결할 수 있습니다.

 

경험이 많은 숙련자가 문제를 빠르고 쉽게 해결하는 것 과 비슷합니다.

 

 

 

 

 

 

 

 

3. 추상화(Abstraction)

 

단순화라고도 불리고 있습니다.

사용자가 전체 시스템을 이해하지 못해도 지장이 없도록 해줍니다.

 

우리가 자동차의 세부적인 작동원리를 몰라도 기능을 사용 가능 한 것과 같습니다.

좌회전, 우회전 등 기능이 어떻게 작동되는지 몰라도 조작이 가능합니다.

 

이런 추상화는 사용자를 위한 서비스에 따라 형태와 내용이 달라 질 수 있습니다.

 

 

 

 

 

 

4. 알고리즘(Algorithms)

 

알고리즘은 문제 해결을 위한 공식 또는 절차를 의미합니다.

잘게 분해해 놓은 문제들의 해결책을 엮어서 전체의 해결책을 만듭니다.

 

입체 도형을 만들기 위해 점을 이어나가 면을 만들고, 면을 연결해 만드는 것과 같습니다.

 

처음에는 작은 알고리즘을 구성하고, 마지막에는 자동차를 만드는 전체 알고리즘을 만들게 되는 것입니다.

 

 

 

 

 

 

* 참고 도서

- 논리적 문제 해결을 위한 컴퓨팅 사고 (저자 김두진)

반응형

 

 

 

컴퓨팅 사고란?

 

컴퓨팅 사고는 컴퓨터가 만들어낸 사고방법이 아닙니다.

오래전부터 수 많은 사람들이 어려운 문제를 해결하기 위한 방법이였습니다.

 

과학자들이 이런 문제해결 방법을 컴퓨터에 이식시킨 것 입니다.

 

 

 

 

 

 

 

컴퓨터 사고는 이미 사용하고 있다.

 

컴퓨팅 사고는 우리 일상생활에서 수 없이 사용되고 있습니다.

예로 퇴근, 하교길을 갈 때도 우리는 효율적인 길을 생각하고 찾습니다.

 

컴퓨터가 있기 전부터 인간의 삶에는 수 많은 문제들이 발생했습니다.

그것을 해결하기 위해 다양한 방법들을 생각했습니다.

 

요즘은 컴퓨터가 데이터를 수집해서 문제를 해결하는데 도움을 주고 있습니다.

 

집에 가는 효율적인 길도 "네비게이션"이라는 기능을 통해 해결방안을 제시합니다.

 

 

 

 

 

 

사람의 사고와 컴퓨터 사고의 차이

 

사람은 경험이라는 데이터를 근거로 문제를 해결합니다.

하지만 경험은 지속적인 시간과 노력이 필요합니다.

 

컴퓨터는 데이터만 축적 되어 있으면 쉽게 활용이 가능합니다.

 

사람의 경험에 의한 데이터는 감정에 쉽게 영향을 받을 수 있습니다.

주관적인 생각이 들어가 있을 수 있습니다.

 

반대로 컴퓨터는 상당히 객관적인 데이터입니다.

객관적인 데이터는 기업에서 선호합니다.

 

기업의 성장을 위해서는 주관적인 데이터가 아닌 객관적인 데이터가 필요하기 때문입니다.

이런 이유에서 컴퓨팅 사고는 상당히 큰 발전을 이루고 있습니다.

 

 

 

 

 

 

 

 

 

컴퓨팅 사고를 효과적으로 사용

컴퓨팅 사고는 방식에 불과합니다.

결정은 결국 사람이 내립니다.

 

우리는 컴퓨팅 사고를 도구로 잘 활용해야 합니다.

컴퓨터가 축적한 데이터를 바탕으로 효율적인 결과를 도출하는 것 입니다.

 

 

 

 

* 참고 도서

- 논리적 문제 해결을 위한 컴퓨팅 사고 (저자 김두진)

반응형

HTML을 무료로 가르쳐 주는 사이트 및 강의가 상당히 많습니다.

 

 

antstudy.tistory.com/13?category=806979

 

HTML을 무료로 배울 수 있는 사이트 및 강의

요즘 다양한 사이트에서 HTML을 무료로 배울 수가 있습니다. 무료라고해서 저품질의 강의가 아닌, 현업에서 종사 하거나 했던 분들이 강의를 올립니다. 생활코딩(클릭 시 링크로 이동) "생활코딩"

antstudy.tistory.com

 

 

 

 

하지만 배우기만 하고 아무것도 하지 않으면 자신의 것으로 만들 수가 없습니다.

그래서 배운 후 바로 실습을 해보는 것이 정말 중요합니다.

 

그런데 초보자들이 직접 실습을 하는건 쉽지가 않습니다.

 

단순히 연습 사이트에서 타이핑을 하고 결과를 보는건 꾸준히 하는게 힘듭니다.

 

 

이런 문제를 해결 할 방법은 바로

"티스토리 블로그 글 쓰기"

입니다.

 

 

 

티스토리 블로그 글쓰기 영역

 

위의 빨간 네모칸을 보면 HTML을 활용해 블로그 글을 쓰는 공간이 있습니다.

HTML 모드로 바꿔서 글을 쓰면서 직접 연습을 할 수 있습니다.

 

가장 좋은점은 내가 원하는 주제로 글을 쓰면서 연습 할 수 있다는 것 입니다.

 

원하는 주제로 글을 쓰기 때문에 꾸준히 연습을 하는데 부담감을 덜게 됩니다.

반응형

요즘 다양한 사이트에서 HTML을 무료로 배울 수가 있습니다.

 

무료라고해서 저품질의 강의가 아닌, 현업에서 종사 하거나 했던 분들이 강의를 올립니다.

 

 

 

생활코딩(클릭 시 링크로 이동)

 

"생활코딩"은 모든 강의가 무료로 되어 있습니다.
단계별로 강의가 잘 나눠져 있고, 초보자도 쉽게 이해할 수 있게 만들었습니다.

위 사이트에는 HTML강의 외에도 CSS, 자바스크립트, 데이터베이스 등 다양한 강의가 있습니다.

 

 

 

TCP school(클릭 시 링크로 이동)

 

아무래도 강의로 공부를 하면 시간이 더 들어가는 경향이 있습니다.
위 사이트는 텍스트로 HTML을 배울 수 있습니다.

빠르게 읽어보고 필요한 부분만 실습을 하면서 배우기 좋은 사이트입니다.

반응형

HTML은 Hyper Text Mark up Language의 약자입니다.

축약된 문장을 풀어보면 의미를 쉽게 알 수 있습니다.

 

 

 

 

*하이퍼 텍스트(Hyper Text)

참조(하이퍼링크)를 통해 한 문서에서 다른 문서로 즉시 접근 할 수 있는 텍스트입니다.

여기서 하이퍼(Hyper)란 건너 편의, 초월이라는 의미를 가지고 있습니다.

 

 

 

 

* 마크업 언어(Mark up Language)

태그 등을 이용하여 문서나 데이터의 구조를 표시하는 언어의 한가지

 

즉 클릭 했을 때 다른 사이트로 넘어갈 수 있는 링크(하이퍼텍스트)의 구조를 표시하는 언어입니다.

 

HTML은 다양한 태그들로 블록을 쌓아 웹페이지를 구성하는 형태입니다.

 

 

HTML은 CSS나 JavaScript을 배우기 전에 필수로 배워야 하는 언어입니다.

HTML이 기본 바탕을 그려주는 것이기 때문입니다.

반응형

코딩을 공부하면서 느낀점이 하나 있습니다.

 

코딩을 하면서 오타로 인해 꽤나 고통을 받는다는 것 입니다.

 

그래서 오타를 줄이기 위해 타자연습을 하게 되었습니다.

 

구글링을 하다가 무료로 연습 가능한 사이트 2개를 발견해서 소개해 드릴려고 합니다.

 

 

 

 


TypingClub(클릭시 링크로 이동)

 

위 사이트는 키보드 버튼을 누르는 손가락부터 알려주는 기초적인 사이트입니다.
저는 실제로 타이핑하면서 거의 검지만 사용하는 흔히 말하는 독수리 타법인걸 알았습니다.

타이핑 연습이 지루하지 않게 여러 시각적인 효과와 게임을 넣어놨습니다.
회원가입을 하면 내가 타이핑 한 것을 데이터로 보여줍니다.(굳이 안해도 연습에 문제는 없다고 봅니다.)

 

 

 

 

 

 

 

typing.io(클릭시 링크로 이동)

 

위 사이트는 프로그래머를 위해서 만들어진 타이핑 연습 사이트입니다.
자신이 주로 사용하는 프로그래밍 언어에 맞게 타이핑 연습을 할 수 있습니다.

프로그래밍 언어에서 주로 사용하는 키워드를 위주로 연습하게 됩니다.

 

반응형

세상에는 다양한 컴퓨터 언어들이 있습니다.

ex) C, C++, C#, Java, 파이썬 등

 

이러한 언어들을 크게 객체지향 프로그래밍, 절차지향 프로그래밍으로 나눌 수 있습니다.

 

 

 

 

 

절차지향 프로그래밍의 구조

 

 

◎ 절차지향 프로그래밍이란?

(Procedure Oriented Programming, POP)

 

말그대로 절차, 순차적인 처리를 중요시 되는 프로그래밍입니다.

물이 높은곳에서 아래로 흐르는 강물처럼 유기적으로 연결되도록 만드는 프로그래밍 기법입니다.

 

 

 

절차 지향 프로그래밍 언어

 

 

장점

▶ 컴퓨터 작업 처리 방식과 유사해 실행속도가 빠르다.

단점

▶ 유지보수가 어렵다.

정해진 순서가 바뀌면 동일한 결과를 보장받기 어렵다.

변하는 현실세계와 사용자의 요구에 유연하게 대처하지 못한다

 디버깅이 어렵다.

 

 

 

 

 

 

 

객체지향 프로그래밍 언어

 

◎ 객체지향 프로그래밍이란?

(Object Oriented Programming OOP)

 

'현실 세계를 프로그래밍 세계로 옮겨 놓는 행위'

이런 기능을 다른 말로 "모델링"이라고도 합니다.

현실 세계의 업무를 프로그램화 시키는데 도움을 줍니다.

 

 

컴퓨터 프로그래밍의 한가지 기법으로 객체를 만들고,

객체를 사용하는 프로그래밍 방법이라고 할 수있습니다.

 

 

 

 

 

객체지향 프로그래밍의 구성요소들

 

 

객체지향 프로그래밍의 기본 구성 요소

 

▶ 클래스(Class)

같은 종류의 집단에 속하는 속성과 행위를 정의한 것입니다.

객체, 컨트롤, 컴포넌트 등을 만들어내는 설계도

 

 

▶ 객체(Object)

현실 세계에서 어떤 특징(속성)을 가지며 어떤 동작(메서드)을 수행할 수 있는 단위 하나를 개체로 표현 가능합니다.

 

자동차 설계도(클래스) -> 조립(인스턴스화) -> 자동차(객체, Object)

 

객체를 만들어 내는 설계도(클래스), 이 클래스에서 조립된 물건 하나가 바로 객체입니다.

* 클래스는 대문자로 시작하고, 객체는 소문자로 시작하는게 기본 원칙

 

 

▶ 메서드(Method)

메서드는 클래스의 기능과 동작을 나타내는 가장 많이 사용하는 구성요소입니다.

자동차로 예를 들면, 전진(), 후진(), 좌회전() 같은 동작을 나타냅니다.

 

장점

잘 설계된 클래스를 만들어 라이브러리로 재사용해 생산성 향상.

▶ 수정해야할 부분이 클래스 내부에 멤버 변수 혹은
    메서드로 존재하기 때문에 유지보수가 용이하다.

객체단위로 모듈화시켜 개발할 수 있어, 여러명이 투입되는 
   대형프로젝트에서 업무분담에 용이하다.

단점

▶ 객체가 많아지면 용량이 커진다.

설계 시 많은 시간이 소요 될 수 있다.

처리속도가 상대적으로 느리다.

 

 

 

 

객체지향 프로그래밍의 특징

 

▶ 캡슐화 (Encapsulation)

 

객체의 속성(Data fields)과 행위(Method)를 하나로 묶고, 실제 구현 내용 일부를 외부에 감추어은닉.

 

캡슐화는 구조화된 데이터 개체 값 또는 상태를 숨겨 권한이 없으면 접근하지 못하도록 차단합니다.

 

캡슐화의 또 다른 의미는 연관된 자료 구조와 메서드(함수)를 한 테두리로 묶는 것입니다.

 

 

 

 

▶ 추상화 (Abstract)

 

자료 추상화는 불필요한 정보는 숨기고 중요한 정보만을 표현함으로써 프로그램을 간단히 만드는 것

실제로 존재하는 객체들을 프로그램으로 만들기 위한 공통적인 특성을

파악해서 필요없는 특성을 제거하는 과정.

 

 

▶ 다형성 (Polymorphism)

 

특정 클래스의 메서드는 매개변수에 따라 여러 가지 다양한 형태일 수 있습니다.

한 객체가 다른 여러형태(객체)로 재구성 되는 것을 말합니다.

 

즉, 이러한 클래스의 특징을 다형성이라고 합니다.

 

 

 

▶ 상속 (inheritance)

부모 클래스의 멤버를 자식 클래스에서 재사용하는 개념을 상속이라고 합니다.

 

 

 

 

 

 

※ 참고자료(Reference)

▷ <C#교과서> 박용준 저서(길벗출판사)

radait.tistory.com/4

ko.wikipedia.org/wiki/%EA%B0%9D%EC%B2%B4_%EC%A7%80%ED%96%A5_%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D    (위키백과)

 www.learnqtp.com/tutorial-class-object-properties-methods-uft/

www.ajonit.com/

반응형

+ Recent posts