목록스탠포드 (8)
'스탠포드' 태그의 글 목록
전세계에서 21세기에 가장 많은 노벨상 수상자들을 배출한 기관이 어딘지 아시나요? 스탠포드 대학교는 2위인 컬럼비아 대학교, 3위인 UC버클리 대학교, 4위인 프린스턴 대학교, 7위인 MIT, 11위인 하버드 대학교를 누르고 당당히 1위를 차지했습니다. (5~6위, 8~10위를 생략한 이유는 리스트에 대학교가 아닌 기관들도 포함되었기 때문입니다). "역사를 배우려면 하버드, 역사가 되려면 스탠포드에 가라"는 얘기가 그렇게 탄생하였죠. 이번엔 스탠포드의 본업인 교육과 연구에 대해서 스탠포드가 자랑하는 내용들을 소개드리겠습니다. 스탠포드에는 학생 4명 당 1명의 교수가 있습니다. 현재 스탠포드에서 가르치고 있는 총 2,153명의 교수들 중에는 20명의 노벨상 수상자, 29명의 맥아서 펠로우 수상자, 8명의 ..
예일 대학교의 캠퍼스는 300 에이커입니다. 프린스턴 대학교의 캠퍼스는 예일의 두배인 600 에이커입니다. 하버드 대학교의 캠퍼스는 프린스턴의 10배에 가까운 5000 에이커가 조금 넘습니다. 그리고 스탠포드 대학교의 캠퍼스는 8180 에이커로 미국 대학교 중 가장 넓은 영토를 가지고 있습니다. 스탠포드 캠퍼스의 면적은 한국에 비교했을 때 여의도의 11배이며, 한국 단위로 천만평에 달합니다. 이 넓은 캠퍼스에 무엇이 들어있을까요? 스탠포드는 법적으로 하나의 독립된 도시기 때문에 경찰서, 소방서, 우체국, 그리고 독자적인 우편번호를 가지고 있습니다. 이 넓은 캠퍼스를 누비려면 걸어서는 힘들기 때문에 대부분의 학생들은 자전거나 스케이트보드를 타고 다닙니다. 학생들과 인근 주민들이 무료로 캠퍼스의 각 구역과 ..
정말 잘 해주셨습니다. 드디어 한달간의 대장정을 마쳤네요. 여러분은 카렐 과정을 졸업하셨습니다. 여러분 중에는 프로그래밍과 코딩이 무엇인지도 모르는 상태로 시작한 분들이 많은데, 벌써 주어진 복잡한 과제를 풀기 위해 알고리즘을 구상하고 코딩하는 것까지 자유자재로 해내실 수 있게 되었다는게 놀랍습니다. 오늘은 여러분이 컴퓨터 과학을 계속 추구하신다면 어떤 옵션들이 있는지, 카렐 그 이후의 단계에 대해 얘기하고자 합니다. 카렐은 끝이 났어도 CS106A 과정은 끝이 아닙니다. 지금까지 카렐과 과제를 해결하시면서 여러분은 자기도 모르게 자바 프로그래밍 언어의 구문을 익히고 계셨습니다. 제가 다음에 돌아왔을때는 카렐의 세계에서 카렐의 문제를 해결해주는걸 벗어나 우리의 세계에서 사람들에게 유용한 프로그램들을 만들..
이번 주는 과제로 시작합니다. 이번 과제가 우리가 카렐과 마지막으로 함께 할 프로젝트이니 최선을 다 해주세요! 카렐 중앙 수색 과제는 설명하기 매우 쉬운 과제입니다. 카렐이 아래에서 첫번째 가로줄의 가운데를 찾아서 그 위에 비퍼를 놓으면 됩니다. 다른 규칙들은 아래와 같습니다:카렐은 참고로 왼쪽 아래 코너에서 오른쪽을 보면서 시작합니다. 중간 과정에서 비퍼를 다른 장소에 몇개를 놓아도 상관이 없지만, 마지막 상황에선 가운데에만 비퍼가 있도록 다른 비퍼들을 주워야 합니다. 중앙 수색 과제에서 카렐의 세계에는 세계 가장자리의 외벽 말고는 벽이 없으며, 세로 높이는 언제나 가로 넓이와 같거나 더 깁니다. 가로로 홀수 만큼의 칸이 있는 세계에서는 카렐이 가운데 칸에 비퍼를 놓아야하지만, 짝수 만큼의 칸이 있는 ..
이번 주는 새로운 프로그래밍 기능을 배우는 대신 스타일을 다듬어주는 테크닉과 프로그래밍 역사를 배워 지금 할 줄 아는 만큼을 완벽히 해낼 수 있도록 하는 것이 목적입니다. 그런 의미로 오늘은 현대 프로그래밍의 가장 핵심적인 개념인 객체 지향 프로그래밍 (Object-Oriented Programming)의 개념에 대해 배워보도록 하겠습니다. 1970년대 카렐이 만들어졌을때 프로그래밍 분야는 수행할 기능들의 순서를 중심으로 쓰는 "절차적 프로그래밍" 패러다임이 지배하고 있었습니다. 큰 문제를 풀기 위해 여러가지 "절차"들로 쪼개어 문제를 해결하는 방법이 절차적 프로그래밍입니다. 여러분도 이 접근법으로 기둥 수리 과제를 해결하였죠. 더 최근에 발표된 자바 같은 프로그래밍 언어들은 "객체지향 프로그래밍" 패러..
잘 지내셨나요? 저번 주 꽤 어려운 프로그래밍 테크닉을 많이 다뤄서 기둥 수리 과제에서 스타일보다 기능성에 집중하라고 조언드렸습니다. (기억을 상기시켜드리기 위해 다시 설명드리자면 "코드가 원하는 작동을 하는가"가 기능성, "코드를 남들이 봐도 읽고 이해하기 쉬운가"가 스타일입니다). 하지만 어렵고 복잡한 코드일수록 스타일의 중요성은 높은 법이죠. 이번 글에서는 코드를 읽기 쉽게 도와주는 두가지 테크닉 "인덴팅"과 "코멘팅"에 대해 배워보겠습니다. 위의 두가지 코드는 동일한 기능을 수행합니다. 컴파일 (검은색 달리는 사람 아이콘) 버튼을 눌러도 둘 다 완벽히 작동하죠. 하지만 오른쪽의 코드는 두번째 while 루프와 if문이 첫번째 while 루프 안에 있다는 것을 한 눈에 쉽게 볼 수 있게 해줍니다. ..
다시 한번 카렐과 함께 문제를 풀어볼 준비가 되셨나요? 이번 과제는 신문을 가져오는것 과제보다 훨씬 복잡하지만 그만큼 더 재밌답니다. 같이 바로 시작해봐요! 스탠포드의 중심에 위치한 "메인쿼드"에는 이런 기둥들이 세워져 있답니다. 하지만 1989년, 스탠포드에 지진이 일어나서 이 기둥들이 부분적으로 파손되었습니다. 이대로 놔둔다면 학생들이 안전하지 않겠죠? 여러분이 얼른 카렐을 이용해서 이 기둥들을 수리해주세요! 이클립스를 실행하고 오른쪽 사이드바에서 src 폴더 -> (default package) -> StoneMason.java를 열면 "기둥 수리" 과제를 시작하실 수 있습니다. 카렐 세계에서 스탠포드의 메인쿼드는 이렇게 표현되어 있습니다. 비퍼로 만들어진 기둥들이 천장을 지지하고 있지요. 여러분은..
카렐은 딱 네가지 기능만 할 줄 알지만, 여러분이 그 네가지 기능을 어떤 순서로 몇번이나 반복하는가에 따라 다양한 기능을 수행할 수 있죠. 마찬가지로 여러분의 컴퓨터에 있는 마법같은 프로그램들도 정말 간단한 기능들을 창의적으로 조합한 것 뿐입니다. 네가지 기능으로도 카렐은 많은걸 할 수 있지만, 카렐이 다른 기능을 배울 수 있다면 신문을 가져오는 과제가 훨씬 더 간단하지 않았을까요? 예를 들어 왼쪽으로 3번 도는 대신, 바로 오른쪽으로 도는 기능을 안다면 말이죠. 이번 강의에선 카렐에게 새로운 기능을 가르치는 방법을 배워보겠습니다. 카렐에게 오른쪽으로 회전하는 기능을 가르쳐봅시다. 왼쪽으로 도는 기능이 "turnLeft();"니까 오른쪽으로 도는 기능은 "turnRight();"라고 부르도록 하죠. 이렇..