Stephen R. Tate - Faculty Homepage

Computer Scientist, Professor, Higher Education Devotee, ...

I have fun with serious work.

Find Out More

What I Do

In theory, theory and practice are the same. In practice, they are not.

Walter Savitch, in Pascal: An Introduction to the Art and Science of Programming (1986)

I have been programming and working with computers since the 1970's, and my path has brought me full-circle, from practice to theory and back to practice again. I started out loving the creativity of programming and the ability to create systems that did what I designed them to do. When I went to college and started studying computer science, I discovered that there are some deep and non-obvious aspects to computing, and those captured my attention – after all, just programming is easy, right? Through graduate school and into my career in academia, I was largely a theoretical computer scientist, looking at the underlying logic and issues that affect how computing works, proving theorems more and more, and writing programs less and less. I worked a lot in the mathematics of cryptography, proposing and proving properties about mathematical functions that could do very cool and esoteric things. In the back of my mind, I wanted these inventions to have practical impact, but I was too busy doing cool math to worry too much about that — surely someone else would do the "easy" job of programming, right?

Recently, however, some of the big and very visible failures in security software have brought me back to programming – no, programming is not easy, particularly when creating the kind of highly complex software that we depend on to keep us secure and protect our privacy. Since 2015, I have been on a mission to make software, and security software in particular, better. I teach students at all levels how to reason about the correctness and quality of their code (and sometimes make them frustrated because I love to find ways to make their programs misbehave). In my research, I look for new automated techniques for both finding bugs in code and for producing high-assurance software. Whether you are a student just starting out, an advanced student looking for research projects, or an established researcher looking for collaboration, I invite you to join me on this mission. Let's make software more secure!

Like almost all university faculty, my work is categorized into the three standard faculty duties: teaching, research, and service. More about each is below.


I have created and taught many classes at both the undergraduate and graduate levels, including a 100-level CS Principles class, data structures and algorithms classes, and various cryptography and security classes. I also regularly offer special topics classes in cutting-edge areas of interest, and in the past have offered topics classes in software security, trusted computing, and algorithmic problem solving.


Class for Fall 2023


CSC 362 (Modern Cryptography)

More on Teaching...


I've been doing research in computer science for over 30 years, and I have done work in a wide range of areas, including complexity theory, algorithms, data compression, computer security, and cryptography. Currently I work on ways to make security and cryptographic software more reliable, robust, and secure.

More on Research...


I'm a true believer in higher education – it's not just a job for me, but a calling to make universities the strongest possible centers of knowledge and discovery. Universities improve the world, on a large scale through the discoveries we make, and on an individual scale through the students who we help grow. I served as Department Head for UNCG's Department of Computer Science from its founding in 2007 until 2019, where I led the department from its creation to one of the most in-demand and thriving departments at UNCG, serving around 500 computer science majors. We have had remarkable successes as a department, and this has been a rewarding chapter in my career. I am now returning to spending more time focused on computer science research and student development, and am always looking for ways to make the university stronger.

About Me

I am a Professor in the Department of Computer Science at the University of North Carolina at Greensboro. I came to UNCG in 2007 to start the Department of Computer Science, as the computer science programs (bachelor's and master's) were splitting from the former Department of Mathematical Sciences. I have bachelor's degrees in Computer Science, Electrical Engineering, and Mathematics from Vanderbilt University. I received my Ph.D. in Computer Science from Duke University in 1991, followed by a 2 year postdoc working on data compression algorithms for NASA.

Before joining UNCG, I was on the faculty at The University of North Texas for 14 years, in what was originally the Department of Computer Science and later became the Department of Computer Science and Engineering. At UNT I created and directed the Center for Information and Computer Security, which won recognition by the National Security Agency and the Department of Homeland Security as a National Center of Academic Excellence in Information Assurance Education. At UNT I also served as Director of Graduate Studies from 1996 to 2001, managing the department's masters and doctoral programs. In addition to my current work in software security, I have worked and published in several other areas, including cryptography, computer security, algebraic algorithms, circuit complexity, online algorithms, and data compression, with papers appearing in many leading conferences and journals.

My full professional background is in my vita, which includes a list of major awards and accomplishments.

Contact Information

Want to get in touch with me? I am readily available by email, and I typically respond to e-mails within one work day. Check below for my current office hours if you want to meet in person, or you can email about setting up an appointment. We can also set up a video chat if that's the best way to "meet."

Current Office Hours
Starting Aug 15: Tues/Thurs 3:30-5:00


Department of Computer Science
University of North Carolina at Greensboro
157 Petty Building
Greensboro, NC 27402

Directions and maps

(Main Department Number)