CS Curricula

←All schools

Rose-Hulman Institute of TechnologyWebsiteAcademic Catalog

Computer Science and Software EngineeringDepartment Website

Majors

Courses

source 1

CSSE 120: Introduction to Software Development (4) intro

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.

CSSE 132: Introduction to Systems Programming (4) sys

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.

CSSE 140: Practical Security I (1) sys

This is an entry-level introduction to exploiting and securing computer systems, networks, and web sites. This shallow introduction exposes students to various applied cybersecurity topics including Firewalls, SSH, passwords, web security, and basic unix system administration. Through a series of hands-on exercises, students will relate these topics to practical ways to secure computers.

CSSE 141: Practical Security II (1) sys

A second-level introduction to exploiting and securing computer systems, networks, and web sites. This class continues the introduction to applied cybersecurity topics including basic Cryptography, network protocol analysis, reverse engineering, steganography, forensics, and more unix system administration. Students are also introduced to capture-the-flag exercises, which are widely practiced cybersecurity skill competitions.

CSSE 142: Practical Security III (2) sys

A third-level class on exploiting and securing computer systems, networks, and web sites. This class continues the introduction to applied cybersecurity topics and focus on applying concepts learned in CSSE 140/141 to security competitions such as capture-the-flag events. This class exposes students to strategy used in security competitions, teamwork skills for effective competition, and construction of set of exercises used for running a CTF event. Students will work in teams to solve security-oriented problems, apply their skills to create competition challenges/exercises for use in CSSE 141 and for competition training, practice for security competitions, and participate in or run a few security competitions.

CSSE 145: Cybersecurity Seminar (2) talks

This course provides exposure to leading-edge industrial and academic experts in Cybersecurity and Digital Privacy. Topics including the societal, economic, scientific, and psychological impacts of modern areas of cybersecurity and privacy are examined from both practical and theoretical points of view. Students in this class will attend live and view remote or recorded talks from industry/academic experts, read emergent papers on Cybersecurity and Digital Privacy, participate in discussions or debate about the topics, and reflect on the impacts these topics have on their major area of study. May be repeated for credit with approval from the course instructor when topics are different.

CSSE 199: Professional Experience (1) special

The professional experiences course captures the practical work experiences related to the student’s academic discipline. Students are required to submit a formal document of their reflections, which communicates how their employment opportunity reinforced and enhanced their academic studies. The course will be graded as “S” satisfactory, or “U” unsatisfactory based on the written report of the professional experience.

CSSE 212: Hardware-oriented Programming (4) sys

Simple computer architecture. Special hardware-oriented programming. Introduction to the C programming language, especially the use of pointers. Interrupt programming. This course is taught as part of the International Computer Science dual degree program at Hochschule Ulm, Germany.

CSSE 220: Object-Oriented Software Development (4) intro

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.

CSSE 221: Fundamentals of Software Development Honors (4) intro

This course is intended for students who have sufficient programming experience to warrant placement in an accelerated course covering the topics from CSSE 120 and CSSE 220. This course will satisfy the prerequisite requirements for courses that have CSSE 220 as a prerequisite.

CSSE 225: Programming 3 (4) intro

Differences between Java and C++. C++ concepts of object-oriented programming (classes, objects, inheritance, polymorphism). Storage management. Multiple inheritance, operator overloading, friend-concept, exception handling, I/O. Error analysis of programs. Generic programming and introduction to C++ - standard library. This course is taught as part of the International Computer Science dual degree program at Hochschule Ulm, Germany.

CSSE 230: Data Structures and Algorithm Analysis (4) intro

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.

CSSE 232: Computer Architecture I (4) sys

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.

CSSE 240: Principles of Cybersecurity (4) sys

This course introduces ethical, theoretical, and practical issues of information security in interconnected systems of computers. Implications of relevant professional codes of ethics are a recurring theme of the course, as are societal and human impacts on computer system security. Foundational topics include access control matrices and standard system models, as well as policies for security, confidentiality, and integrity. Implementation issues include key management, cipher techniques, authentication, principles of secure design, representation of identity, access control mechanisms, information flow, life cycle issues, and formal evaluation and certification techniques. Additional topics include malicious logic, vulnerability analysis, and auditing. Computer system attack techniques are observed and evaluated in a closed environment to motivate and inform discussion and exploration of computer network defense techniques.

CSSE 241: Computing in a Global Society (4) impact

The ability to work with colleagues from other cultures and to work on international projects are key assets in today's job market. The centerpiece of this course is a real-world computing project that students develop in cooperation with peers from an institution of higher education in a foreign country. Exposes students to the procedures and complexities of working on projects that span many time-zones and cultures. Additionally, students examine the use and impact of computing in a global community. International travel is required; students will be expected to incur additional expenses (will vary depending on the project, institution, and country). May be repeated once (for free elective credit only) if the country involved is different.

CSSE 242: Programming in the Community (12) communication

Programming in the Community is a unique course where Rose-Hulman students learn how to become teachers in Computer Science for younger students. As the name suggests, students will go teach CS material to K-12 students at their local school. Students will be assigned to a teaching team to take turns leading and helping follow along projects for the K-12 students. Students are expected to join a weekly instructor meeting on Teams, then take two teaching trips into the community per week (40 to 50 minute lessons). Transportation can be arranged for students unable to travel to the school. Students of any major are welcome to join. This class is a very real-world experience. It is a great way to learn leadership and teaching skills while doing great community service. May be repeated up to 12 credit hours.

CSSE 252: Computer Game Design (4) graphics

An introduction to computer game design. Topics include game concepts, game settings and worlds, storytelling and narrative, character development, creating the user experience, gameplay, game balancing, and game genres. Working in teams, students will design their own game and produce several design documents for that game.

CSSE 280: Introduction to Web Programming (4) sys

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.

CSSE 286: Introduction to Machine Learning (4) ai

An introduction to machine learning (ML) systems, with a focus especially on Artificial Intelligence-based systems, versus statistical ones. The course is designed to be useful to students with a basic knowledge of programming and software systems, whether or not they are computer science majors. During the course, students try different machine learning algorithms on data from problems in a domain of interest to them, comparing results with that of other students taking the class, as well as comparing the outcomes of the different algorithms on their own data. A goal of the course is learning how to gain real predictive value from “big data.”

CSSE 290: Special Topics in Computer Science (4) special

Selected topics of current interest. May be repeated for credit if topic is different.

CSSE 304: Programming Language Concepts (4) pls

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.

CSSE 332: Operating Systems (4) sys

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.

CSSE 333: Database Systems (4) sys

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.

CSSE 335: Introduction to Parallel Computing (4) sys

Principles of scientific computation on parallel computers. Algorithms for the solution of linear systems and other scientific computing problems on parallel machines. Course includes a major project on RHIT's parallel cluster. Same as MA 335.

CSSE 340: Foundations of Cybersecurity (4) sys

This course introduces ethical, theoretical, and practical issues of information security in interconnected systems of computers. Implications of relevant professional codes of ethics are a recurring theme of the course, as are societal and human impacts on computer system security. Foundational topics include access control matrices and standard system models, as well as policies for security, confidentiality, and integrity.

CSSE 343: Cybercrime and Digital Forensics (4) sys

This course introduces students to “cybercrime,” how police investigate these crimes, and what forensics techs use to uncover digital evidence. Students will examine the laws, technologies, tools, and procedures used in the investigation and prosecution of computer crimes through case studies, discussions, ethical debates, and hands-on laboratory exercises that uncover and analyze digital evidence.

CSSE 351: Computer Graphics (4) graphics

Computer graphics algorithms, hardware and software. Line generators, affine transformations, line and polygon clipping, interactive techniques, perspective projection, solid modeling, hidden surface algorithms, lighting models, shading, and graphics standards. Programming assignments and a final project are required.

CSSE 352: Computer Game Development (4) graphics

An introduction to designing and developing computer games. Topics include game genres, game design, sprites, game physics, collisions, characters, scripting, graphics, and sound. Students will design and implement their own game using an available game engine.

CSSE 371: Software Requirements Engineering (4) softeng

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.

CSSE 372: Software Project Management (4) softeng

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.

CSSE 373: Formal Methods in Specification and Design (4) softeng

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.

CSSE 374: Software Design (4) softeng

Introduction to the architecture and design of complete software systems, building on components and patterns. Topics include architectural principles and alternatives, design documentation, and relationships between levels of abstraction.

CSSE 375: Software Construction and Evolution (4) softeng

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.

CSSE 376: Software Quality Assurance (4) softeng

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.

CSSE 386: Data Mining with Programming (4) ai

An introduction to data mining for large data sets, including data preparation, exploration, aggregation/reduction, and visualization. Elementary methods for classification, association, and cluster analysis are covered. Significant attention will be given to presenting and reporting data mining results. Students may not get credit for both this course and also the MA 384 Data Mining course.

CSSE 400: CSSE Seminar (4) talks

This course presents an overview of current application areas within computer science and software engineering through the use of practical case studies. Students will undertake their own preparation of one or more case studies and present their results. This course is taught as part of the International Computer Science dual degree program at Hochschule Ulm, Germany.

CSSE 402: Theory and Practice of Garbage Collection (4) pls

Garbage collection (GC) is a method of automatically reclaiming dynamically allocated storage that an application no longer needs. In this course, students will explore the classical problems of garbage collection such as detecting unused objects and reclaiming the space allocated to them. Students will survey the GC literature to become familiar with the current state-of-the-art and future research directions. Students will explore techniques used to implement state-of-the-art garbage collection algorithms and will design and implement garbage collectors for a memory-managed language (e.g.,Java, C#, php, or Python).

CSSE 403: Programming Language Paradigms (4) pls

A survey of some current and emerging programming languages, focusing on unique language paradigms-ways of structuring solutions or manipulating data. Examples of paradigms include dynamic programming languages, object-oriented programming, highly parallelizable code, and functional programming. Emphasizes developing independent learning techniques that will allow students to acquire skills in new languages quickly. Students will develop basic skills in at least three different languages representing distinct paradigms. They will also be exposed to a selection of other languages. Includes a substantial team project.

CSSE 404: Compiler Construction (4) pls

Theory and practice of programming language translation. Lexical analysis, syntax analysis, parser generators, abstract syntax, symbol tables, semantic analysis, intermediate languages, code generation, code optimization, run-time storage management, error handling. Students will construct a complete compiler for a small language.

CSSE 413: Artificial Intelligence (4) ai

Students investigate how to model and implement intelligent behavior using computers. Topics are chosen from how machines can: solve problems; reason and use knowledge; learn from experience; and perceive and act. Students explore these topics by implementing many of the ideas in software. Readings are drawn both from a textbook and from technical papers in recent conferences and journals.

CSSE 415: Machine Learning (4) ai

An introduction to machine learning. Topics include: error metrics, accuracy vs interpretability trade-off, feature selection, feature engineering, bias-variance trade-off, under-fitting vs. overfitting, regularization, cross-validation, the bootstrap method, the curse of dimensionality and dimensionality reduction using the singular value decomposition. Both parametric and nonparametric methods are covered including: k-nearest neighbors, linear and logistic regression, decision trees and random forests, and support vector machines. Same as MA 415.

CSSE 432: Computer Networks (4) sys

Organization, design, and implementation of computer networks, especially the Internet. Network protocols, protocol layering, flow control, congestion control, error control, packet organization, routing, gateways, connection establishment and maintenance, machine and domain naming, security. Each of the top four layers of the Internet protocol stack: application (FTP, HTTP, SMTP), transport (TCP, UDP), network (IP), link (Ethernet).

CSSE 433: Advanced Database Systems (4) sys

This course covers advanced topics in the design and development of database management systems and their modern applications. Topics to be covered include query processing and, in relational databases, transaction management and concurrency control, eventual consistency, and distributed data models. This course introduces students to NoSQL databases and provides students with experience in determining the right database system for the right feature. Students are also exposed to polyglot persistence and developing modern applications that keep the data consistent across many distributed database systems.

CSSE 434: Introduction to the Hadoop Ecosystem (4) sys

This advanced course examines emergent Big Data techniques through hands-on introductions to the various technologies and tools that make up the Hadoop ecosystem. Topics covered include internals of MapReduce and the Hadoop Distributed File system (HDFS), internals of the YARN distributed operating system, MapReduce for data processing, transformation & analysis tools for data at scale (processing terabytes and petabytes of information quickly), scheduling jobs using workflow engines, data transfer tools & real time engines for data processing.

CSSE 435: Robotics Engineering (4) ai

Interdisciplinary course in robotics focusing on communication, software development, kinematics, robot GUI design, sensing, control, and system integration. Labs in the course cover MATLAB GUI development with GUIDE, Denavit-Hartenberg parameters, Arduino programming, Arduino to Android communication, Android app development, and OpenCV4Android image recognition. Students in the course will program an Android + Arduino, 6-wheeled mobile robot with 5 DOF servo arm to participate in an outdoor GPS robotics challenge. Same as ME 435.

CSSE 443: Distributed Systems & IT Security (4) sys

Building complex distributed information systems requires a systematic approach. This course covers the analysis of existing distributed information systems and provides the ability to model simple new distributed applications with special attention to the trustworthiness, reliability and security of information systems. Topics covered include the main architectural models of distributed systems, describing simple distributed applications according to architecture and function, defining simple communication protocols, the benefits of using middleware, the risks of using distributed systems, and safety measures. This course is taught as part of the International Computer Science dual degree program at Hochschule Ulm, Germany.

CSSE 444: Real-time Systems (4) sys

Students will learn the features and specifications of real-time systems. Topics covered include real-time operating systems and programming languages, design patterns for real-time systems, scheduling, synchronization, hybrid task sets, and applications of real-time systems. This course is taught as part of the International Computer Science dual degree program at Hochschule Ulm, Germany.

CSSE 451: Advanced Computer Graphics (4) graphics

Advanced topics in computer graphics. Topics will be drawn from current graphics research and will vary, but generally will include ray tracing, radiosity, physically-based modeling, animation, and stereoscopic viewing. Programming assignments and a research project are required.

CSSE 453: Topics in Artificial Intelligence (4) ai

Advanced topics in artificial intelligence. Topics will vary. Past topics have included machine game playing and machine learning. May be repeated for credit if topic is different.

CSSE 461: Computer Vision (4) ai

An introduction to 3D computer vision techniques. Both theory and practical applications will be covered. Major topics include image features, camera calibration, stereopsis, motion, shape from x, and recognition.

CSSE 463: Image Recognition (4) ai

Introduces statistical pattern recognition of visual data; low-level visual feature extraction (color, shape, edges); clustering and classification techniques. Applies knowledge to various application domains through exercises, large programming projects in Matlab, and an independent research project. Familiarity with probability distributions will be helpful, but not required.

CSSE 473: Design and Analysis of Algorithms (4) algs

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).

CSSE 474: Theory of Computation (4) theory

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).

CSSE 477: Software Architecture (4) softeng

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.

CSSE 479: Cryptography (4) math

Introduction to basic ideas of modern cryptography with emphasis on mathematical background and practical implementation. Topics include: the history of cryptography and cryptanalysis, public and private key cryptography, digital signatures, and limitations of modern cryptography. Touches upon some of the societal issues of cryptography.

CSSE 480: Cross-Platform Development (4) sys

Programming cross-platform mobile applications that target Android, iOS, and web mobile devices using programmatic UIs, layouts, reusable components, and data persistence via cloud backends. Emphasis is on hands-on use of these components in application development.

CSSE 481: Web-Based Information Systems (4) sys

In this course, students learn about several aspects of research: thinking creatively about interesting research problems, researching existing work in a chosen area, and keeping current in a field. Students are exposed to the process of research by writing a pre-proposal for a project that advances the web.

CSSE 483: Android Application Development (4) sys

An introduction to programming mobile applications using the Android stack. Topics include the activity lifecycle, resources, layouts, intents for multiple activities, menus, fragments and dialogs, adapters, data persistence via shared preferences, SQLite, and web backends. Emphasis is on hands-on use of these components in application development.

CSSE 484: iOS Application Development (4) sys

An introduction to programming mobile applications using the iOS stack. Topics include using X-Code for Swift and Objective-C app development, UI components, Storyboards, view controller actions and outlets, table views, navigation controllers, Core Data, and APIs for backend communication. Emphasis is on hands-on use of these components in application development. Includes a substantial team project (UI mockups, user stories, development, testing, and presentation).

CSSE 487: Senior Research Project I (4) capstone

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.

CSSE 488: Senior Research Project II (4) capstone

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.

CSSE 489: Senior Research Project III (4) capstone

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.

CSSE 490: Special Topics in Computer Science (14) special

Selected topics of current interest. May be repeated for credit if topic is different.

CSSE 491: Directed Independent Studies (14) special

Independent study of an advanced subject not included in regularly offered courses. May be repeated for credit if topic or level is different.

CSSE 492: Undergraduate Research in Computer Science (14) special

Research under direction of a faculty member. Presentation of preliminary and final results to departmental seminar. Presentation of work at professional meetings or by publication in professional journals is strongly encouraged. May be repeated for credit if topic or level is different.

CSSE 493: Undergraduate Research in Software Engineering (14) special

The Computer Science curriculum prepares students for careers in all areas of the computer industry as well as for graduate studies in computer science and computer related fields. Students have also found a computer science major to be excellent preparation for careers in law, medicine, business administration, industrial engineering, biomedical engineering, and other technical and non-technical fields.

CSSE 494: Senior Thesis I (4) capstone

Individual study and research of a topic in computer science or software engineering. Topic is expected to be at an advanced level. Research paper and presentation to department seminar are required.

CSSE 495: Senior Thesis II (4) capstone

Individual study and research of a topic in computer science or software engineering. Topic is expected to be at an advanced level. Research paper and presentation to department seminar are required.

CSSE 496: Senior Thesis III (4) capstone

Individual study and research of a topic in computer science or software engineering. Topic is expected to be at an advanced level. Research paper and presentation to department seminar are required.

CSSE 497: Senior Capstone Project I (4) capstone

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.

CSSE 498: Senior Capstone Project II (4) capstone

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.

CSSE 499: Senior Capstone Project III (4) capstone

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.

MA 111: Calculus I (5) math

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.

MA 112: Calculus II (5) math

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.

MA 113: Calculus III (5) math

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.

MA 221: Matrix Algebra & Differential Equations I (4) math

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.

MA 276: Introduction to Proofs (4) math

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.

MA 374: Combinatorics (4) math

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.

MA 381: Introduction to Probability with Applications to Statistics (4) math

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.

ECE 233: Introduction to Digital Systems (4) engr

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.

ECE 332: Computer Architecture II (4) engr

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.

CHEM 111: General Chemistry I (3) sci

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.

PH 111: Physics I (4) sci

Kinematics, Newton's laws of motion, gravitation, Coulomb's law, Lorentz force law, strong and weak nuclear forces, conservation of energy and momentum, relevant laboratory experiments.

PH 112: Physics II (4) sci

Torque and angular momentum, oscillations, one-dimensional waves, electric fields and potentials, electric current and resistance, DC circuits, capacitance, relevant laboratory experiments.

ENGL H290: Technical & Professional Communication (4) 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.

RHIT 100: Foundations For Rose-Hulman Success (1)

The purpose of RHIT100 is to learn about services and resources available on campus and help students to successfully transition to college - laying the foundation for their college career. In RHIT100, the focus of the course is you, and you will be challenged to reflect on and analyze your own learning strategies, study skills, and other professional skills that will help you succeed in and out of the classroom.