I study physics -- How can I expand my computer knowledge?

Click For Summary

Discussion Overview

The discussion revolves around expanding computer science knowledge, particularly in relation to physics and scientific computing. Participants explore various programming languages, courses, and their relevance to solving physics problems, including numerical methods and algorithms.

Discussion Character

  • Exploratory
  • Technical explanation
  • Debate/contested
  • Homework-related

Main Points Raised

  • One participant expresses interest in learning C++ or Java to solve physics problems and questions the value of taking an algorithms course.
  • Another participant suggests considering the applications of coding, such as data structures and operating system design, in relation to physics.
  • A participant emphasizes the importance of taking a programming course, even if not required by their program, to enhance their skills.
  • Some participants advocate for the continued use of MATLAB while also suggesting learning FORTRAN and its associated libraries for numerical methods.
  • One participant recommends learning R for statistical analysis, noting its open-source nature and extensive libraries.
  • A later reply advises against taking the algorithms course without prior experience in object-oriented programming, suggesting that foundational knowledge is crucial for success in the course.
  • Another participant confirms the relevance of the algorithms course for someone in physics, highlighting its structure and the importance of prior programming knowledge.
  • Participants discuss the fundamental role of algorithms and data structures in programming, likening it to essential skills in carpentry.

Areas of Agreement / Disagreement

Participants express a range of opinions on the best programming languages and courses to pursue, with no clear consensus on a single approach. There are differing views on the necessity of prior programming experience before taking the algorithms course.

Contextual Notes

Some participants mention the need for foundational programming knowledge before tackling more advanced topics, while others suggest a focus on specific applications in physics. The discussion reflects varying levels of expertise and familiarity with different programming languages and tools.

davidbenari
Messages
466
Reaction score
18
I'm interested in expanding my computer knowledge. Specifically, computer science knowledge.

I've taken a few numerical methods courses, but they were all in MATLAB.

My strategy this summer was to study physics problems like PDEs and solve them in some language I don't know like C++. Also, I want to take a course on Coursera.com called Algorithms which happens to be Java based. For this course, I'm taking an intro to Java programming on Udacity.com, but I'm starting to fear that I'm wasting my time.

How do you suggest I can expand my CompSci knowledge this summer? Should I learn C++ or Java ? Should I take that Algorithms course? Should I instead just focus on solving those physics problems on C++ instead of MATLAB?

I'm also not a complete expert in MATLAB, so maybe I should also stick with MATLAB for a while, until I can do amazing things with it. And there's this other Mathematica thing which does amazing things which I should also learn to do!

Suggestions?

Thanks.
 
Physics news on Phys.org
What applications do you want to be able to code? General CS education includes data structures and operating system design. Are you interested in those?
 
Sure, I'm interested in that. In general I want it to have some connection to physics or scientific computing in general. Is this too vague?
 
This should be way too simple. As a Physics or Engineering or ANY Science student with a degree as the goal, you are maybe required to study a beginning programming course for credit. Maybe your program does not require this. Make it a requirement for yourself anyway. Such a course is not something you do in the su
 
  • Like
Likes   Reactions: davidbenari
Nothing wrong with MATLAB. I know many will disagree but now and throughout my career I found FORTRAN to be most valuable. The IMSL Libss and numerical libraries are well developed in FORTRAN. In general, the rudiments of a language can be learned in a year but it really takes many years to becom proficient in any language. Probably best to remain good at MATLAB, and start learning FORTRAN, and the associated Math libraries NAG, IMSLLIBS, Numerical recipes, etc.
 
  • Like
Likes   Reactions: davidbenari and symbolipoint
Hey davidbenari.

If you ever pick up statistics I'd recommend learning R.

It's free and open source and is used a lot by people doing statistical analysis and has enough libraries to do nearly everything one would need it to do.
 
  • Like
Likes   Reactions: davidbenari
davidbenari said:
Also, I want to take a course on Coursera.com called Algorithms which happens to be Java based. For this course, I'm taking an intro to Java programming on Udacity.com, but I'm starting to fear that I'm wasting my time.
Given where you're at currently, it won't be beneficial for you to take that algorithms course. You need to have gone through an object oriented programming course first.

I'm also assuming you're referring to the algorithms course taught by Sedgewick. I've gone through it and read his textbook that the course is based on. Both are excellent and served as a nice refresher for me. If you really want to take the course and get the most out of it, spend your time learning and using Java for at least a semester. The more programming experience you have, the more you'll get out of studying algorithms.
 
  • Like
Likes   Reactions: davidbenari
Jaesum, do you think that course could be useful to me as a physics guy?
 
davidbenari said:
Jaesum, do you think that course could be useful to me as a physics guy?
Yes, absolutely. I think coursera breaks it into two different courses. The first course covers the first half of the book, and the second one covers the second half. It assumes you already know object oriented programming, though.

You can buy the book and the lectures from amazon as a package deal without going through coursera. It's the route I chose, but I'm an algorithms enthusiast.
 
  • #10
Jaeusm said:
Yes, absolutely.

Could you be more specific? What sort of problems in physics require some education in algorithms?

I'm taking learning Java right now to be able to take that course, I hope it'll work hehe.

Thanks.
 
  • #11
davidbenari said:
Could you be more specific? What sort of problems in physics require some education in algorithms?
All computer programs are implementations of algorithms. The contents of the course in question are classic algorithms and data structures. These are the fundamental building blocks for solving any problem. If you're doing any type of programming at all, you will be using these data structures and algorithms.

Your question is somewhat analogous to asking a carpenter if learning how to hammer nails into boards is helpful for building a house. I'd say it's essential at the most fundamental level. It's usually the second or third course required by computer science programs after one or two programming courses.
 
  • Like
Likes   Reactions: davidbenari

Similar threads

  • · Replies 102 ·
4
Replies
102
Views
9K
  • · Replies 8 ·
Replies
8
Views
2K
  • · Replies 7 ·
Replies
7
Views
3K
  • · Replies 3 ·
Replies
3
Views
2K
  • · Replies 9 ·
Replies
9
Views
2K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 14 ·
Replies
14
Views
2K
  • · Replies 4 ·
Replies
4
Views
2K
  • · Replies 14 ·
Replies
14
Views
4K
  • · Replies 14 ·
Replies
14
Views
5K