| |
Course Descriptions -
Computer Science and Software Engineering
Professors Anderson, Boutell, Chenoweth, Chidanandan,
Clifton, Defoe, Laxer, Mellor, Merkle, Mohan, Mutchler, and Wollowski
For current information on course offerings, see the department’s
web site:
www.cs.rose-hulman.edu.
CSSE 120 Introduction to Software Development 3R-3L-4C F, W,
S
An introduction to procedural and object-oriented programming with an
emphasis on problem solving. Students will solve problems by
developing software in both an interpreted language (Python) and a
compiled language (C). Problems may include visualizing scientific
or commercial data, interfacing with external hardware such as
robots, or solving numeric problems from a variety of engineering
disciplines. Procedural programming concepts covered include data
types, variables, control structures, arrays, and data I/O.
Object-oriented programming concepts covered include object creation
and use, object interaction, and the design of simple classes.
Software engineering concepts covered include testing, incremental
development, understanding requirements, and teamwork.
CSSE 220 Object-Oriented Software Development 3R-3L-4C F,W,S
Prerequisite: CSSE 120
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 3R-3L-4C F
Prerequisite: A score of 4 or 5 on either CS AP exam or permission
of instructor
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 230 Data Structures and Algorithm Analysis 3R-3L-4C W,S
Prerequisites: CSSE 220
This course reinforces and extends students’ understanding of current
practices of producing object-oriented software. Students extend
their use of a disciplined design process to include formal analysis
of space/time efficiency and formal proofs of correctness. Students
gain a deeper understanding of concepts from CSSE 220, including
implementations of abstract data types by linear and non-linear data
structures. This course introduces the use of randomized algorithms.
Students design and implement software individually, in small
groups, and in a challenging multi-week team project.
CSSE 232 Computer Architecture I 3R-3L-4C F, W Prerequisites: CSSE
120 and ECE 130
Computer instruction set architecture and implementation. Specific
topics include historical perspectives, performance evaluation,
computer organization, instruction formats, addressing modes,
computer arithmetic, ALU design, floating-point representation,
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 241 Computing in a Global Society 2R-6L-4C Arr Prerequisite:
CSSE 220 or CSSE 221
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 304 Programming Language Concepts 4R-0L-4C S Prerequisite:
CSSE230 and MA275
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 325 Fractals and Chaotic Dynamical Systems 4R-0L-4C
Prerequisites: CSSE 220 and MA 222
Emphasis on the mathematical and computer graphics foundations
behind fractal images and the relationship between chaotic dynamics
and fractal geometry. Self-similar fractals, random fractals with
Brownian motion, and fractals generated from dynamical systems.
Fractal dimensions. Iterated Function Systems. Chaos in
one-dimensional maps. Controlling chaos. Mandelbrot and Julia sets.
Computer graphics. Same as MA 325.
CSSE 332 Operating Systems 3R-3L-4C W, S Prerequisites: CSSE 220 and
CSSE 232
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 3R-3L-4C W Prerequisite: CSSE230
and MA275 (MA375 recommended)
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 351 Computer Graphics 4R-0L-4C Prerequisites: CSSE 220 and MA
221
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 371 Software Requirements and Specification 4R-0L-4C F
Prerequisite: CSSE 230
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 4R-0L-4C W Prerequisite: CSSE
371
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 4R-0L-4C F Prerequisite: CSSE230 and MA275
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 Architecture and Design
4R-0L-4C W Prerequisite: CSSE 371
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 4R-0L-4C F Prerequisite: CSSE 371
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
4R-0L-4C S Prerequisite: CSSE 230
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 377 Software Architecture and Design
II 4R-0L-4C S Pre: CSSE 374 or consent of instructor
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. How to design
systems which a team of developers can implement, and which will be
successful in the real world.
CSSE 404 Compiler Construction 4R-0L-4C Prerequisites: CSSE 232,
CSSE 304, and CSSE/MA474
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 4R-0L-4C Prerequisite: CSSE 220
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 432 Computer Networks 4R-0L-4C Prerequisite: CSSE 220
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 4R-0L-4C Prerequisite: CSSE 333
Topics selected from object-oriented databases, object-relational
databases, query processing, transactions, transaction logging,
concurrency control, database recovery, parallel and distributed
databases, security and integrity, data mining and data warehousing.
CSSE 442 Computer Security 4R-0L-4C W Prerequisites: CSSE 332 and
MA 275
This course introduces ethical, theoretical, and practical issues of
information security in computing systems. Implications of relevant
professional codes of ethics are a recurring theme of the course.
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 network attack techniques are
discussed and explored in a closed environment to motivate and
inform discussion and exploration of computer network defense
techniques.
CSSE 451 Advanced Computer Graphics 4R-0L-4C Prerequisite: CSSE 351
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 4R-0L-4C Prerequisite:
CSSE 413
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 4R-0L-4C Prerequisites: CSSE 220 and MA 221
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 4R-0L-4C W Prerequisites: Junior
standing, MA221 and programming experience
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 4R-0L-4C Prerequisites:
CSSE 230 and MA 375
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). Same as MA 473.
CSSE 474 Theory of Computation 4R-0L-4C Prerequisites: CSSE 230 and
MA 375
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). Same as MA 474.
CSSE 479 Cryptography 4R-0L-4C Prerequisites: CSSE 220 and MA 275
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. Same as MA 479.
CSSE 481 Web-Based Information Systems 4R-0L-4C Prerequisite: CSSE
230
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. Projects either
develop new web-technologies or applications or investigate a topic
of importance. Based on feedback received, groups of students write
a research proposal which goes through a formal peer review process.
Approved projects are pursued for the remainder of the quarter.
Students present current research as well as give a final
presentation of their group project. Selected web-technologies are
introduced; in the past, these have included CGI programming and XML
technologies.
CSSE 490 Special Topics in Computer Science 4C Arr Prerequisite:
Permission of instructor
Selected topics of current interest. May be repeated for credit if
topic is different.
CSSE 491 Directed Independent Studies 1-4C Arr Prerequisite:
Permission of instructor and department head
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 1-4C Arr
Prerequisite: Permission of instructor and department head
CSSE 493 Undergraduate Research in Software Engineering 1-4C Arr
Prerequisite: Permission of instructor and department head
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 494 Senior Thesis I 4C Arr Prerequisite: Permission of
instructor and
department head
CSSE 495 Senior Thesis II 4C Arr Prerequisite: CSSE 494
CSSE 496 Senior Thesis III 4C Arr Prerequisite: CSSE 495
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 Project I 4C F Prerequisite: CSSE 372
CSSE 498 Senior Project II 4C W Prerequisite: CSSE 497
CSSE 499 Senior Project III 4C S Prerequisite: CSSE 498
Group software engineering project requiring completion of a
software system for an approved 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. |