How much programming can you expect to do in the lab?

In summary, this research involves combining basic Object-Oriented Programming, GUI building, Networking, and Digital Logic. It is very common for researchers in this field to have a background in computer science, and for it to be a heavy workload. However, a good knowledge of physics is essential for success.
  • #1
cryora
51
3
It may be unique to my situation (or it may not, as I was told that AMO is one of the less computational fields of research in Physics), but for my undergraduate research assistant role, my job is to help the research group set up automated experimental controls. That includes learning:
Python
Python modules such as PyQt (for building GUI's) and Twisted (for Asynchronous Networking)
Hardware Description Langauge (namely Verilog) for FPGA's

In other words, this is combining basic Object-Oriented Programming + GUI's + Networking + Digital Logic to design one integrated system where computer programs can receive user input to talk to lab instruments and automate what they do (i.e. control lab instruments like an musical ensemble playing a piece). I do feel this is quite heavy on the programming side for a Physics major, though I suspect this is child's play compared to what professional researchers at, say national labs, have to be able to implement.
 
  • Like
Likes Silicon Waffle
Computer science news on Phys.org
  • #2
This sounds typical to me. The days of measuring things by hand and writing the results in your lab notebook are long gone. Computers perform these tasks much more efficiently and accurately. They also free you from tedious, repetitive tasks. Is there a problem in any of this?
 
  • #3
cryora said:
I was told that AMO is one of the less computational fields of research in Physics
As I researcher in computational AMO, I would tend to disagree :smile: There is not much pen-and-paper work going on in the field, and the experiments being done involve quite a lot of computer work, as you are discovering.

cryora said:
In other words, this is combining basic Object-Oriented Programming + GUI's + Networking + Digital Logic to design one integrated system where computer programs can receive user input to talk to lab instruments and automate what they do (i.e. control lab instruments like an musical ensemble playing a piece). I do feel this is quite heavy on the programming side for a Physics major, though I suspect this is child's play compared to what professional researchers at, say national labs, have to be able to implement.
From my collaborations with experimenters, there appears to be quite a lot of home-made electronics, which require home-made computer control and programming to go with it. I also think that custom-made programs give them more control and more knowledge of what is going on in the setup. I would say that the be able to do the integration properly, a good knowledge of the physics going on in the experiment is essential, and therefore it falls back on physicists to the programming, even if it would be at the level of a computer scientist.
 
  • #4
I would think the amount of programming would be high, but the tools you will work with will be a fairly small set. You can always ask for help in the programming forum, but the most important things you can remember are plan and modularize. Write your entire system out on a whiteboard before you even open your IDE. And make it modular, your logic should be completely disjoint from your GUI and your network.

I'd recommend for you actually writing three separate things.

1) Engine: the thing that handles all of the business logic, the thing that takes commands and turns them into requests to hardware. This should never stop running and have a connection listener.
2) Plugins: Each set of hardware should have it's own plugin, that gets loaded as it's needed. I'd make them a shared library.
3) GUI: This should ask the engine for information to display, and send it commands. I'd make it talk to the engine via a socket.
 
  • #5
This is true of most fields today. I'm a mechanical engineer but most of my work is programming. You really need both for most jobs. Because pure programming gives you a way to implement processes but not something to implement, pure science or engineering are the opposite. I think you'll find that if you ask questions on forums wherever you get stuck people will tell you about tools and methods to make it easier, and will help you get unstuck.
 
  • #6
cryora said:
[...]
In other words, this is combining basic Object-Oriented Programming + GUI's + Networking + Digital Logic to design one integrated system where computer programs can receive user input to talk to lab instruments and automate what they do (i.e. control lab instruments like an musical ensemble playing a piece).
This sounds very common to 2nd or 3rd year IT students. They can learn to automate simple robots, instruments to measure and calculate height, width of different objects ect. I used to start first with wired e.g via good old RS232 cable connectors then wireless e.g TCP/IP things.
I do feel this is quite heavy on the programming side for a Physics major, though I suspect this is child's play compared to what professional researchers at, say national labs, have to be able to implement.
True, it's a heavy load of work to most non-IT majors, I work in industrial fields. National labs seem to have different orientation and sets of standards to follow.
 
  • #7
On a related matter, you might be staggered by how much computer code biologists have to write. That's right, biologists. They do a lot of statistics, are into databases and R, and are almost as technical about computers these days as physicists. Physics and writing code (in all sorts of ways) seems to go hand in hand.
 

1. How essential is programming in the lab?

Programming is an essential part of modern scientific research, particularly in fields such as data analysis and computational modeling. It allows scientists to automate tasks, analyze large datasets, and simulate complex systems.

2. Do I need to have prior programming experience to work in a lab?

While having prior programming experience can be helpful, it is not always necessary. Many labs offer training programs or have team members who can teach basic programming skills. However, having a strong foundation in logical thinking and problem-solving can make learning programming easier.

3. What programming languages are commonly used in the lab?

The most commonly used programming languages in the lab depend on the field of research. Some popular languages include Python, R, MATLAB, and Java. It is important to choose a language based on the specific needs of the project and the availability of support and resources.

4. How much time will I spend programming in the lab?

The amount of time spent programming in the lab can vary depending on the nature of the research project and the individual's role in the lab. Some scientists may spend the majority of their time programming, while others may only use programming for specific tasks. It is important to communicate with your team and prioritize tasks to manage your time effectively.

5. Can I use programming to improve my experiments and data analysis?

Yes, programming can greatly improve the efficiency and accuracy of experiments and data analysis. By automating tasks and using advanced algorithms, scientists can reduce human error and gain more insights from their data. Learning programming can be a valuable skill for any scientist to have in the lab.

Similar threads

  • Computing and Technology
Replies
2
Views
530
  • STEM Academic Advising
Replies
4
Views
665
  • STEM Academic Advising
Replies
6
Views
779
Replies
81
Views
4K
  • STEM Academic Advising
Replies
10
Views
1K
Replies
4
Views
781
  • STEM Academic Advising
Replies
2
Views
792
  • Computing and Technology
Replies
16
Views
3K
  • STEM Career Guidance
Replies
16
Views
2K
  • STEM Academic Advising
Replies
3
Views
1K
Back
Top