컴공생이 중요한 과목이 무엇인가요?

ltt2844의 이미지

안녕하세요 오랜만입니다.

언제나 여러분들께 감사함을 느끼고 있습니다.

제가 궁금증이 많아서 질문을 많이 하는데 친절하게 답변 해주시는 분들께 너무 감사합니다.

이번에도 궁금증이 생겨서 질문을 했습니다 ㅎㅎ

제가 전문대 2학년(저희 컴공과 3년제입니다.)입니다.

그러다가 저희 숭실대 외래교수님 께서 오셔서 수업을 가르쳐 주시는데

수업을 진행 하시다가 학생들한테 물어보시는데 저희 학생들이 그 질문에 답변을 못해서

답답해 하시고, 저희가 공부를 열심히 해야 된다고 강조를 많이 해주십니다. 기초가 너무 없다고 말씀해 주십니다,

저도 틀린말이 아니라고 생각합니다 . 저도 기초가 부족하는 겅에 동의를 해서 질문을 해봤습니다.

하지만 교수님께서는 스스로 찾아보라고 하십니다.

제가 그래서 생각을 해보니까 분명 4년제에서는 4년동안 중요시 하고 대학교에서 컴공생한테 꼭 이걸 기초부터 튼튼히

가르치는 과목이 있을 꺼라고. 판단했습니다.

그리고 전문대인 3년제는 일단 취업을 목적이다보니까 실습적인 코딩 적인 부분을 중요시 해서 많이 가르치는 것이라고

판단했습니다.

그렇지만 저는 코딩적인 부분 보다는 기초를 튼튼히 공부를 해서 훌륭한 개발자가 되고 싶습니다.

또한 저도 나중에 목표가 교수를 하고 있습니다. 그러다보니까 지금 교수님이 말씀하시는

기초 부족 하다고 말씀 하실때 저는 분해서 더 열심히 공부 해야겠다고 생각해서

카페 스터디도 2개(c언어/자바 스터디) 를 하고 있고 리눅스 내부 커널도 하려고 하구요

다양하게 공부 하고 있는데...

정작 진짜 중요한걸 구분이 안가니까 우선순위를 정하지 못하는 것 같아서

여러 계신 뛰어나신 분들의 조언을 듣고자 질문 글을 써봤습니다.

여러분이 생각 하시는 컴공생한테 중요한 과목이고 이것만은 정말 잘해야 된다고 생각 하시는 과목이

무엇인가요?

저는 비록 대학교가 전문대지만 제가 스스로 열심히 공부한다면 서울대, 카이스트 같은 학생 처럼 지식을 가질수 있다고

생각합니다(물론 정말 어렵겠지만요)

그래서 절말 노력 하는데 우선순위를 정확하지 않아서 걱정입니다.

선배님들께서 말씀해주시면서 이유도 알려주신다면 그걸 열심히 공부 하겠습니디x

개성만점의 이미지

[먼저 , 답변을 위한 댓글은 아니라는 말씀 미리 말씀드립니다]

저역시 비전공자라 그 고민을 많이했는데.. 그건 어떤개발자가 되냐에 따라 다른것같습니다 ㅜ.ㅜ
(일단 저도 공부하는입장이라 명확한 대답은 못드리지만 추가적인 질문을 달아서 저도 ㅜ_ㅜ 함께 얻고싶은마음에..)

저같은경우 게임개발자가 되고싶은데 일단 씨언어부터 시작하고 컴공과 학생들 커리큘럼보면서 하나씩 공부하려 계획잡았습니다.
(게임개발자 되려면 게임개발에 당장 도움되는것들 우선적으로 공부하는게 맞겠지만 컴공과학생들 기초를 조금씩이라도 병행하면 도움이 될 것 같아서요.)
컴공과 학생들이 4년동안 배우는것들 순서대로 접하려합니다. 그 중에서도 우선적인게 있을순 있겠지만.. (그것 이상은 저도 아직은 잘 모르겠습니다)
그래도 제가 알기론 프로그래머는 프로그래밍이 결국 실력같습니다.
모든것들은 뒷받침같아요.. 주객전도가 안되는게 중요한거같습니다 . 글쓴님이랑 생각이 비슷해요.
코딩을위한 공부인거지, 다른 지식을위한 공부는 아닌거같아요 ㅠㅠ.

c언어부터 하려니 너무 이해가안되서 어쩔수없이 전공공부를 완전히는 못해도 기초적인걸 찾게 되더라구요
( 저같은경우 방통대 서점에서 기본적인 전공책을 구입했습니다. 컴퓨터구조, 프로그래밍언어, 자료구조 등등)

아무튼 글쓴이님도 고민이 많으신것같은데 열심히노력하셔서 꿈 이루시길 바랍니다!^^
저도 비전공자라 이것저것 모르는게많아서 여기저기 많이 찾아봤습니다~ㅎㅎ 응원하겠습니다~

(ㅜ.ㅜ 개운한 답변이아니라서 죄송하지만 힘내세요^^)

ltt2844의 이미지


정말 노력을 많이 하시네요

전공인 저도 힘든데 대단하십니다.

저도 많은 정보를 접하고 정리 되면 알려드리도록 하겠습니다.

vagabond20의 이미지

어떤 트랙으로 갈것인가에 따라 중요한 과목은 다를겁니다.
프로그래머/개발자로 갈것인지, 학자(교수) 쪽으로 갈것인지..

개발자쪽으로 갈 경우, 사실 몇몇 비 프로그래밍언어 과목 (예를 들어 알고리즘, 이산수학, 선형대수, 등) 은 직접적으로는 중요하지 않습니다. 하지만 그러한 과목을 공부하면서 문제를 해결하는 방법이 훈련되는 효과는 충분히 있습니다. 중요하다고 생각하는 과목은 (제 생각입니다) 운영체제, 자료구조, 시스템 프로그래밍, 데이타통신, 아키텍쳐, 컴파일러 같은 과목들입니다.

의욕이 넘치는 모습이 보기 좋습니다.

질문 글 올리신것을 읽어보면 좀 아쉽다 싶은 점은 - 글 쓰신것을 스스로 천천히 한번 읽어보시고 다른이들은 비슷한 내용을 어떻게 쓰는지 눈여겨 보십시오.

컴공과를 나오더라도 컴공에만 국한하게 되면 개발자라기 보다 '기능인' 에 머물게 됩니다. 글도 잘 쓸 줄 알아야 좋은 개발자가 됩니다. 4 년제 대학교 1학년때 듣는 교양 국어가 많은 역할을 한다고 생각은 하지 않지만, 어느정도 정돈된 글쓰기를 할 수 있게 지침을 전달하려 한것 같습니다. 혹은 스스로 신문을 찾아 읽거나 잘 쓰여진 글을 자주 읽고 이해하는 습관을 갖다보면 글 쓰는 수준도 많이 향상될것입니다.

열심히 하십시오.

여의도자바

ltt2844의 이미지

저도 글쓰는 부분에서 많이 부족함을 느껴서 스스로 고치려고 하는데 쉽지 않네요

신문이나 책을 자주 접하겠습니다.

그리고 말씀해주신 중요하다고 생각 하시는 과목을 보니까 제가 생각한 부분이 많이 겹치는 부분이 있네요

운영체제 과목은 리눅스를 공부 하려고 합니다.(맞는건지 모르겠지만요)

데이타통신은 TCP/IP 를 말씀하시는건가요? 아님 정보통신개론 같은건가요?

아키텍처랑 컴파일은 아직 모르겠습니다 학교 수업 과목으로 없어서 아직 접하지 못했습니다.

분야는 보안쪽이나 임베디드 개발자 두 개 중에 고민이지만 대도록이면 보안쪽으로 가고 싶습니다.

나중에는 교수를 생각 하고 있습니다

vagabond20의 이미지

먼저, 리눅스는 여러 운영체제들중 하나일뿐입니다. 운영체제 과목은, 운영체제가 컴퓨터 사용자와 컴퓨터 구성요소 하드웨어들간에 어떻게 작동하는가를 깊이있게 보여줍니다. 즉, 리눅스라는 특정 OS 를 공부하는것이 운영체제 과목 자체를 공부하는것이라고는 할 수 없습니다.

데이타통신은 TCP/IP 를 비롯한 여러 다른 데이타 통신 프로토콜도 소개하고 그것들이 어떻게 작동하는가와, 네트워크에 관한 전반적인 지식을 전달하고자 합니다.

아키텍쳐는 전자계산학 전공자라면 필수로 들어야 하는 과목으로 컴퓨터의 구조, 기본적인 논리회로, 최 하위레벨에서의 논리회로 작동원리를 다룹니다. 보통 중간고사나 프로젝트 등으로 특정한 소규모 프로세서를 종이위에 그려내게 해서 논리회로가 어떻게 작동하는지에 대한 이해를 측정하기도 합니다. AND, OR, NAND, Exclusive OR, NOT, 플립플롭, 등이 하나의 구성단위가 되고 이를 조합해서 메모리나 프로세서를 만들게 되지요.

컴파일러 과목은 - 우리가 gcc, c, cpp 등 컴파일러를 돌려서 작성한 코드를 기계가 이해하는 코드로 변환시키는데, 과연 이 프로그램들 (컴파일러 역시 프로그램입니다) 은 어떻게 인간이 작성한 코드를 기계어로 바꾸는지 공부하는 과목입니다. 자바 역시 고슬링이라는 사람이 컴파일러 이론을 바탕으로 만들어 낸 컴퓨터 언어입니다.

그밖에 제가 미처 언급하지 못한 다른 여러 중요한 과목들이 있을겁니다.

교수가 되고 싶다면 개발자쪽 트랙으로 가는것보다 바로 대학원을 가서 공부를 심도있게 더 해야 할것입니다. 물론 강사수준의 교육자는 그만큼의 학문탐구가 필요한지 모르겠으나, 사람들이 생각하는 '대학교수' 란 그 분야에서 공부를 깊이있게 하고 연구해서 권위자 레벨 정도로 올라서야 학위 (석사 -> 박사) 를 받을 수 있고, 그러기 위해서는 아주 오랜기간 공부를 하셔야 할것입니다.

저 역시 그냥 개발자인데, 일단 개발자쪽으로 오면 프로그래밍과 소프트웨어 개발, 소프트웨어 엔지니어링쪽으로만 자꾸 가게 될 뿐, 위에서 이야기한 이론과목들은 저절로 등한시 하게 되고 점점 더 멀어집니다. 하루 24 시간 공부만 할 수 있다면 가능하겠으나, 인간은 기계가 아니라 휴식이 필요하고, 휴식을 취할때는 회사의 업무나 컴퓨터와 관련한 모든것에서 되도록 벗어나고 싶어지지요.

그리고 참, 제가 수학관련 과목들 (이산수학, 선형대수 등) 을 덜 중요한것으로 썼는데, 이 또한 머릿속으로 여러가지 복잡한 로직을 훈련하는데 많은 도움을 줄것입니다. 미적분을 4 년제 대학 1 학년때 교양필수로 들었던것 같은데, 이는 자료구조에서 소프트웨어 퍼포먼스 측정을 하고 비교하는데 기본적인 바탕을 만들어 줍니다. 그리고, 수학은 재미있는 과목입니다. 수학을 잘 하는 사람은 컴퓨터 프로그래밍도 잘하는 경향이 강합니다. 논리적이기 때문이지요.

여의도자바

ltt2844의 이미지

답변 감사합니다.

그렇군요 정리가 되네요

우석 현재는 자료구조, 알고리즘, 컴퓨터 구조, 운영체제를 배울까 합니다.

현재 자료구조는 열혈강의 자료구조를 배고 있는데 컴퓨터 구조는 뭘 봐야 되나요?

운영체제를 바로 하기 보다는 우선 컴퓨터 구조를 알고 공부를 해야 될것 같아서 입니다.

알고리즘은 유명 서적이 있는데 컴퓨터 구조는 기초부터 잘 설명된 책이 있나 찾아보는데 다 원서라서 고민입니다.

본역본으로 잘 설명된 책 뭐 없을까요?

vagabond20의 이미지

한번 직접 찾아보십시오. Morris Mano 책이 아주 오래전부터 이 과목의 바이블이라 할 정도로 유명한데 아마 번역본도 있을겁니다.
*
교수까지 생각하신다기에 - 가능하면 원서로 공부하는 버릇을 들여야 할겁니다. 원서가 싸고 (무료 PDF 본도 있습니다), 의미 전달이 확실합니다.

여의도자바

세벌의 이미지

번역본으로 잘 설명된 책을 찾아 헤매지 마시고, 좋은 원서를 보면서 잘 설명된 번역본을 쓸 생각을 하셔요.
교수님 할 생각 있으시면 더더더더욱.

황병희의 이미지

ltt2844 wrote:
운영체제 과목은 리눅스를 공부 하려고 합니다.(맞는건지 모르겠지만요)

클라우드 시대에선 맞는 말입니다^^^

[우분투 18.04 파여폭스 나비에서 작성했습니다]

--
^고맙습니다 감사합니다_^))//

Stephen Kyoungwon Kim@Google의 이미지

어느 수준의 개발자를 목표로 하느냐에 따라 다르겠지만 일반적으로 알고리즘은 중요한 것 같습니다. 어떻게 보면 가장 중요한 과목입니다. 미국 기업들이 특히나 시니어 소프트웨어 엔지니어 이하 수준의 롤을 두고 면접을 볼 때 대부분의 시간을 알고리즘과 자료구조를 바탕으로 하는 문제 풀이에 할애하는 건 이유가 있어 보여요.

세벌의 이미지

 의 이미지

전반적으로는 동의합니다만 수학 그 자체는 컴공보다도 넓은 범주의 학문이지요.

제 학부 지도교수님께서 저를 비롯한 학부생들에게 "앞으로 어느 분야를 연구하더라도" 꼭 알아야 할 두 개 수학 과목을 추천해주셨던 적이 있습니다.

선형대수, 확률과 통계.

vagabond20의 이미지

컴퓨터 공학 혹은 컴퓨터 과학은 순수한 학문에 속하지 않지요.
반면, 수학은 과학이나 공학에 아주 중요한 기반이 됩니다.

제 개인적으로는 (어렸을때) 수학을 재미있어 하고 좋아했습니다만, 전자계산학과를 나오고 직장생활을 오래 하다보니 수학과 많이 멀어지더군요.
대학 1 학년때 미적분 기말시험에 말안장 그리는 문제가 나왔는데, 그게 한참 지나고 보니까 우주의 모습을 설명하는 과정에서도 나오더라고요. (요즘 우주에 꽂혀서요...)

아인슈타인의 상대성이론을 이해하기 위해 미적분 책을 사서 복습하려했는데, 집에만 오면 아무것도 하기 싫고, 책에 먼지만 쌓여가고 있습니다. 언젠가는 해야지요. 로또만 맞으면 직장 때려치고 천체물리학과 대학원에 들어가 공부하는게 꿈입니다.

여의도자바

세벌의 이미지

로또만 맞으면? 수학 공부 하셨으니 확률 아시겠죠? 직장 안 때려친다는 말씀이죠? :)

vagabond20의 이미지

주변에 어떤 지인 (이미 저희집보다 잘 사는 집 마나님) 이 슈퍼마켓 자동판매기 로또 20 불짜리를 샀는데 그게 300 만불 짜리에 당첨된것을 보고는 와이프님 성화에 못이겨 가끔 삽니다.
온갖 정성을 다해 아주 자주 사야 확률이 올라갈텐데 - 아마 이 지구위에서는 그런 행운은 경험하지 못하겠지요. 꼬부랑 할아버지 될때까지 이 직장 다닐 수 만 있다면 그게 행복일지도 모릅니다.

댓글 고맙습니다.

여의도자바

내가왜리눅스썼지의 이미지

주사위는 기억이 없다라는 말이 있죠.

이보게 친구, 속도는 생명이라고.
망하면 재수강. Re: 제로부터 시작하는 재수강

ydhoney의 이미지

1. 수학은 공업수학이죠.(응?)
2. cpu(microprocessor), OS(kernel), 자료구조, 알고리즘
3. DB, Network
4. 가장 최고의 프로그래밍 언어는 영어입니다.(?)

hshin23의 이미지

1. 자료구조 & 알고리듬 분석
2. 운영체제
3. 영어

제일 중요한건 문제해결법이죠

내가왜리눅스썼지의 이미지

Leetcode

연습사이트

이보게 친구, 속도는 생명이라고.
망하면 재수강. Re: 제로부터 시작하는 재수강

내가왜리눅스썼지의 이미지

대학을 나온다
대학원을 간다
논문을 찍어낸다 (참고로 합법적으로, 아니면 영구제명 당합니다)
박사를 외국의 유명한 곳에서 하면 그나마 교수 될 확률이 높아진다.
교수로 불러주는데가 있으면 간다
교수됨

그리고
조교수에서
정교수로 간다

이보게 친구, 속도는 생명이라고.
망하면 재수강. Re: 제로부터 시작하는 재수강

hankyu의 이미지

쉽게, CS 개발, 웹 개발로 나뉜다 치면 커리큘럼은 전혀 다르게 흐릅니다. 그래서 내가 하고 싶은 게 뭔지 고찰하는 게 우선이라고 생각해요. https://coderlife.tistory.com/99 대학 커리큘럼에 대한 비판적인 글인데, 반은 맞고 반은 틀렸다고 봅니다.

물론, 다 맞고 다 틀렸다는 평가도 있을 수 있는데, 어쨌든 ... 내가 바라보는 관점에 따라 커리큘럼은 긍정 또는 부정적으로 보일 수 있습니다. 먼저 내가 하고 싶은 게 뭔지 정의하는 게 우선이라고 생각해요.