"전산 과학자"는 종이 / LaTeX 및 개념 증명 구현을 사용하여 수치 분석을 수행하는 사람들, 범용 라이브러리를 작성하는 사람들, 특정 클래스의 문제를 해결하는 응용 프로그램을 개발하는 사람들 및이를 활용하는 최종 사용자를 포함하기 때문에 다소 광범위합니다. 신청. 이 그룹에 필요한 기술은 다르지만 "풀 스택"에 대해 잘 알고 있으면 큰 이점이 있습니다. 이 스택의 핵심 부분이라고 생각하는 부분을 설명하겠습니다. 해당 수준에서 일하는 사람들은 물론 더 깊은 지식을 가지고 있어야합니다.
영역 지식 (예 : 물리 및 공학 배경)
모든 사람은 자신이 해결하고있는 문제 클래스의 기본 사항을 알아야합니다. PDE에 대해 작업하는 경우 몇 가지 PDE 클래스 (예 : 포아송, 탄력성 및 압축 불가능하고 압축 가능한 Navier-Stokes)에 대한 일반적인 지식, 특히 "정확하게"캡처하는 데 중요한 속성과 불연속화할 수있는 사항 오류 (이것은 지역 보존 및 증상 적분기에 관한 방법 선택을 알려줍니다). 응용 프로그램에 관심이있는 일부 기능 및 분석 유형에 대해 알아야합니다 (리프트 및 드래그 최적화, 실패 예측, 매개 변수 반전 등).
수학
모든 사람은 문제 영역과 관련된 방법 클래스에 대해 어느 정도 친숙해야합니다. 여기에는 희소 대 밀도 선형 대수의 기본 특성, "빠른 방법"의 가용성, 공간 및 시간적 이산화 기법의 특성 및 이산화 기법이 적합하기 위해 필요한 물리적 문제의 특성을 평가하는 방법이 포함됩니다. 대부분 최종 사용자 인 경우이 지식은 매우 높은 수준 일 수 있습니다.
소프트웨어 엔지니어링 및 라이브러리
추상화 기술과 라이브러리 디자인에 대한 지식은 계산 과학의 거의 모든 사람에게 유용합니다. 개념 증명 방법으로 작업하는 경우 코드 구성이 향상됩니다 (다른 사람이 코드를 강력한 구현으로보다 쉽게 "번역"할 수 있도록 함). 과학 응용 프로그램에서 작업하는 경우 소프트웨어 확장 성이 향상되고 라이브러리와의 인터페이스가 더 쉬워집니다. 오류를 가능한 빨리 감지하고 오류 메시지를 최대한 정보를 얻을 수 있도록 코드를 개발할 때 방어 적입니다.
도구
소프트웨어 작업은 컴퓨터 과학의 중요한 부분입니다. 선택한 언어, 편집기 지원 (예 : 태그, 정적 분석) 및 디버깅 도구 (디버거, valgrind)에 능숙하면 개발 효율성이 크게 향상됩니다. 배치 환경에서 작업하는 경우 작업을 제출하고 대화식 세션을 얻는 방법을 알아야합니다. 컴파일 된 코드로 작업하는 경우 컴파일러, 링커 및 Make와 같은 빌드 도구에 대한 실무 지식으로 많은 시간을 절약 할 수 있습니다. 혼자서 작업하더라도 모든 사람에게 버전 관리가 필수적입니다. Git 또는 Mercurial을 배우고 모든 프로젝트에 사용하십시오. 라이브러리를 개발하는 경우 거의 항상 처음으로 이식 가능한 코드를 작성하도록 언어 표준을 합리적으로 완전히 알아야합니다. 그렇지 않으면 코드가 펑키 한 환경에서 빌드되지 않을 때 사용자 지원 요청에 묻 힙니다.
유액
LaTeX는 과학 출판 및 협업을위한 사실상의 표준입니다. LaTeX의 숙련도는 결과를 전달하고 제안에 대해 공동 작업을 수행하는 데 중요합니다. 그림 작성 스크립팅도 재현성 및 데이터 출처에 중요합니다.