Building a Stronger Foundation in Software Development

Physicist Timothy Prisk turns piecemeal programming experience into a systematic skill set for scientific research
Image
Timothy Prisk smiling at the camera, wearing glasses and a light blue button-up shirt against a gray background.

As a scientist, Timothy Prisk’s work with programming has long been part of the job. But learning it had mostly happened as the need arose.

A low-temperature physicist by training, Timothy earned his doctorate in physics from Indiana University and built a career as a research scientist at government laboratories, including National Institute of Standards and Technology and Lawrence Livermore National Laboratory. Along the way, he picked up Python skills during his education and research and even experimented with C as a hobby, programming for vintage video game systems.

But as computing became increasingly important to his scientific work, Timothy recognized something was missing.

“When I began the Advanced Program in Software Development, my programming skills and computer science knowledge were relatively piecemeal,” he reflects. “My goal in starting this program was to build a solid foundation in both good programming techniques and the fundamental notions of computer science.”

The curriculum was exactly what I was looking for. It offered solid knowledge of modern programming techniques and languages, as well as principles of good software design.

Replacing Ad Hoc Learning With a Systematic Approach

Timothy knew firsthand how essential computing had become to modern scientific research. What he wanted was a more deliberate way to develop those skills.

“I could feel the gap in my own professional abilities,” he says. “It seemed worthwhile to fill this gap in a systematic way rather than continuing to learn on an ad hoc basis.

“The curriculum was exactly what I was looking for,” Timothy enthuses. “It offered solid knowledge of modern programming techniques and languages, as well as principles of good software design.”

Our courses also gave him practical exposure to machine-learning technologies—including Spark and TensorFlow—an opportunity that allowed him to “to understand how AI tools work under the hood,” he adds. Other courses of note included C++ Programming and Java: Discovering Its Power.

One principle in particular transformed the way Timothy approaches programming: the C++ Core Guideline to “express ideas directly in code.”

“When writing a program, a good place to start is a conceptual map of the problem that you would like to solve,” he continues. “Object-oriented programming then lets you construct domain-specific data types that mirror the way a person actually conceives of the subject.”

Professionally, the program helped close a knowledge gap that I had been aware of for a long time.

Putting Software Skills to Work in Fusion Energy

Timothy completed the program online while working full time, taking advantage of self-paced options that allowed him to revisit challenging material. Today, he is a cryogenic layering physicist at fusion energy startup Pacific Fusion.

His research involves growing and characterizing single crystals composed of deuterium and tritium for an inertial fusion energy system. That highly specialized experimental work also demands extensive computing—from data analysis and visualization to simulation and hardware control.

The difference is that Timothy now has the foundation to build more of the tools he needs himself.

“The program expanded my professional toolkit,” he says. “Having some training in software development enables me to create the computing tools that I need.”

Recently, he developed a Python program to control experimental equipment by integrating multiple pieces of hardware and instrumentation into a single real-time control system.

“This accelerated the project considerably and streamlined the workflow,” Timothy describes. “Previously, I would have had to ask colleagues to assist me with this or operate every aspect of the apparatus manually.”

He also regularly applies concepts such as parallelism, dividing large scientific computations among multiple processors so operations can be performed simultaneously.

A Foundation for What Comes Next

For Timothy, completing the program wasn’t about changing careers. It was about becoming better equipped for the increasingly computational nature of his existing one.

“Professionally, the program helped close a knowledge gap that I had been aware of for a long time,” he says. “Programming skills are important to both experimental and theoretical research, and having a proper foundation makes one better equipped to contribute.”

That foundation is especially important in an era of AI-assisted development. While Timothy sees AI as useful for tasks such as generating boilerplate code, navigating unfamiliar libraries, debugging and creating automated tests, he emphasizes the word “assist.”

“Being an effective programmer requires a firm grasp of computer science principles and practical experience writing good code,” he says.

Looking ahead, Timothy hopes to move further into high-performance scientific computing, where his growing expertise will be directly applicable.

His advice for other working professionals tackling an ambitious program is appropriately methodical: “A slow, steady and consistent burn is what ultimately leads to success.”

DEEPEN YOUR SKILLS

Advanced Program in Software Development

10 SEMESTER UNITS

CLASSROOM OR ONLINE

Learn More

STAY UP TO DATE

Learn more about courses and trends in this area.