This unique interdisciplinary curriculum, includes courses (listed below) that cover design, evaluation and maintenance of multifaceted software systems.
More information about Software Engineering undergraduate courses, including fees and grading bases, can be found in the UA Catalog, under Course Descriptions.
Many courses involve the use of diagramming software. Through the Academic Partner Program, University of Arizona is granted license for online diagramming software - Visual Paradigm Online for educational use.
SFWE 101: Introduction to Software Engineering
Units: 3
This course introduces students to the different software development lifecycle (SDLC) phases used in developing, delivering, and maintaining software products. Students will also acquire basic software development skills and understand common terminology used in the software engineering profession. Students will also learn and practice using traditional coding standards/guidelines. Python software development libraries and debugging tools will be explored and used in projects to familiarize students with basic tasks involved in modifying, building, and testing software. The course will also lay the foundation for achieving academic and career success in Software Engineering.
Co-requisite(s): MATH 122B or MATH 125
Usually offered: Fall, Spring
SFWE 101 Syllabus (PDF)
SFWE 201: Software Engineering Sophomore Colloquium
Units: 1
A colloquium designed to help students explore different career opportunities for Software Engineering professionals. Students will interact and learn from professional software engineers while exploring various roles that software engineers play in solving real engineering problems. The course helps students determine focus areas within the SFWE degree program related to specific application areas of interest. Additionally, students will prepare a professional technically focused resume highlighting their skills and experience. Students will explore strategies on how to secure an internship position in diverse industries prior to completing their BS degrees.
Prerequisite: SFWE 101
Usually offered: Fall, Spring
SFWE 201 Syllabus (PDF)
SFWE 301: Software Requirements Analysis and Test
Units: 3
This course will teach students 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, students will learn how to elicit, analyze, specify, and validate functional and non-functional software requirements. Students will develop software requirements models and specifications that capture the customer/user’s needs. They will also develop test plans and test procedures used in a formal software acceptance test to validate that the developed product meets its requirements as specified. In doing so, students will learn and use basic Java language constructs to implement specified requirements. Additionally, students will also learn how to establish and maintain a software requirement configuration baseline, and the processes used to incorporate subsequent changes, updates, and enhancements to the software requirements over time.
Prerequisite: Advanced standing and ECE 275
Usually offered: Fall
SFWE 301 Syllabus (PDF)
SFWE 302: Software Architecture & Design
Units: 3
This course explores current processes, methods, and tools used in modeling and designing SW systems. Working in teams, students develop a SW design utilizing industry best practices, common design patterns, and modeling tools. They analyze various SW quality attributes in design decision making. Traceability between SW requirements and designs, and ultimately code implementation, is also part of the semester project.
Co-requisite(s): ECE 275
Usually offered: Spring
SFWE 302 Syllabus (PDF)
SFWE 401: Software Assurance & Security
Units: 3
Students learn to develop and utilize secure SW coding standards and defensive programming techniques to ensure that the SW functions in its intended manner; free from coding errors and inadvertent bugs that may have been introduced during development. This course promotes software integrity, security, quality, and reliability in the SW as it is developed and tested. Concurrent with SFWE 501.
Co-requisite(s): ECE 275
Usually offered: Spring
SFWE 401 Syllabus (PDF)
SFWE 402: DevSecOps
Units: 4
Students develop a SW product using a SW DevSecOps workflow approach with common tools used in industry. Using DevSecOps workflows and continuous integration/continuous delivery approaches, students assess if the quality and reliability of the SW is increased. Concurrent with SFWE 502.
Co-requisite(s): ECE 275 recommended prior to enrollment.
Usually offered: Spring
SFWE 402 Syllabus (PDF)
SFWE 403: Software Project Management
Units: 3
Students plan and track the progress of an Agile SW development project using metrics to monitor team performance, predict cost and schedule execution, develop and assess risks/mitigation plans, and measure the quality and maturity/volatility of the software product itself. Concurrent with SFWE 503.
Pre-requisite(s): SFWE 301
Usually offered: Fall
SFWE 403 Syllabus (PDF)
SFWE 407: Foundations of Software Engineering
Units: 3
Students study 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 are 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. Concurrent with SFWE 507.
Pre-requisite(s): SFWE 301
Usually offered: Spring
SFWE 407 Syllabus (PDF)
SFWE 409 Principles of Cloud Computing
Units: 3
Cloud has become a de facto computing infrastructure in many business and research organizations to deliver various user-facing, business and scientific applications to end users. This course will offer the underlying technologies and concepts that create the current cloud computing infrastructure and hands-on experience in designing and implementing modern cloud applications. Concurrent with SFWE 509.
Pre-requisite(s): Advanced Standing: Engineering and (ECE 369A or CSC 252).
SFWE 409 Syllabus (PDF)
SFWE 411: Software for Industrial Control Systems
Units: 3
The increased connectivity due to the rise of the Internet and the growth of smart connected devices (Internet of Things) has brought rapid changes in cyber physical systems operational in many areas including manufacturing, healthcare, transportation, power system, home automation, etc. These changes, dubbed as the Fourth Industrial Revolution (4IR), amalgamate artificial intelligence, advanced robotics, smart sensors, and communication networks, blurring lines between the physical, digital, and biological worlds to automate industrial processes. At the forefront of this revolution are connected Industrial Control Systems (ICS), a group of control systems and associated instrumentation, which include the devices, systems, networks, and controls used to operate and/or automate industrial processes. Concurrent with SFWE 511.
Co-requisite(s): ECE 275, SFWE 401
Usually offered: Fall
SFWE 411 Syllabus (PDF)
SFWE 491: Software Engineering Preceptor
Units: 1
An opportunity for software engineering majors to work in engineering courses/labs with students taking ECE 175, ECE 275, ECE 274A, SFWE 101, CSC 355, SIE 277, or other similar courses (any of these courses may be referred to as "host course"). The students in this course, also known as "preceptors", will help students in a host course set up their software development environments and tools, work on related course projects as defined by the host course instructor, and provide guidance and help with designing, implementing, debugging/integration testing software developed for those projects.
Prerequisite: Department consent is required to enroll in this course.
Usually offered: Fall
SFWE 491 Syllabus (PDF)
Technical Electives
The Software Engineering BS requires completion of at least five pre-approved technical electives. Students choose classes from their tracks:
- Mobile Computing
- Cybersecurity
- Embedded Systems
- AI/Machine Learning
- Algorithm Intense Systems
Advanced Standing
Students must qualify for advanced standing in the College of Engineering before enrolling in upper-division courses.
Advanced Standing in Software Engineering requires a minimum 2.25 cumulative GPA and completion of specific lower division courses. Students must contact the department to apply for advanced standing.