Rose-Hulman Institute of TechnologyWebsiteAcademic Catalog
Computer Science and Software EngineeringDepartment Website
BS Degree in Software Engineeringsource 1ABET
CS Courses
- Introduction to Software DevelopmentCSSE 120 (4)introCSSE 120: Introduction to Software Development
An introduction to programming with an emphasis on problem solving. Problems may include visualizing data, interfacing with external hardware or solving problems from a variety of engineering disciplines. Programming concepts covered include data types, variables, control structures, arrays, and data I/O. Software development concepts covered include testing, debugging, incremental development, understanding requirements, and version control systems.
- Introduction to Systems ProgrammingCSSE 132 (4)sysCSSE 132: Introduction to Systems Programming
Provides students with understanding of computer system level issues and their impact on the design and use of computer systems. Students will study low-level programming (assembly) and memory operations, representation of various types of data and programs in memory, and resource/efficiency trade-offs. System requirements such as resource management, security, communication and synchronization are studied and basic systems tools for these tasks are implemented. Course topics will be explored using a variety of hands-on assignments and projects.
- Object-Oriented Software DevelopmentCSSE 220 (4)introCSSE 220: Object-Oriented Software Development
Object-oriented programming concepts, including the use of inheritance, interfaces, polymorphism, abstract data types, and encapsulation to enable software reuse and assist in software maintenance. Recursion, GUIs and event handing. Use of common object-based data structures, including stacks, queues, lists, trees, sets, maps, and hash tables. Space/time efficiency analysis. Testing. Introduction to UML.
- Data Structures and Algorithm AnalysisCSSE 230 (4)introCSSE 230: Data Structures and Algorithm Analysis
This course reinforces and extends students’ ability to independently design, develop, and debug object-oriented software that uses correct, clear, and efficient algorithms and data structures. Students study and implement classical data structures such as list, stack, queue, tree, priority queue, hash table, graph, set, and dictionary. Formal efficiency analysis is used to evaluate the complexity of algorithms for these data structures. Students gain proficiency in writing recursive methods. Students design and implement software individually.
- Computer Architecture ICSSE 232 (4)sysCSSE 232: Computer Architecture I
Computer instruction set architecture and implementation. Specific topics include historical perspectives, performance evaluation, computer organization, instruction formats, addressing modes, computer arithmetic, single-cycle and multi-cycle data paths, and processor control. Assembly language programming is used as a means of exploring instruction set architectures. The final project involves the complete design and implementation of a miniscule instruction set processor.
- Introduction to Web ProgrammingCSSE 280 (4)sysCSSE 280: Introduction to Web Programming
Introduction to the client-side and server-side mechanisms for creating dynamic web applications with persistent data storage. Browser-server interaction via HTTP. Static web page creation using current markup and styling languages. Client-side programming with modern scripting languages and the DOM. Server-side programming with emerging web programming languages and frameworks. Persistent data storage with a state-of-the-art database management system. Asynchronous client-server communication via HTTP requests. Development and consumption of REST APIs. Deployment of web applications to cloud platforms or platform as a service providers. Security considerations. This course provides breadth of knowledge of many tools/technologies rather than deep knowledge of any particular tool/technology. No previous experience with Web development is required.
- Programming Language ConceptsCSSE 304 (4)plsCSSE 304: Programming Language Concepts
Syntax and semantics of programming languages. Grammars, parsing, data types, control flow, parameter passing, run-time storage management, binding times, functional programming and procedural abstraction, syntactic extensions, continuations, language design and evaluation. Students will explore several language features by writing an interpreter that implements them.
- Operating SystemsCSSE 332 (4)sysCSSE 332: Operating Systems
Students learn fundamental concepts of modern operating systems by studying how and why operating systems have evolved. Topics include CPU scheduling, process synchronization, memory management, file systems, I/O systems, privacy and security, and performance evaluation. Students implement parts of an operating system as a means of exploring the details of some of these topics.
- Database SystemsCSSE 333 (4)sysCSSE 333: Database Systems
Relational database systems, with emphasis on entity relationship diagrams for data modeling. Properties and roles of transactions. SQL for data definition and data manipulation. Use of contemporary API's for access to the database. Enterprise examples provided from several application domains. The influence of design on the use of indexes, views, sequences, joins, and triggers. Physical level data structures: B+ trees and RAID. Survey of object databases.
- Software Requirements EngineeringCSSE 371 (4)softengCSSE 371: Software Requirements Engineering
Basic concepts and principles of software requirements engineering, its tools and techniques, and methods for modeling software systems. Topics include requirements elicitation, prototyping, functional and non-functional requirements, object-oriented techniques, and requirements tracking.
- Software Project ManagementCSSE 372 (4)softengCSSE 372: Software Project Management
Major issues and techniques of project management. Project evaluation and selection, scope management, team building, stakeholder management, risk assessment, scheduling, quality, rework, negotiation, and conflict management. Professional issues including career planning, lifelong learning, software engineering ethics, and the licensing and certification of software professionals.
- Formal Methods in Specification and DesignCSSE 373 (4)softengCSSE 373: Formal Methods in Specification and Design
Introduction to the use of mathematical models of software systems for their specification and validation. Topics include finite state machine models, models of concurrent systems, verification of models, and limitations of these techniques.
- Software Construction and EvolutionCSSE 375 (4)softengCSSE 375: Software Construction and Evolution
Issues, methods and techniques associated with constructing software. Topics include detailed design methods and notations, implementation tools, coding standards and styles, peer review techniques, and maintenance issues.
- Software Quality AssuranceCSSE 376 (4)softengCSSE 376: Software Quality Assurance
Theory and practice of determining whether a product conforms to its specification and intended use. Topics include software quality assurance methods, test plans and strategies, unit level and system level testing, software reliability, peer review methods, and configuration control responsibilities in quality assurance.
- Software ArchitectureCSSE 477 (4)softengCSSE 477: Software Architecture
This is a second course in the architecture and design of complete software systems, building on components and patterns. Topics include architectural principles and alternatives, design documentation, relationships between levels of abstraction, theory and practice of human interface design, creating systems which can evolve, choosing software sources and strategies, prototyping and documenting designs, and employing patterns for reuse.
- Senior Capstone Project ICSSE 497 (4)capstoneCSSE 497: Senior Capstone Project I
For a capstone experience, students work on a team to complete a three-term software engineering project for an approved client. Students choose from two approaches to complete their capstone: 1) Develop a substantive software product, using defensible software processes. The teams focus on delivering key software development, administrative, and user artifacts to the client. Tasks include project planning, risk analysis, use of standards, prototyping, configuration management, quality assurance, project reviews and reports, team management and organization, copyright, liability, and handling project failure. 2) Investigate a substantive software product or engineering process problem, using a defensible and documented research approach. Tasks include problem analysis, developing alternative solutions, evaluating the solutions via prototyping and iterative processes of investigation, comparing the potential solutions, recording the investigation experience in a research report, and delivering the research artifacts to the client.
- Senior Capstone Project IICSSE 498 (4)capstoneCSSE 498: Senior Capstone Project II
For a capstone experience, students work on a team to complete a three-term software engineering project for an approved client. Students choose from two approaches to complete their capstone: 1) Develop a substantive software product, using defensible software processes. The teams focus on delivering key software development, administrative, and user artifacts to the client. Tasks include project planning, risk analysis, use of standards, prototyping, configuration management, quality assurance, project reviews and reports, team management and organization, copyright, liability, and handling project failure. 2) Investigate a substantive software product or engineering process problem, using a defensible and documented research approach. Tasks include problem analysis, developing alternative solutions, evaluating the solutions via prototyping and iterative processes of investigation, comparing the potential solutions, recording the investigation experience in a research report, and delivering the research artifacts to the client.
- Senior Capstone Project IIICSSE 499 (4)capstoneCSSE 499: Senior Capstone Project III
For a capstone experience, students work on a team to complete a three-term software engineering project for an approved client. Students choose from two approaches to complete their capstone: 1) Develop a substantive software product, using defensible software processes. The teams focus on delivering key software development, administrative, and user artifacts to the client. Tasks include project planning, risk analysis, use of standards, prototyping, configuration management, quality assurance, project reviews and reports, team management and organization, copyright, liability, and handling project failure. 2) Investigate a substantive software product or engineering process problem, using a defensible and documented research approach. Tasks include problem analysis, developing alternative solutions, evaluating the solutions via prototyping and iterative processes of investigation, comparing the potential solutions, recording the investigation experience in a research report, and delivering the research artifacts to the client.
Math/Stat Courses
- Calculus IMA 111 (5)mathMA 111: Calculus I
Calculus and analytic geometry in the plane. Algebraic and transcendental functions. Limits and continuity. Differentiation, geometric and physical interpretations of the derivative, Newton’s method. Introduction to integration and the Fundamental Theorem of Calculus. A student cannot earn credit for both MA 105 and MA 111.
- Calculus IIMA 112 (5)mathMA 112: Calculus II
Techniques of integration, numerical integration, applications of integration. L’Hopital’s rule and improper integrals. Separable first order differential equations, applications of separable first order differential equations. Series of constants, power series, Taylor polynomials, Taylor and McLaurin series.
- Calculus IIIMA 113 (5)mathMA 113: Calculus III
Vectors and parametric equations in three dimensions. Functions of several variables, partial derivatives, maxima and minima of functions of several variables, multiple integrals, and other coordinate systems. Applications of partial derivatives and multiple integrals.
- Matrix Algebra & Differential Equations IMA 221 (4)mathMA 221: Matrix Algebra & Differential Equations I
First order scalar differential equations including basic solution techniques and numerical methods. Second order linear, constant coefficient differential equations, including both the homogeneous and non-homogeneous cases. Basic matrix algebra with emphasis on understanding systems of linear equations from algebraic and geometric viewpoints, and eigenvalues and eigenvectors. Introduction to complex arithmetic. Applications to problems in science and engineering.
- Introduction to ProofsMA 276 (4)mathMA 276: Introduction to Proofs
Introduction to writing mathematical proofs. Logic: direct proof, contradiction, contrapositive, counterexamples. Induction. Recursion. Sets: relations (order, equivalence), functions. Properties of infinite sets. Basic number theory. Important preparation for further courses in theoretical mathematics.
- CombinatoricsMA 374 (4)mathMA 374: Combinatorics
A first course in combinatorics. Basic counting principles, permutations, combinations. Combinatorial proof. The pigeonhole principle. The principle of inclusion/exclusion. Generating functions. Recurrence relations. Additional topics in combinatorics, which may include permutation groups and Burnside's Lemma, Polya enumeration, multivariate generating functions, combinatorial designs, Ramsey theory, order relations, or other topics at the discretion of the instructor.
- Introduction to Probability with Applications to StatisticsMA 381 (4)mathMA 381: Introduction to Probability with Applications to Statistics
Introduction to probability theory; axioms of probability, sample spaces, and probability laws (including conditional probabilities). Univariate random variables (discrete and continuous) and their expectations including these distributions: binomial, Poisson, geometric, uniform, exponential, and normal. Introduction to moment generating functions. Introduction to jointly distributed random variables. Univariate and joint transformations of random variables. The distribution of linear combinations of random variables and an introduction to the Central Limit Theorem. Applications of probability to statistics.
- Mathematics Elective
Engineering Courses
- Introduction to Digital SystemsECE 233 (4)engrECE 233: Introduction to Digital Systems
Number systems, Binary arithmetic, logic gates, forming logic circuits. Boolean algebra, Karnaugh maps. Propagation delay, hazards, common Combinational logic circuits, structures, and design. Contraction, latches, flip-flops, finite state machines, counters, Sequential circuit timing, and designing Sequential circuits. Register design, control and datapath design. Basic computer architecture, including memory. Integral laboratory.
Science Courses
- General Chemistry ICHEM 111 (3)sciCHEM 111: General Chemistry I
Topics include stoichiometry, nomenclature, phases, and writing balanced chemical equations. Quantum theory is introduced in relation to chemical applications. Atomic structure is introduced. Bonding principles and molecular structure are discussed in terms of Lewis Dot Structures, Valence Bond Theory, VSEPR Theory, Hybridization, and Molecular Orbital Theory.
Other Courses
- Technical & Professional CommunicationENGL H290 (4)communicationENGL H290: Technical & Professional Communication
Provides students with instruction and practice in analyzing contexts, audiences, and genres; crafting documents to meet the demands and constraints of professional situations; integrating all stages of the writing process; and collaborating effectively within and across teams.
- 3 × Free Elective
Software Engineering Program Educational Objectives
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:
- an ability to identify, formulate, and solve complex engineering problems by applying principles of engineering, science, and mathematics
- an ability to apply engineering design to produce solutions that meet specified needs with consideration of public health, safety, and welfare, as well as global, cultural, social, environmental, and economic factors
- an ability to communicate effectively with a range of audiences
- an ability to recognize ethical and professional responsibilities in engineering situations and make informed judgments, which must consider the impact of engineering solutions in global, economic, environmental, and societal contexts
- an ability to function effectively on a team whose members together provide leadership, create a collaborative and inclusive environment, establish goals, plan tasks, and meet objectives
- an ability to develop and conduct appropriate experimentation, analyze and interpret data, and use engineering judgment to draw conclusions
- an ability to acquire and apply new knowledge as needed, using appropriate learning strategies.