Software Engineering (PhD)
Doctor of Philosophy
Quick Facts
Top 1%
of all Higher-Ed
Institutions
- Center for World University Rankings, 2024
#1
In Best Value Among
Arizona's Public Universities
- Payscale, 2022
The University of Arizona's College of Engineering has launched the Software Engineering PhD degree in response to the high demand for individuals trained in the software engineering discipline. The degree program is critical in driving student success in a rapidly changing world and tackling essential problems at the edges of human endeavor.
As a student graduating with a PhD in Software Engineering, you will be better positioned to develop the skills and mindsets to be leaders in software development, computing, machine learning, ever-increasing automation and connectivity, human and intelligent systems, data science, and network sciences.
Through the PhD program, you'll demonstrate the ability to design, develop, test, integrate, and evaluate software applications/products/systems in diverse computing and engineering domains. You'll also be able to critically analyze and review published research results and other literature related to your area of study. You'll also demonstrate your ability to articulate all aspects of the research in your software engineering specialization area, describe and defend the significance of your work, explain your research methodologies, and summarize your findings.
The global software engineering market alone will be worth $64 billion by 2025, and it is a vital part of a larger industry. Some factors behind this growth include increased automation in multiple sectors, the demand for cloud-based solutions, the Internet of Things, and an increased number of devices that can be used in daily life for convenience. Thus, pursuing a Software Engineering PhD will give you a competitive edge in this fast-growing industry.
No GRE is required for this graduate degree program.
A minor is required for this program and will be determined by the student and advisor.
Students who do not have a degree equivalent to the University of Arizona Bachelor of Science degree in a computing-related program may be admitted into the graduate program but may be required to complete additional graduate-level pre-requisite courses prior to enrolling in some graduate courses.
Proficiency in one or more programming languages OR one to two years of industry experience in a software-related position is required.
*Residents of some U.S. Territories may not be eligible. Please see our Eligibility & State Authorization page for more information.
Courses for this program include:
This course will allow you to explore key principles of a DevSecOps approach to software development. Development (Dev) and operations (Ops) are the union of people, processes, and technology to continually automate and develop higher-quality/more reliable software products faster. Security (Sec) is integrated into a typical DevOps pipeline to address potential security issues in code as soon as possible in the software development lifecycle.
In this course, you will learn how to plan, track, and communicate the status of large-scale software projects to a diverse group of stakeholders. Using modern traditional and Agile software development methodologies and tools and emulating a realistic software development project, students will be immersed in the activities used by industry to develop, manage, and monitor software product development throughout the semester. You’ll learn why planning a software project is important, what constitutes a good plan, how to adapt to the unexpected and unknowns that are likely to occur throughout the project development, and how to track and share the status of the project with your team members, other teams, and the customers/business managers.
Learn how to derive and develop software requirements that are measurable, testable, and lead to a compliant software design and implementation. Using industry best practices and tools, you will learn how to elicit, analyze, specify, and validate functional requirements (what should the software system do) and non-functional software requirements (how should the software system fulfill the functional requirements). You will develop software requirement models and specifications that capture the customer/user's needs.
In this course, you'll explore different architectural styles and patterns and learn to apply modern processes, methods, and tools in architecting, modeling, and designing software systems. They will also learn the importance of developing a sound software architecture as part of the overall software design.
In this course, you will explore the unique aspects and considerations required to develop a large-scale software product in a distributed computing environment. Distributed computing refers to a system where processing and data storage are distributed across multiple devices or systems rather than being handled by a single central device. In a distributed system, each device or system has its own processing capabilities and may also store and manage its own data.
Gain foundational skills and knowledge used by software engineers in diverse industries. The course introduces you to the different software development lifecycle (SDLC) phases used in developing, delivering, and maintaining software products for a wide variety of applications. Common software process models will be introduced, along with developing an understanding of the importance of defining software requirements, developing software architectures and designs, and the various forms of testing that go into delivering reliable and resilient software systems.
This introductory course on cloud computing delves into the fundamental technologies and ideas that make up contemporary cloud computing infrastructure. You'll get hands-on practice using cloud service models (IaaS, PaaS, SaaS, FaaS), virtualization, data centers, cloud management, and essential Linux commands. The course also covers advanced topics such as cloud storage, containers, microservices, serverless computing, cloud security, emerging trends in cloud IoT, mobile clouds, edge computing, and big data processing.
This course introduces the design and implementation of decentralized systems with up-to-date software architecture and relevant development frameworks. Topics include inter-module communication, asynchronous processing, security, concurrency, parallelism, and an overview of contemporary enterprise technology and challenges. The course also dives into the development, infrastructure, best practices, and DevOps practices for monitoring and debugging such systems.
Outcomes
Skills
Earning your Doctor of Philosophy in Software Engineering (PhD) will build core skills, including:
- Agile methodology
- Algorithm design & optimization
- Artificial Intelligence
- Cloud & distributed computing
- Continuous deployment
- Continuous integration
- Cybersecurity practices & standards
- DevSecOps
- Full stack development
- Innovation
- Leadership
- Machine learning algorithms & approaches
- Programming language proficiency
- Research
- Software Development Lifecycle
- Software engineering
Potential Career Paths
Graduates of the Software Engineering PhD program will be prepared to pursue careers in the following fields, among many others: