Where to Begin with Computer Science for a Physics Major?

AI Thread Summary
A physics major in their third year seeks to enhance their computer science skills before taking a formal course. They express concern over application requirements for computer science knowledge. Recommendations include reading "Concrete Mathematics" for foundational concepts and starting with beginner programming books in languages like Python or Java. Key advice emphasizes the importance of understanding code structure, procedural thinking, and building on existing programming frameworks. Simplicity in coding is highlighted as crucial for maintainability and collaboration. Additionally, obtaining certifications such as A+ and Microsoft certifications can improve employability, with suggestions to use virtualization software like VirtualBox for practical experience.
kuahji
Messages
390
Reaction score
2
I'm a physics major & am in my third year. The problem is, I never had a computer science course & when I go to fill out applications for various things, everyone wants to know what my computer science skills are. I'm taking comp. sci. 1 next semester, but from now until the next semester starts, what some good books or references I could read on computer science? I really have no idea where to start, but would like to learn something slightly different from what I'd learn in the comp. sci. I course.
 
Physics news on Phys.org
There's a book called "Concrete Mathematics" about math that comp sci students might need. If you haven't done programing, I guess you should just take out a beginners book in Python, Java or something and tinker around
 
kuahji said:
I'm a physics major & am in my third year. The problem is, I never had a computer science course & when I go to fill out applications for various things, everyone wants to know what my computer science skills are. I'm taking comp. sci. 1 next semester, but from now until the next semester starts, what some good books or references I could read on computer science? I really have no idea where to start, but would like to learn something slightly different from what I'd learn in the comp. sci. I course.

Hi there I've done programming both professionally and unprofessionally for about 8 years so I'll try and give you some tips into programming.

1) Think big

By thinking big I mean that you should over time and with experience know and see inside your head what the code is doing, how each bit of code depends on the other supporting code in your program and how the puzzle fits together. This becomes important as you get to work on larger and larger programs and as they become more complex, your role will be to implement both the simplest and most effective solution.

2) Think procedurally

Most code you will ever have to write/debug/expand etc will be procedural. Whether its written in machine language, Java, C++ whatever if you can apply paradigms to your code where you break up your programs to do tasks in the most "logical" way then it will help you get done what you need to. Also learn about documentation. If you write code that performs a given tasks and it takes 4 sub procedures to effectively do that task, think about the following:

a) Scope of the function
b) Related data going in and data going out
c) Put into context of what is happening
d) The role of data structures in your code

3) Build on existing infrastructure

There are dozens (if not hundreds) of existing data structures that achieve some particular purpose in programming. One of the more important things to do is to treat coding like it was building a house. You typically begin by planning to build a house by creating atomic elements (like the bricks, wooden framework etc), lay the foundations, create the links that bond different elements together and finish it off through careful structuring and bonding
of each element.

Programming is no different. You start off with code segments that typically will end up in
libraries where that library contains routines that will be used by other parts of a program. It can take a little while to get to used to but if you learn to do this early on, you will write better code and things such as templates in C++ become a lot more natural to you when you are learning.

4) Keep it simple

Sometimes it can be hard to get the right code the first time but typically more experience usually allows someone to get the right thing happening faster. Now code can become complex but for the sake of trying to alleviate problems in the future, keep your code simple and readable to the best of your ability. Break-up code into sub problems that can be easily analyzed by another coder. Trying to create ultra complex code or coming up with routines that are 10000 to 100000 lines will go against helping other coders from getting to understand what's going on and frustrate them. It can also be detrimental to you if you find that you need to add a feature or debug the code or have to work with it in some way.

With regards to learning particular languages, technologies, methodologies, infrastructures, data structures and all that, there's tonnes of information out there that can teach you that so I won't bother.

All the best and good luck with it all.
 
That "what are your computer skills" question you see on applications is really different from what do you know about computer science, I think. Fortunately, there are certifications galore in the IT field which teach you a lot of different things and you get to add to your resume in big bold letters when you pass (just kidding with the bold part).

I recommend A+. Basically a heavy focus on being a computer technician, hardware issues, boot issues, operating systems, monitors and graphics cards, and printers. Not anything close to computer science. But stuff that makes you employable.

At my internships, I've been told they really like people who have Microsoft certifications too. There's a ton of those, but mainly I'd start off with "installing and configuring windows 7" or whatever goofy name it has. Try studying for the test using virtualization software as an added bonus. Sun microsystems has a open source software called Virtual Box that makes it ridiculously easy to practice this stuff.
 
Last edited:
TL;DR Summary: I want to do a PhD in applied math but I hate group theory, is this a big problem? Hello, I am a second-year math and physics double major with a minor in data science. I just finished group theory (today actually), and it was my least favorite class in all of university so far. It doesn't interest me, and I am also very bad at it compared to other math courses I have done. The other courses I have done are calculus I-III, ODEs, Linear Algebra, and Prob/Stats. Is it a...
Yesterday, 9/5/2025, when I was surfing, I found an article The Schwarzschild solution contains three problems, which can be easily solved - Journal of King Saud University - Science ABUNDANCE ESTIMATION IN AN ARID ENVIRONMENT https://jksus.org/the-schwarzschild-solution-contains-three-problems-which-can-be-easily-solved/ that has the derivation of a line element as a corrected version of the Schwarzschild solution to Einstein’s field equation. This article's date received is 2022-11-15...
Back
Top