Bachelor of Science in Software Engineering
As software becomes ever more common in everything from airplanes to appliances, there is an increasing demand for engineering professionals who can develop high-quality, cost-effective software systems. The BS in software engineering combines traditional computer science and engineering with specialized course work in software engineering. This software development degree encompasses technical issues affecting software architecture, design, and implementation as well as process issues that address project management, planning, quality assurance, and product maintenance. Students are prepared for immediate employment and long-term professional growth in a range of software development organizations.
Students learn principles, methods, and techniques for the construction of complex and evolving software systems. The major encompasses technical issues affecting software architecture, design, and implementation as well as process issues that address project management, planning, quality assurance, and product maintenance. Upon graduation, students are prepared for immediate employment and long-term professional growth in software development organizations.
We offer a challenging undergraduate program that prepares students for the demands and challenges of the software industry. The undergraduate degree consists of both core and elective courses that focus on the software engineering lifecycle. In addition, each student must complete a senior project on a team of four or five students.
Plan of Study
The software engineering program has four key elements: engineering design, software product development, teamwork, and communication. The curriculum ensures that the student's coursework balances between software design principles and software process practices. In every course, teamwork is emphasized with a significant part of the final grade being based on team project activities. By the time our students start their senior project, they will have worked on 20 to 25 different student teams in their software engineering courses. Software engineering students also develop their communication skills. In every course, they will be preparing engineering documentation, such as requirements documents, design documents, project plans, burndown charts, and software test plans. Also, at the end of each project cycle, the students make oral presentations on their work and receive critique from the instructor and other students in the class.
The software engineering program focuses on developing skills to:
- Model and analyze proposed and existing software systems, especially through the use of discrete mathematics and statistics.
- Apply quality principles to the definition of software systems and processes.
- Analyze and design complex software systems using contemporary principles such as cohesion and coupling, abstraction and encapsulation, design patterns, frameworks, and architectural styles.
- Apply contemporary software engineering methods to planning, management, and development of software systems.
- Accurately communicate technical material related to all phases of the software life cycle via concise and correct documents, graphics and oral presentations.
- Work in small teams to develop a software system. This includes the ability to assume distinct operational roles (e.g., configuration management, quality assurance) in addition to design and implementation.
- Assess the social, environmental, and cultural factors arising from existing software systems as well as potential risks of proposed systems with a clear understanding of the ethical and professional responsibilities necessary for different software product lines.
- Relate principles of software engineering to at least one application domain where those principles can be applied.
- Explore new topics in software engineering or related application domains with limited oversight and input from faculty or mentors.
- Rapidly learn, assess, and adapt to new languages, environments, and paradigms for software development.
With the skills obtained in our program, software engineering students will be able to design and build quality software solutions that meet the customer's requirements, are delivered on time, without defects, and within budget.
An important component of the curriculum is the complementary course work in related disciplines. As with other engineering fields, mathematics and the natural sciences are fundamental. In addition, students must complete courses in related fields of engineering, business, or science. Two engineering electives, plus a three-course sequence in an application domain, enable students to connect software engineering principles to application areas. A required course in economics or finance bridges software engineering with the realities of the business environment.
Students are required to complete 40 weeks of cooperative education prior to graduation. Students typically begin co-op in their third year of study, alternating semesters of study on campus with co-op blocks. To ensure that co-op is integrated with the curriculum, students must complete their final co-op block prior to taking Software Engineering Project I.
Students also complete general education courses in the liberal arts to develop a sense of professionalism and social responsibility in the technical world.
Engineering Electives
Students may choose engineering electives from software engineering, computer science, or majors in the Kate Gleason College of Engineering. Additional rules and restrictions are listed in the curriculum section.
Senior Design Project
A two-course senior design project helps students synthesize and apply the knowledge and experience they have gained in classes and on co-op assignments to an industry-sponsored project. Organizations with challenging technical problems frequently contact faculty seeking assistance in defining a solution. Many of these issues find their resolution via the work of the software engineering senior project teams.
In the first course, students organize themselves into teams, based on the number and complexity of the projects available. The bulk of the semester is devoted to requirements elicitation and architectural design, but also may include detailed design, prototyping, and even production, depending on the nature of the project. In addition, teams are responsible for assigning specific roles to team members and developing a project plan that includes scheduled concrete milestones. In the second course, students work on the tactical issues of development and deployment. Teams complete the construction and integration of their project, conduct testing, and demonstrate the final outcome to faculty and the sponsoring organization.
Organizations that have sponsored senior projects include Wegmans, Paychex, Moog, Northrup Grumman Security Systems, Intel Corp., Webster Financial Group, Oracle, Nokia, IBM Thomas Watson Research, PaeTec Communications, Alstom Signaling Inc., RIT Information and Technology Services, Harris Corporation (RF Communications Division), the Air Force Research Laboratory, Excellus Blue Cross Blue Shield, Telecom Consulting Group NE Corp. (TCN), and Videk.
Laboratories
Equipped with the latest technology, the software engineering department’s facilities include three student instructional studio labs, a specialized embedded systems lab, and a collaboration lab. In addition, freshmen are encouraged to take advantage of the department’s mentoring lab. Staffed by advanced software engineering students, this lab offers new students an environment where they can learn from those who have successfully fulfilled most of the major's academic requirements.
Students enrolled in software engineering courses also can use any of the department’s eleven team rooms. Equipped with a computer and projector, network connections, a meeting table, seating for six, and generous whiteboard space, these rooms support the department’s commitment to teamwork, both inside and outside the classroom.
https://www.rit.edu/study/software-engineering-bs