Software engineering is the creation of software using a process similar to other engineering disciplines. It allows for software to be reliable and developed within time and cost estimates. The software engineering curriculum prepares students for a career in reliable, economical software development.

Programming is only one phase (construction) of software engineering. There are many other aspects of the software engineering process, such as requirements definition, architectural design, and quality assurance, which need to be applied in order to develop reliable software on time and within budget constraints. The software engineering curriculum provides students a solid background in both the theory and practice of all phases in the software engineering process, beginning with their first course of study in the Department of Computer Science and Software Engineering, and continuing to the end of the senior year.

Since software is a non-physical product developed and executed on computers, the software engineering curriculum has computer science as its primary engineering science. The computer science courses taken by software engineering majors include the study of algorithms, data structures, database concepts, computer architecture, programming languages and operating systems. Software engineering majors also complete important courses in other closely related fields, such as discrete mathematics, digital logic design, and engineering statistics.

Coverage of software engineering topics begins in a three-term introduction to software development during the freshman and sophomore years. This study continues with coverage of core software engineering areas in the junior year, including software requirements, software architecture, software design, software project management, software construction, software maintenance, software evolution, software quality assurance, and formal methods in software specification and design. All of these courses include individual and team projects relevant to that particular area of software engineering. These projects generally include both written and oral presentations, building upon a technical communication course which introduces the student to the skills necessary for this important aspect of being a software professional. Throughout the senior year, a capstone team project develops and delivers software for a “real-world” client, which is put on display locally at a public exposition.

Throughout society, software exists for a wide variety of application domain areas. Each student is required to take at least three courses in a particular application domain, so that RHIT software engineering graduates can more effectively apply the software engineering principles they learn to that domain area. Students can choose from a variety of domain areas, including engineering, scientific and commercial applications.

Courses in various computer science topics such as computer graphics, artificial intelligence, computer networks, computer vision, web-based information systems, and cryptography are among those available as advanced electives. In addition, free elective courses allow students to tailor their undergraduate education to their specific goals.

The department has its own local area network. This network is connected to the campus-wide network and the Internet. Laboratory machines are mostly Sun Ultra workstations. Software engineering majors have unlimited access to the department’s laboratories. Software engineering students are frequently employed by the computing center as user consultants and by the department as system managers and course assistants.

The student chapter of the Association for Computing Machinery provides seminars and other technical activities throughout the year. The national honor society in the computing and engineering disciplines, Upsilon Pi Epsilon and Tau Beta Pi, both have chapters at Rose-Hulman. Software engineering majors are also eligible to join the Order of the Engineer, which focuses on the ethical and professional responsibilities of an engineer, during the spring of their last year of study.

Software Engineering Program Educational Objectives

The software engineering program prepares its graduates for many types of careers in the computing industry as well as for graduate study in software engineering and in closely related disciplines. Within a few years after completing the software engineering degree program, our graduates will:

  • Advance beyond their entry-level position to more responsible roles, or progress towards completion of advanced degree(s).
  • Continue to keep pace with advancements in their disciplines, and develop professionally in response to changes in roles and responsibilities.
  • Demonstrate that they can collaborate professionally within or outside of their disciplines at local, regional, national, or international levels.
  • Contribute to the body of computing products, services, or knowledge.

 

Software Engineering Student Outcomes
By the time students graduate with a Software Engineering degree from Rose-Hulman, they will be able to:

  • Apply software engineering theory, principles, tools and processes, as well as the theory and principles of computer science and mathematics, to the development and maintenance of complex, scalable software systems.
  • Design and experiment with software prototypes
  • Select and use software metrics
  • Participate productively on software project teams involving students from a variety of disciplines
  • Communicate effectively through oral and written reports, and software documentation
  • Elicit, analyze and specify software requirements through a productive working relationship with project stakeholders
  • Evaluate the business and impact of potential solutions to software engineering problems in a global society, using their knowledge of contemporary issues
  • Explain the impact of globalization on computing and software engineering
  • Interact professionally with colleagues or clients located abroad and overcome challenges that arise from geographic distance, cultural differences, and multiple languages in the context of computing and software engineering
  • Apply appropriate codes of ethics and professional conduct to the solution of software engineering problems
  • Identify resources for determining legal and ethical practices in other countries as they apply to computing and software engineering
  • Recognize the need for, and engage in, lifelong learning
  • Demonstrate software engineering application domain knowledge

The Computer Science and Software Engineering faculty strives to maintain an open atmosphere that encourages mutual respect and support as well as learning and sharing of knowledge.

The software engineering program is accredited by the Engineering Accreditation Commission of ABET,www.abet.org

SOFTWARE ENGINEERING

Freshman Year
Fall Term

Credit

CSSE 120 Introduction to Software Development 4
MA 111 Calculus I 5
PH 111 Physics I 4
RH 131 Rhetoric & Composition  4
CLSK 100 College and Life Skills 1
  Total 18
 
Winter Term

Credit

CSSE 220 Object-Oriented Software Development 4
MA 112 Calculus II 5
PH 112 Physics II 4
HSS Elective 4
  Total 17
   
Spring Term

Credit

CSSE 132 Introduction to Computer Systems Design 4
MA 113 Calculus III 5
HSS Elective 4
Science Elective 4
  Total 17
Sophomore Year
Fall Term

Credit

CHEM 111 General Chemistry I 4
CSSE 232 Computer Architecture I  4
MA 212 Matrix Algebra and Systems of Differential Equations 4
MA 275
Discrete & Combinatorial Algebra I 4
  Total 16
 
Winter Term

Credit

CSSE 230 Data Structures and Algorithm Analysis 4
CSSE 333 Database Systems 4
MA 375

Discrete & Combinatorial Algebra II
4
  Domain track course 4
  Total 16
 
Spring Term

Credit

CSSE 304 Programming Lang. Con 4
CSSE 376 Software Quality Assurance 4
MA Elective 4
RH 330 Technical and Professional
Communication
4
  Total 16
Junior Year
Fall Term Credit
CSSE 371 Software Requirements
Engineering
4
CSSE 372 Software Project Management 4
MA 381 Introduction to Probability with Statistical Applications  4
  Domain track course 4
  Total 16
 
Winter Term

Credit

CSSE 332 Operating Systems 4
CSSE 374 Software Design 4
HSS Elective 4
  Domain track course 4
  Total 16
 
Spring Term

Credit

CSSE 373 Formal Methods in Specification and Design 4
CSSE 375 Software Construction and Evolution 4
HSS Elective 4
  Domain track course
or free elective
4
  Total 16
Senior Year
Fall Term

Credit

CSSE 477 Software Architecture 4
CSSE 497 Senior Capstone Project I  4
HSS Elective 4
  Domain track course
or free elective
4
  Total 16
 
Winter Term

Credit

CSSE 498 Senior Capstone Project II 4
CSSE Elective 4
HSS Elective 4
Free Elective 4
  Total 16
 
Spring Term

Credit

CSSE 499 Senior Capstone Project III 4
HSS Elective 4
Free Elective 4
  Total 12
 
 

Total credits required: 192

Summary of graduation requirements for the software engineering major

To complete the major in software engineering a student must complete the following:

  1. All required courses listed by number in the schedule of courses above: CSSE120, CSSE132, CSSE220, CSSE230, CSSE232, CSSE304, CSSE332, CSSE333, CSSE371, CSSE372, CSSE373, CSSE374, CSSE375, CSSE376, CSSE477, CSSE497, CSSE498, CSSE499; MA111, MA112, MA113, MA212, MA275, MA375, MA381; PH111, PH112, CHEM111; RH 131, RH330; CLSK100.

  2. One additional CSSE elective course except CSSE 325, CSSE 473, CSSE 474, and CSSE 479. In addition, use of CSSE 49x to satisfy the CSSE elective requires approval of the Director of Software Engineering or the CSSE department head.

  3. A Domain Track set of courses. All of the courses for each of the Domain Tracks is listed on the CSSE website. That site also explains the procedures and deadlines by which a student must declare their Domain Track.

  1. Four additional credits of courses offered by the Department of Mathematics excluding MA351 – MA356. The student’s academic advisor must approve the course used to satisfy this requirement. Where appropriate, a course in the student’s application domain track can be used to satisfy this requirement.

  2. Four credits of science electives, which can be any CHEM, GEOL, PH, or AB courses not already required for the software engineering major.

  3. Twenty-eight credits of additional courses offered by the Department of Humanities and Social Sciences; the distribution of these courses must meet the requirements of that department. Where appropriate, one or more courses in the student’s application domain track can be used to satisfy part of this requirement.

  4. Sufficient free elective courses to meet the minimum credit hour requirement of 192 hours for a software engineering major. These courses must have the approval of the student’s academic advisor. Free electives may be selected from any Rose-Hulman course.

Area Minor in Software Engineering

Advisor: Dr. Shawn Bohner

Required Courses

CSSE 120, Introduction to Software Development
CSSE 220, Object-Oriented Software Development
CSSE 230, Data Structures and Algorithm Analysis
CSSE 371, Software Requirements Engineering
CSSE 374, Software Design

Two additional courses in software engineering chosen from CSSE 372, 373, 375, 376, and 477.