Engineering Can a physics major get hired as a software engineer?

Click For Summary
Graduating with a BA in physics and taking computer science classes may not be sufficient for securing a software engineering job, as employers often prefer candidates with strong programming skills and relevant experience. Internships and practical programming projects are crucial for demonstrating capability beyond coursework. While a physics background can provide valuable problem-solving skills, it does not automatically qualify someone for programming roles. The job market's competitiveness and the necessity for deep programming knowledge are significant factors to consider. Ultimately, gaining hands-on experience and developing a strong portfolio are essential for success in software engineering.
  • #31
chiro said:
In terms of visualization of data, I am assuming you mean things like two and three dimensional plots of some sort and the ability to transform these in ways of viewing angle, scaling, and so on. I will also add physical modelling of geometric data just to be safe.

In terms of understanding this at a deep level, its best to start with the basic of 3d modelling with areas of linear transforms and using those to create a framework with local models, world space, and camera models. You'll find nowadays that most of this is done with a few API calls to OpenGL or DirectX, whereas you had to do everything (and I mean literally everything) using super fast assembler routines or using bare bone C.

If you are dealing with a relatively small amount of data, it's probably useful to just use your graphics card z-buffer. If the geometry is really large, then you need to study spatial classification algorithms and how they are used in hidden surface removal.

For standard modelling where there are no fancy textures or lighting, you will able to set up the video card (again with OpenGL or DirectX) pretty quickly.

With regard to data analysis and data streaming, this will obvious depend on the type and the source of the data, which will dictate the tools that you will use. For example if its some kind of ODBC data source, then you will get an API and libraries for this so you can effectively import the data and then convert it to your data structure for processing.

In terms of streaming, between components of your program, if data is shared specifically in the process space, it will be a lot easier. If your data though is being shared between processes, then you will have to learn about objects like pipes where processes can share public data with each other.

In terms of networking, it's a good idea to see what application protocols are out there, because chances are the protocol's development had the same goal in mind as yourself. It may not be specifically written in mind for your domain, but chances are a lot of the ideas are directly related. As an example think about peer 2 peer software. When most people think of p2p they think of file sharing, but p2p is also used in video broadcast servers (I'm using one for a distance course on Bayesian Inference). So in this example you have the framework for p2p, and then the specific customization for the application you have in mind.

With regards to that comment I would look at the basics of a good p2p protocol and then think about the data structures you need in your application and use both of those as well as specific protocols that you need as a basis for designing a network platform for your application.

More specifically about the science, I'm interested in complex systems and nonlinear dynamics, which means i also have to be very away of floating point errors (since they are dramaticized in chaotic systems).

As for intuitive interfaces, that is a real ***** of a subject. For anything involving navigation through visualizations (in other words through a 3D virtual world or representation of some sort), you will need both a visualization system that has very specific control over the rendering and the detection of objects in the world. Typically we use the term "hit test" for the ability to cast a ray and return the object that was first hit.

Coding the basics for that requires collision detection. If you don't have many objects, then you could get away with something simpler, but if the complexity of your visualization grows, then you will need something more versatile.

One integrated way for interactive visualization is based on what games like Doom 3 do: they dynamically create a texture (think bitmap) and then they render that to some object. So in other words you create a flat quadrilateral with two triangles, then you create your output texture by computing it based on the representation and events executed by the user (user moves mouse, clicks on button, etc), and then using the output texture as the texture for your quadrilateral.

In the above scenario, the whole system is unified under a general 3D visualization engine. With this you could have many 2D interfaces within a 3D virtual world and you could give the interfaces all the fancy stuff that you see in your state of the art PC games because everything goes through the same pipeline, so you get everything from transparency to texture effects for free.

But doing this takes a lot of work (and I know from experience).

If you ever want to get into video games, the key things is finding the balance between flexibility and performance and nowadays you need high amounts of both. The performance criteria means that optimization is very important and understanding this in a variety of contexts from computation time to general playability. Hardware is getting better and better, but as a consequence, people want more and more detail and fireworks which means finding solutions that scale is critical.

So with some game engine, the important point is the ability to create content quickly and use it quickly. As a result of this game engines have their own scripting languages, geometry exporters, and numerous tools to create the worlds, network protocols, user interfaces, and game specific code, which are designed to be flexible and easy to get something up and running.

It can be a nightmare in a lot of ways, but having a finished game is pretty cool.

Wow, that's a lot of information to digest for one post!

For visualizing data, we're talking hundreds of dimensions (sometimes thousands). So it actually takes some novel approaches if you want to know what the phase space looks like. Using MATLAB, I've actually made myself proud a few times.

I'm very interested in innovation when it comes to this subject. Scaling and transforming are rather easy operations in Matlab. It's coming up with a novel idea in the first place, regardless of what language I'm using, that is the interesting, fun, and useful part.

It will probably be a long time before I ever try to actually write a game. But I don't imagine myself writing a first-person shooter or anything. It would more like a god-mode or RTS or just objects on the screen to play with (like fantastic contraptions) or Insaniquariam, where you have simple game mechanics.
 
Physics news on Phys.org
  • #32
I have a BA in physics. Ended up with a programmer position after graduation. Then I just continued that route with a MS in comp eng.

You don't really need a degree to prove that you're a good programmer. I took one C++ class during my physics studies and ended uP doing personal projects. Some of them mixing in my Physics.
 
  • #33
Fra said:
One extremely interesting, and I think nice for the future is modelling organism responses accounting for gene expression and other regulations. The point with complex systems is that even if it "in principle" if you look at the model, is determinisic, complexity and rounding errors prevents this from actually beeing predictive.

And then you can use the same math to model financial systems.

http://www.nature.com/nature/journal/v469/n7330/full/nature09659.html

http://www-thphys.physics.ox.ac.uk/colleges/merton/notes/may.pdf
 
Last edited by a moderator:
  • #34
twofish-quant said:
And then you can use the same math to model financial systems.

Yes indeed, there are many conceptual analogies. In fact some of the core problems of mathematical formalisms in fundamental questions in current physics, in particular the gaming perspectives and the inference perspectives are quite generic - and ones understood, would have wide ranges of applications, not just physics.

In economical and social systems, some issues might even be more obvious than in physics, sometime I'm mentioned in a few threads. Smolins "sidekick" Roberto Unger who is an expert in social theory and law have actually provided several deep insights and comments on the nature of law (in the context of smolings evolution of physical law) in a joint talk at perimeter.

So I think that there may even by mutual benefits of fields, by getting some experience in other fields. Certainly the abstract "modelling and inference problem" are very similar for someone looking to placet their bets in a market that is completely determined by expectations and where the notion of fundamental values are ambigous at best (here I compare to fundamental DOFs)

/Fredrik
 
  • #35
Fra said:
In economical and social systems, some issues might even be more obvious than in physics, sometime I'm mentioned in a few threads. Smolins "sidekick" Roberto Unger who is an expert in social theory and law have actually provided several deep insights and comments on the nature of law (in the context of smolings evolution of physical law) in a joint talk at perimeter.

The one caveat here is that you have to be very, very, very careful, because it's easy to come up with a theory of finance that is simple, elegant, and totally wrong, and having a theory of finance that is just wrong can cause tremendous damage. Also one thing that physicists are not usually not prepared for is how their ideas can be (sometimes intentionally) misinterpreted or misunderstood. If you come up with a model of credit derivatives that works only under situations X, Y, and Z, people will forget about the limits.

Also, one's mindset has to change a little. In astrophysics, the rules are the same in space and time, whereas in finance, the rules are different from place to place and they can change. This is a good thing for employment because you can be the world's expert about how to mathematically model stock exchange A, but stock exchange B is wildly different because B has a one hour lunch break and A does not.

Certainly the abstract "modelling and inference problem" are very similar for someone looking to placet their bets in a market that is completely determined by expectations and where the notion of fundamental values are ambigous at best (here I compare to fundamental DOFs)

One of the fields that is a huge source of employment for physics Ph.D.'s with a lot of software experience is high frequency trading, and you run into some interesting questions like "what is a price?"

Also for high frequency trading, you assume that expectations and fundamental value doesn't matter. One way of thinking about this is that if you have a stock the reasonable annual return is say 10%/year. Now over the course of 5 seconds, you can approximate the fundamental return to be zero, and the dynamics are going to be overwhelmed by trading noise.

Something is useful in astrophysics and I think in biological systems is to "decouple scale." For example, you would like to look at the cell without thinking about the entire ecology of the rain forest and vice versa, and a lot of time you can do that. So when you do millisecond trading, you don't think about the fundamental value of the corporation, and vice versa, just like you don't think about the whole rain forest when you look at a cell.

But some of the really interesting problems in astrophysics and finance are those in which the scales are not decoupled.
 
  • #36
twofish-quant said:
If you come up with a model ... that works only under situations X, Y, and Z, people will forget about the limits.
This happens in physics too :) I'm thinking in particular to theories that are well established for small subsystems, and then are extrapolated to cases where all you have are inside observers.

What I mentioned about evolving law is supposed to cure exactly that. Ie. a theory of finance is NOT a "descriptive view", where you sit at your office in inifinite and throw in a buck and find 3 buck coming back as a curve ball. I think the correct view, that finance people are well aware of (but that physicists don't quite get, beucase they are too stubbonr lookig for fundamental DOFs and theories that might in fact not exist) is that the theory is just a interactiong tool, a tool to help your business. If your business luck, the theory is questioned and modified. so the interesting perspective there (which I thtnk is the same is social theory) is that the laws evolve. Or rather there are not even any fundamental LAWS', all there is are expectations of laws. This is also different that some classical game theory where the game is well defined and the state space of strategies are fixed.

A real game, is one where the rules are fuzzy and evolving, and trying to infer the rules is as important as trying to place your bets rationally acccording to them.

I think aloto fo this is gut feeling for people in finance and social theory, so maybe physicists can learn something.

/Fredrik
 
  • #37
In analysis of complex system, you generally test the "robustness" of a system's behavior before you can publish "facts" about it. Some behaviors can remain through a whole range of parameter tunings and perturbations, so that you can often ignore problems that chaos may cause. Straight numerical errors will hardly ever give you reasonable results, so they're generally very red-flaggy (emptys, infs and nans, oh my)

"Robustness" is very similar (and perhaps based on) the definition from evolution:

http://en.wikipedia.org/wiki/Robustness_(evolution )

Robustness of a biological system is the persistence of a certain characteristic or trait in a system under perturbations or conditions of uncertainty.
 
Last edited by a moderator:

Similar threads

  • · Replies 18 ·
Replies
18
Views
2K
  • · Replies 25 ·
Replies
25
Views
5K
  • · Replies 18 ·
Replies
18
Views
6K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 30 ·
2
Replies
30
Views
9K
  • · Replies 7 ·
Replies
7
Views
2K
  • · Replies 4 ·
Replies
4
Views
2K
  • · Replies 8 ·
Replies
8
Views
3K
  • · Replies 17 ·
Replies
17
Views
5K
  • · Replies 1 ·
Replies
1
Views
2K