Software Engineering Minor
- RIT /
- Golisano College of Computing and Information Sciences /
- Academics /
- Software Engineering Minor
Overview for Software Engineering Minor
Students in disciplines with a heavy reliance on software applications may be interested in pursuing a minor in software engineering. The minor provides a broad view of the software engineering landscape including introductory material and fundamentals in design and process. Students deepen their software design skills and learn techniques for working on a productive software engineering team by choosing electives in design or process to gain a deeper understanding of one of these areas, or they may choose to balance their courses for a broad view of both topics.
Notes about this minor:
- The minor is closed to students majoring in software engineering.
- Posting of the minor on the student's academic transcript requires a minimum GPA of 2.0 in the minor.
- Notations may appear in the curriculum chart below outlining pre-requisites, co-requisites, and other curriculum requirements (see footnotes).
- At least nine semester credit hours of the minor must consist of specific courses not required by the student’s degree program.
The plan code for Software Engineering Minor is SOFTENG-MN.
Curriculum for 2024-2025 for Software Engineering Minor
Current Students: See Curriculum Requirements
Course | |
---|---|
Required Courses | |
SWEN-261 | Introduction to Software Engineering An introductory course in software engineering, emphasizing the organizational aspects of software development and software design and implementation by individuals and small teams within a process/product framework. Topics include the software lifecycle, software design, user interface issues, specification and implementation of components, assessing design quality, design reviews and code inspections, software testing, basic support tools, technical communications and system documentation, team-based development. A term-long, team-based project done in a studio format is used to reinforce concepts presented in class. (Prerequisite: CSCI-140 or CSCI-142 or CSCI-242 or GCIS-124 or GCIS-127 or SWEN-124 or CSEC-124 or ISTE-124 or IGME-106 or equivalent course.) Lec/Lab 3 (Fall, Spring). |
SWEN-262 | Engineering of Software Subsystems An introduction to the principles of the foundations of contemporary software design. Topics include software subsystem modeling, design patterns, design tradeoffs, and component-based software development, with a focus on application of these concepts to concrete design problems. The relationship between design and related process issues such as testing, estimation, and maintenance are also discussed. (Prerequisites: SWEN-261 and (SWEN-250 or (CSCI-243 or 4003-334) or CMPE-380 or SOFTENG-MN) or equivalent courses.) Lec/Lab 3 (Fall, Spring). |
SWEN-256 | Software Process and Project Management An introductory course to software process and related software project management issues. Emphasis is on the study, use, evaluation, and improvement of the software development process and related project management. Topics include software development methodologies, software project planning and tracking, change control, software quality assurance, risk management, and software process assessment and improvement. (Prerequisites: SWEN-261 or equivalent course) Lecture 3 (Fall, Spring). |
Electives | |
Choose two courses from the following groups: | |
Design | |
SWEN-331 | Engineering Secure Software Principles and practices forming the foundation for developing secure software systems. Coverage ranges across the entire development lifecycle: requirements, design, implementation and testing. Emphasis is on practices and patterns that reduce or eliminate security breaches in software intensive systems, and on testing systems to expose security weaknesses. (Prerequisites: SWEN-261 and (SWEN-488 or SWEN-498 or SWEN-499 or CSEC-499 or CSCI-488 or CSCI-499 or CMPE-499) or equivalent course.) Studio 3 (Fall, Spring). |
SWEN-342 | Engineering of Concurrent and Distributed Software Systems The principles, practices and patterns applicable to the design and construction of concurrent and distributed software systems. Topics include synchronization, coordination and communication; deadlock, safety and liveness; concurrent and distributed design patterns; analysis of performance; distributed state management. (Prerequisites: SWEN-262 and (SWEN-220 or SWEN-344) or equivalent courses.) Studio 3 (Fall, Spring). |
SWEN-343 | Engineering of Enterprise Software Systems This course addresses architecture-level design of large, enterprise-critical software systems. The course focuses on enterprise-level design patterns and on design approaches for object-oriented and aspect-oriented application containers: encapsulating database access, application distribution, concurrent session management, security, scalability, reliability, web-based user interaction, and the programming models and tools to support system development, integration, testing, and deployment. Hands-on exercises and a team project will reinforce the course concepts and expose students to the complexity of these systems. (Prerequisites: SWEN-262 and (SWEN-220 or SWEN-344) or equivalent courses.) Lec/Lab 3 (Fall, Spring). |
SWEN-440 | Software System Requirements and Architecture Principles and practices related to identifying software system stakeholders, eliciting functional and quality requirements, translating requirements into architectural structures, and analyzing candidate architectures with respect to the requirements. (Prerequisites: SWEN-488 or SWEN-498 or SWEN-499 or CSCI-499 or CSCI-488 or CMPE-499 or CSEC-499 or equivalent courses.
Co-requisites: SWEN-444 or SWEN-445 or equivalent course.) Studio 3 (Fall, Spring). |
SWEN-444 | Human-Centered Requirements and Design This course introduces quantitative models and techniques of human-computer interface analysis, design and evaluation, which are relevant to the software engineering approach of software development. User-focused requirements engineering topics are also covered. Contemporary human computer interaction (HCI) techniques are surveyed, with a focus on when and where they are applicable in the software development process. Students will deliver usable software systems derived from an engineering approach to the application of scientific theory and modeling. Other topics may include usability evaluation design, methods of evaluation, data analysis, social and ethical impacts of usability, prototyping and tools. (Prerequisites: SWEN-262 or equivalent courses.
Co-requisites: STAT-205 or STAT-145 or MATH-251 or equivalent courses.) Lec/Lab 3 (Fall, Spring). |
SWEN-445 | Honors Human-Centered Requirements and Design This course introduces quantitative models and techniques of human-computer interface analysis, design and evaluation, which are relevant to the software engineering approach of software development. User-focused requirements engineering topics are also covered. Contemporary human computer interaction (HCI) techniques are surveyed, with a focus on when and where they are applicable in the software development process. Students will deliver usable software systems derived from an engineering approach to the application of scientific theory and modeling. Other topics may include: usability evaluation design, methods of evaluation, data analysis, social and ethical impacts of usability, prototyping and tools. (Prerequisites: SWEN-262 or equivalent courses.
Co-requisites: STAT-205 or STAT-145 or MATH-251 or equivalent courses.) Lecture 3 (Fall or Spring). |
SWEN-549 | Software Engineering Design Seminar Emerging topics of relevance in software engineering design. (Prerequisites: SWEN-262 and (SWEN-220 or SWEN-344) or equivalent courses.) Lecture 3 (Fall, Spring). |
SWEN-563 | Real-Time and Embedded Systems This course provides a general introduction to real-time and embedded systems. It will introduce a representative family of microcontrollers and require students to program on these devices. Fundamental material on real-time operating systems, such as requirements specification, scheduling algorithms and priority inversion avoidance will be presented. The features of a commercial real-time operating system will be discussed and used for course projects. (Prerequisites: SWEN-340 or CMPE-240 or CSCI-251 or CMPE-380 or ((CPET-201 and CPET-202) or 0618-303) or equivalent course.) Lec/Lab 3 (Fall, Spring). |
SWEN-564 | Modeling of Real-Time Systems This course introduces the modeling of real-time software systems. It takes an engineering approach to the design of these systems by analyzing system models before beginning implementation. UML will be the primary modeling methodology. Non-UML methodologies will also be discussed. Implementations of real-time systems will be developed manually from the models and using automated tools to generate the code. (Prerequisites: CMPE-240 or CSCI-251 or CMPE-380 or SWEN-340 or equivalent course.) Lec/Lab 3 (Spring). |
SWEN-565 | Performance Engineering of Real-Time and Embedded Systems This course discusses issues of performance in real-time and embedded systems. Techniques for profiling the resource usage of a system and for measuring the effect of increasing system requirements will be covered. The control of physical systems will motivate the need for performance tuning of a real-time system. Students will write programs running under a real-time operating system that can maintain control of a physical system. The course will discuss and experiment with performance trade-offs that can be made using hardware-software co-design. (Prerequisites: CMPE-240 or CSCI-251 or CMPE-380 or SWEN-340 or equivalent course.) Lecture 3 (Fall). |
SWEN-567 | Hardware/Software Co-Design for Cryptographic Applications The objective of this course is to establish knowledge and skills necessary for efficient implementations of cryptographic primitives on reconfigurable hardware. Implementation platform will be a field programmable gate array (FPGAs) containing general purpose processor and additional reconfigurable fabric for implementations of custom hardware accelerators. In the studio format students work on team projects that require them to design, and then compare and contrast software, custom FPGA hardware, and hybrid hardware-software co-design implementations of selected cryptographic primitives. (Prerequisite: SWEN-261 and CSCI-462 or equivalent courses.) Studio 3 (Spring). |
Process | |
SWEN-350 | Software Process and Product Quality This course covers advanced topics in software engineering relating to software quality, with processes and metrics being viewed as a means to achieving quality. Quality is interpreted broadly to include product functionality and performance, project schedule and budget, and business objectives. Software metrics help a software organization on two main fronts: quality assessment of its products and processes, and process improvement towards its main goal: the production of successful software artifacts within schedule and budget constraints. (Prerequisites: SWEN-256 and (STAT-205 or STAT-145 or MATH-251) and (SWEN-488 or SWEN-498 or SWEN-499 or CSCI-499 or CSCI-488 or CSEC-499 or CMPE-499) or equivalent courses.) Lecture 3 (Fall, Spring). |
SWEN-356 | Trends in Software Development Processes A course in the exploration of current approaches in planning, executing and managing the project activities performed during the development of a professional software product. Topics include the characteristics of state of the practice development methods, selecting practices best suited based on project context and techniques for refining practices to achieve process improvement. Students work on team projects inclusive of all development life cycle activities to reinforce concepts presented in class. (Prerequisites: SWEN-256 or equivalent course.) Lec/Lab 3 (Fall, Spring). |
SWEN-559 | Software Engineering Process Seminar Emerging topics of relevance in software engineering process. (Prerequisites: SWEN-256 or equivalent course.) Lecture (Fall, Spring). |
Other | |
SWEN-220 | Mathematical Models of Software An introduction to the use of mathematics to model software as part of the software process. Included will be models of software structure and functionality, concurrent and distributed computation, and structured data. (Prerequisites: (MATH-190 or MATH-131) and (CSCI-140, CSCI-142 or CSCI-242) or equivalent courses.) Lecture 3 (Fall, Spring). |
SWEN-340 | Software Design for Computing Systems To design and develop high quality products software engineers need to understand the physical components and systems that are an integral part of these products. This understanding is critical in the fulfillment of non-functional requirements such as performance, reliability and security. This course will provide software engineering students with hardware, computer architecture, and networking domain specific knowledge. Course programming assignments will provide practical experience developing software that interfaces with hardware components and systems. Credit cannot be granted for this course and CMPE-240. (Prerequisites: SWEN-250 or CSCI-243 or equivalent course.) Lecture 3 (Fall, Spring). |
SWEN-344 | Engineering of Web Based Software Systems A course in web engineering, emphasizing organizational aspects of web development, design and implementation by individuals and small teams. Students will be instructed in the proper application of software engineering principles to the creation of web applications. Course topics will include, but not be limited to web usability, accessibility, testing, web services, databases, requirements elicitation and negotiation. A term-long, team-based project done in a studio format is used to reinforce concepts presented in class. (Prerequisite: CSCI-140 or CSCI-142 or CSCI-242 or SWEN-124 or CSEC-124 or GCIS-124 or GCIS-127 or equivalent course.) Lec/Lab 3 (Fall, Spring). |
SWEN-352 | Software Testing Concepts and techniques for testing soft ware and assuring its quality. Topics cover software testing at the unit and system levels; static vs. dynamic analysis; functional testing; inspections; and reliability assessment. (Prerequisites: SWEN-261 or equivalent course) Lecture 3 (Fall, Spring). |
SWEN-514 | Engineering Cloud Software Systems The course focuses on designing and implementing applications using cloud software systems infrastructure and technologies. The course introduces the basic concepts and knowledge on cloud computing systems and application infrastructure. It also briefly introduces key technologies and paradigms related to developing big data applications in the cloud. The course contains a set of related topics which are covered via hands-on class instruction, application development in teams, course materials, and class discussions. Programming projects and demo presentations are required. (Prerequisites: SWEN-262 and (SWEN-220 or SWEN-344) or equivalent courses.) Lec/Lab 3 (Fall). |
SWEN-590 | Software Engineering Seminar Emerging topics of relevance in software engineering. Lecture (Fall, Spring). |
Related News
-
February 24, 2022
YouTube's Captions Insert Explicit Language in Kids' Videos
Wired interviews RIT assistant professor Ashique KhudaBukhsh about his research studying the AI algorithms that create auto-captions on YouTube and Amazon.
-
October 19, 2021
Finding FAST solutions: How university students partnered with FAST Labs on tomorrow’s autonomy technologies
BAE Systems Pulse Magazine features three software engineering students who developed an autonomous search-and-rescue drone system as part of a senior project.
-
October 8, 2021
Golisano College of Computing and Information Sciences celebrates 20th anniversary
To celebrate the 20th anniversary of RIT’s Golisano College of Computing and Information Sciences, the college is holding a series of events throughout the year. GCCIS has evolved into the largest college at RIT with 23 degree programs and advanced certificates in a growing number of computing disciplines. Internationally, GCCIS is highly-ranked for its specialties in game design and development, computer science, cybersecurity, and more.
Contact
- Megan Lehman
- Academic Advisor
- Advising
- Golisano College of Computing and Information Sciences
- 585‑475‑5179
- melics@rit.edu
Department of Software Engineering