"Nhà khoa học tính toán" có phần rộng vì nó bao gồm những người thực hiện phân tích số bằng giấy / LaTeX và triển khai bằng chứng khái niệm, mọi người viết thư viện mục đích chung và những người phát triển ứng dụng giải quyết các lớp vấn đề nhất định và người dùng cuối sử dụng chúng các ứng dụng. Các kỹ năng cần thiết cho các nhóm này là khác nhau, nhưng có một lợi thế lớn để có một số quen thuộc với "ngăn xếp đầy đủ". Tôi sẽ mô tả những gì tôi nghĩ là những phần quan trọng của ngăn xếp này, những người làm việc ở cấp độ đó tất nhiên nên có kiến thức sâu hơn.
Kiến thức tên miền (ví dụ: vật lý và nền tảng kỹ thuật)
Mọi người nên biết những điều cơ bản của lớp các vấn đề họ đang giải quyết. Nếu bạn làm việc trên PDE, điều này có nghĩa là một số quen thuộc chung với một vài loại PDE (ví dụ: Poisson, độ đàn hồi, và Navier-Stokes không thể nén và nén được), đặc biệt là những tính chất nào quan trọng để nắm bắt "chính xác" và những gì có thể bị phân biệt lỗi (điều này thông báo lựa chọn phương pháp liên quan đến bảo tồn cục bộ và tích hợp đối xứng). Bạn nên biết về một số chức năng và loại phân tích quan tâm đến các ứng dụng (tối ưu hóa nâng và kéo, dự đoán lỗi, đảo ngược tham số, v.v.).
toán học
Mọi người nên có một số hiểu biết chung về các lớp phương thức liên quan đến miền vấn đề của họ. Điều này bao gồm các đặc điểm cơ bản của đại số tuyến tính thưa thớt so với mật độ dày đặc, tính sẵn có của "phương pháp nhanh", tính chất của các kỹ thuật phân biệt không gian và thời gian và cách đánh giá các tính chất của một vấn đề vật lý cần thiết cho một kỹ thuật rời rạc phù hợp. Nếu bạn chủ yếu là người dùng cuối, kiến thức này có thể rất cao.
Kỹ thuật phần mềm và thư viện
Một số quen thuộc với các kỹ thuật trừu tượng và thiết kế thư viện là hữu ích cho hầu hết mọi người trong khoa học tính toán. Nếu bạn làm việc trên các phương pháp bằng chứng khái niệm, điều này sẽ cải thiện việc tổ chức mã của bạn (giúp người khác dễ dàng "dịch" nó thành một triển khai mạnh mẽ). Nếu bạn làm việc trên các ứng dụng khoa học, điều này sẽ giúp phần mềm của bạn mở rộng hơn và giúp giao diện với các thư viện dễ dàng hơn. Hãy phòng thủ khi phát triển mã, sao cho các lỗi được phát hiện càng sớm càng tốt và các thông báo lỗi càng nhiều thông tin càng tốt.
Công cụ
Làm việc với phần mềm là một phần quan trọng của khoa học tính toán. Thành thạo ngôn ngữ bạn đã chọn, hỗ trợ trình soạn thảo (ví dụ: thẻ, phân tích tĩnh) và các công cụ gỡ lỗi (trình gỡ lỗi, valgrind) cải thiện đáng kể hiệu quả phát triển của bạn. Nếu bạn làm việc trong môi trường hàng loạt, bạn nên biết cách gửi công việc và nhận các phiên tương tác. Nếu bạn làm việc với mã được biên dịch, một kiến thức làm việc về trình biên dịch, trình liên kết và các công cụ xây dựng như Make sẽ tiết kiệm rất nhiều thời gian. Kiểm soát phiên bản là cần thiết cho tất cả mọi người, ngay cả khi bạn làm việc một mình. Tìm hiểu Git hoặc Mercurial và sử dụng nó cho mọi dự án. Nếu bạn phát triển thư viện, bạn nên biết các tiêu chuẩn ngôn ngữ hoàn toàn hợp lý để bạn hầu như luôn viết mã di động ngay lần đầu tiên, nếu không bạn sẽ bị chôn vùi trong các yêu cầu hỗ trợ người dùng khi mã của bạn không xây dựng trong môi trường sôi nổi của họ.
Mủ cao su
LaTeX là tiêu chuẩn thực tế cho xuất bản khoa học và hợp tác. Thành thạo với LaTeX rất quan trọng để có thể truyền đạt kết quả của bạn, cộng tác trên các đề xuất, v.v. Kịch bản tạo ra các số liệu cũng rất quan trọng đối với khả năng tái tạo và xuất xứ dữ liệu.