Rose-Hulman Institute of TechnologyWebsiteAcademic Catalog
Computer Science and Software EngineeringDepartment Website
BS Degree in Computer Sciencesource 1source 2ABET
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.
- Design and Analysis of AlgorithmsCSSE 473 (4)algsCSSE 473: Design and Analysis of Algorithms
Students study techniques for designing algorithms and for analyzing the time and space efficiency of algorithms. The algorithm design techniques include divide-and-conquer, greedy algorithms, dynamic programming, randomized algorithms and parallel algorithms. The algorithm analysis includes computational models, best/average/worst case analysis, and computational complexity (including lower bounds and NP-completeness).
- Theory of ComputationCSSE 474 (4)theoryCSSE 474: Theory of Computation
Students study mathematical models by which to answer three questions: What is a computer? What limits exist on what problems computers can solve? What does it mean for a problem to be hard? Topics include models of computation (including Turing machines), undecidability (including the Halting Problem) and computational complexity (including NP-completeness).
- orSenior Research Project ICSSE 487 (4)capstoneCSSE 487: Senior Research Project I
Individual or group research on an unsolved technical problem. The problem is expected to be at an advanced level and have an appropriate client. A prototype system, a technical report, and a public presentation are required.
Senior Research Project IICSSE 488 (4)capstoneCSSE 488: Senior Research Project IIIndividual or group research on an unsolved technical problem. The problem is expected to be at an advanced level and have an appropriate client. A prototype system, a technical report, and a public presentation are required.
Senior Research Project IIICSSE 489 (4)capstoneCSSE 489: Senior Research Project IIIIndividual or group research on an unsolved technical problem. The problem is expected to be at an advanced level and have an appropriate client. A prototype system, a technical report, and a public presentation are required.
orSenior Capstone Project ICSSE 497 (4)capstoneCSSE 497: Senior Capstone Project IFor 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 IIFor 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 IIIFor 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.
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.
- Computer Architecture IIECE 332 (4)engrECE 332: Computer Architecture II
Instruction-Level Parallelism. Pipelining. Data Hazards. Exceptions. Branch Prediction. Multilength Instructions. Loop Unrolling. TI C6000 Digital Signal Processor. Cache. Memory. MSP430 Microcontroller. PIC Microcontroller. Intel Itanium. Multiprocessors. Hardware Multithreading. Graphics Processors. Supercomputers.
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.
- 5 × Free Elective
Computer Science Program Educational Objectives
In the early phases of their careers, we expect Rose-Hulman computer science graduates to be:
- Computing professionals in a variety of organizations, including ones doing traditional software development, technological innovation, and cross-disciplinary work
- Business and technological leaders within existing organizations
- Entrepreneurial leaders
- Recognized by their peers and superiors for their communication, teamwork, and leadership skills
- Actively involved in social and professional service locally, nationally, and globally
- Graduate students and researchers
- Leaders in government and law as government employees, policy makers, governmental advisors, and legal professionals
Computer Science Student Outcomes
Graduates of the program will have an ability to:
- Analyze a complex computing problem and to apply principles of computing and other relevant disciplines to identify solutions.
- Design, implement, and evaluate a computing-based solution to meet a given set of computing requirements in the context of the program’s discipline.
- Communicate effectively in a variety of professional contexts.
- Recognize professional responsibilities and make informed judgments in computing practice based on legal and ethical principles.
- Function effectively as a member or leader of a team engaged in activities appropriate to the program’s discipline.
- Apply computer science theory and software development fundamentals to produce computing-based solutions.