|
Professors Anderson, Ardis, Azhar, Bagert, Chenoweth,
Chidanandan, Laxer, Mellor, Merkle, Mutchler, and Wollowski
For current information on course offerings, see the
department’s web site:
www.cs.rose-hulman.edu.
CSSE 120 Fundamentals of Software Development I 3R-3L-4C F, W,
S
This course develops problem solving skills and introduces
both fundamental concepts of computer science and current
practices of object-oriented software development. Students
complete a series of projects requiring the choice of
appropriate algorithms and the use of procedural abstraction,
control constructs, and elementary data structures. The
projects explore current practices of object-oriented software
development, such as multi-threaded event-driven programming,
the development of graphical user interfaces, and interaction
among objects. Students complete some projects individually,
some in small groups, and one in a challenging multi-week team
project. The use of a disciplined design process is emphasized
in each of the projects, including good programming style and
thorough testing. This course presumes no prior programming
experience.
CSSE 220 Fundamentals of Software Development II 3R-3L-4C F,
W, S Prerequisite: CSSE 120
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 testing and space/time efficiency analysis. Students
gain a deeper understanding of concepts from CSSE 120,
including the use of inheritance, interfaces, polymorphism,
abstract data types and encapsulation to enable software reuse
and assist in software maintenance. This course introduces
networking and database applications, and recursion as an
example of functional programming. Students design and
implement software individually, in small groups, and in a
challenging multi-week team project.
CSSE 230 Fundamentals of Software Development III 3R-3L-4C W,
S Prerequisites: CSSE 220 and MA 275
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 analysis 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 304 Programming Language Concepts 4R-0L-4C S
Prerequisite: CSSE 230 (MA 375 recommended)
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 4R-0L-4C W Prerequisite: CSSE 220
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 230
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.
CSSE 404 Compiler Construction 4R-0L-4C Prerequisites: CSSE
232 and CSSE 304 (CSSE 474 recommended)
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 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 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 315
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 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 Prerequisites: CSSE 371 and
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.
|