Reza Peyrovian, senior lecturer in the Department of Computer Science at Stevens Institute of Technology, brings an impressive mix of professional experience and teaching expertise to the classroom. Peyrovian’s work at AT&T’s Bell Labs from 1990-2013 — where he ascended to the role of director and lead architect — informs his teaching in computer architecture, algorithm design, operating systems, networks and distributed systems to undergraduates and graduates.
As Peyrovian explains in the interview summary below, he left the corporate world to fulfill his passion for teaching. The interview that follows captures his passion for his subject matter and his skill in explaining complex ideas clearly and comprehensively. Peyrovian is one of the many skilled faculty whom students encounter in the Online Master of Science in Computer Science program at Stevens Institute of Technology.
Teaching From Experience
“One of the good things about this region is that there’s a good number of companies in software development, like Bell Labs, Verizon and others as well. These companies are associated with universities like Stevens and Columbia.
“When I was at Bell Labs, I developed both hardware and software. I was involved in the development of what is called the 1B processor; we built that processor from scratch. It was a major advance in understanding computer architecture, especially for designing fault-tolerant real-time systems. It processed long-distance calls. The processor cost about $2 billion and was deployed across the country on the AT&T network. Later on, I worked to develop the architecture for expanding the memory of that processor.
“I was involved in many aspects of the software, adding features and improving efficiency. I led a large team developing software for the network management of ATM, Frame Relay and IP networks — and later, for cloud computing. So I was also an architect in software development.
“All while I was doing that work, I really missed teaching. The corporate environment and academics are two different worlds. The academic world allows you a lot more freedom to explore. At Bell Labs, you have some freedom, but you still have to have a business case for what you want to do. I had been on the University of Miami faculty before coming to Bell Labs and was ready to get back into the classroom. They needed someone who knew computer architecture; it was a great fit.
“My computer architecture course is really a data structures course. I delve deep into helping students understand how to think about creating data structures. I emphasize a model-fidelity approach as opposed to a problem-solving approach when doing programming and developing a solution to problems. Problem solving depends on developing the right data structures for a given problem. You can’t just put the data in an array or link list, put your head down and start coding. That’s the wrong approach. You have to model it first, to understand the dynamics of the data, how it evolves, where it came from, what are the characteristics. I can provide a lot of real-world examples from my experience; I think students really appreciate and understand that.”
The Past and Future of Telecommunications
“Telecommunications is increasingly being integrated with technologies that originated in the data domain. Data networks and IP-based systems are converging. Today, our telephones use IP networks more than ever before, replacing traditional TDM (Time Division Multiplexing) networks.
These are all getting integrated into one. There was a time when we distinguished between ‘IP telephony’ and the other telephony, but now that distinction has largely disappeared because it’s all integrated. We write and we talk, so we need both, and laptops now provide this; we can talk and write at the same time.
“At Bell Labs, we thought about these issues long ago. I remember a story: they took an early version of the cell phone to the vice presidents and others and told them it would be a huge thing. At the time, the equipment was huge, not portable, so it wasn’t like a modern cell phone. The execs said: ‘No, who needs that? You need a phone in your office and in your home, and people already have those.’
“It took decades for the cell phone to emerge, and when it did, it was to serve areas that didn’t have telephony, that couldn’t have landlines. It was developed for people in the desert. It ran off satellites and it wasn’t very popular. It needed a huge battery and antenna, so it was very big.”
Why Software Developers Need to Understand Hardware
“Hardware is hard. It’s very, very detail-oriented, and there are so many things involved. Too many software developers lack a proper understanding of where their software runs. If a task is written as a subroutine, does it run in the main part of the memory — the static part, which is pretty fast — or does it run in the dynamic part, which is slower?
“This isn’t so important when you’re programming, say, a banking application. But it is important when you build a processor for an airplane, when you need a quick response to everything. You have to make sure to choose the right type of memory to store and run the program so you get the fastest answers.
“A modern airplane has thousands of sensors sending information simultaneously. You have to resolve those and come up with an answer to implement, to move the wing this way or that or to balance the plane by running an engine a little faster or slower.
“Many factors influence programming choices — especially the relationship between how hardware works and how software is designed. If you need to access a massive data set, that can’t reside in the main memory of a computer. It’s going to be sitting out on a network, or on a disk. If it’s on a disk, retrieving it takes time. How do you access it efficiently? What would be the proper block size to import the data?
“Then there are differences in how programming languages are implemented. Java, for instance, is not implemented the same way as C — and that has consequences. In some situations, you don’t want a high-level language; you should use C instead. Not all languages are created equal.”
Nature-Inspired Algorithms
“I don’t think we have anything better than nature in terms of optimization. The way water flows, the way streams are created, the paths they create — there is so much optimization in the natural world. Computing often faces bottlenecks that can slow processes down. Nature frequently offers a great solution. Nature understands better than we do.”
“Take, for example, cuckoo algorithms. They mimic the way the bird puts its egg into a nest. It will put its egg into another bird’s nest. That’s really cuckoo! The bird is not taking care of its own baby. So, if there is no room in the nest for its own egg, it will put its egg in and take another egg out and move it to another nest. It carries the displaced egg until it finds a spot to place it: that’s the goal. It doesn’t break the egg, it doesn’t throw it away. It puts it in another bird’s nest.
“When we map data into an array, collisions occur. That’s similar to the collision of the cuckoo bird colliding its own egg with others. So, what we do instead is create two arrays of different sizes. First, we try to insert data into the first array. If it fits there — if it hashes properly — great. But if that spot is already occupied, we insert the new element and move the displaced element to the second array. Surprisingly, this proves to be a much more efficient way of accomplishing the goal than pulling data by brute force.
“Another example: ants. When ants leave their nest, they mark the ground as they move. That’s how they find their way back.
“When they leave the nest, they start looking at the different paths in front of them, and they choose the path that is traveled most, because that’s the one most likely to lead to food. When more ants go one way, food is usually the reason. That’s why you see so many ants traveling along the same trail. There’s no broadcasting, no internet — just markings on the ground.
“So the algorithm is: take the most-traveled road. Computers can apply the same principle to problems that don’t have polynomial-time solutions. It’s an approach that yields an estimate rather than a perfect answer — but without the ant colony optimization algorithm, these processes would take significantly longer. It’s very effective in route optimizations and solving scheduling problems, and it helps make machine learning more efficient.
“Nature is the source of a lot of optimizations. If we learn from those, we can actually solve some of our problems. We can follow nature’s example — imitate it — rather than following models and applying problem-solving approaches.”
The Importance of Understanding How Things Work
“We have some experts who work for Oracle, which owns Java. They’ve created the Java Collections Framework. Very handy, but too many people don’t understand some of the constructs in it and what it does to the data. You shouldn’t use tools like this as a default because they can actually kill some of the ideas we have for data structures.
“To succeed in computer science, you need to be able to look at things critically. Don’t just accept something because Oracle does it a certain way. That doesn’t necessarily make it the right way. You have to understand your tools and be able to work with them.
“When I teach software development, I always assign a mission-critical system. Our lives are growing more and more dependent on mission-critical systems that run our planes and cell phones; they even perform surgery. People confuse embedded systems with computers, but they are not the same thing. So we might develop software for a self-driving car or a self-driving train. Through that, students learn to get away from computer-centered work and focus on embedded systems. The real world is embedded systems.
“It’s also critical to master algorithms. Algorithms are our rescuers. They do the thinking for us. They solve problems fast. Some people think all the algorithms have been invented, that there are no new ones to work on. But, I think it’s time to revisit the old ones, to reload and change the thinking behind them. Those algorithms were looking for precise answers, but nothing is precise. Life is not precise. We have to settle for approximate solutions that can be delivered fast…but approximately.”
Prepare for Success With a Stevens MSCS
Advanced learning builds the skills and insights required to understand not just the how but also the why of computing. An Online Master of Science in Computer Science at Stevens Institute of Technology can help you develop both. Contact an enrollment advisor to learn more about the program and the application process. If you’re ready to apply, start your online application today.