|
Computer Science courses use the CSI and CSS prefixes
and are taught through the Department of Mathematical and Computer Sciences.
CSI 1300-4 Computer Science 1 (4 + 0)
Prerequisites: permission of department
This is the first course in the computer science
core sequence. Students will learn a modern programming language and the
basic skills needed to analyze problems and construct programs for their
solutions. The emphasis of the course is on the techniques of algorithm
development, correctness and programming style. Students are also introduced
to the fundamentals of software engineering and the software development
life cycle.
CSI 2300-4 Computer Science 2 (4 + 0)
Prerequisite: CSI 1300 with a grade of "C" or better,
or permission of instructor
This course, a continuation of CSI 1300, further
emphasizes the concepts of the software development cycle and introduces
the concept of an abstract data type (ADT). The topics covered include
linked-lists, trees, stacks, queues, classes, recursion, and a variety
of data representation methods. Further topics in software engineering
and programming style as well as algorithms for sorting and searching
are included.
CSI 2400-4 Computer Organization and Assembly
Language (4 + 0)
Prerequisite: CSI 1300 with a grade of "C" or better,
or permission of instructor
This course is a study of the internal organization
of computing machinery and the hardware elements essential to the computation
process. Various forms of computer organization are studied and analyzed.
The vehicle for exploration of the computer hardware is Assembly language
that provides specific instructions for the direct manipulation of the
memory registers and control flags associated with virtually all modern
computers.
CSI 3060-4 Computer Architecture and Systems
Programming (4 + 0)
Prerequisites: CSI 2300 and CSI 2400 with grades
of "C" or better, or permission of instructor
In this course, computer organization concepts are
extended to include advanced architectural concepts. These concepts include
set associative caches, advanced pipelining concepts for superscalar and
superpipelined processors, bus interface concepts, microprogramming concepts,
parallel architectures, multiprocessing architectures, memory organization
architectures, interrupt architectures, and bus data transfer concepts.
Supporting systems programming topics are also covered as a basis for
studying operating systems.
CSI 3100-4 Discrete Mathematics (4 + 0)
Prerequisites: MTH 2410 and CSI 2300 with a grade
of "C" or better, or permission of instructor
Discrete mathematical structures including sets,
digraphs, Boolean algebra, relations, finite state automata, regular languages,
and error correction codes are covered along with their applications to
areas of computer science.
CSI 3120-4 Organization and Structure of Operating
Systems (4 + 0)
Prerequisites: CSI 3060 with a grade of "C" or better,
or permission of instructor
This course is an introduction to the design, development,
and implementation of modern computer operating systems, including network
systems. The topics covered include input/output processors, interrupt
handling, system resource management, multitasking, communication between
machines and processes, and computer system security.
CSI 3210-4 Principles of Programming Languages
(4 + 0)
Prerequisites: CSI 2300 and CSI 3100 with grades
of "C" or better, or permission of instructor
This course traces the evolution of programming
languages and identifies and analyzes the contributions made by several
significant languages and their successors. Specific issues of programming
language implementation such as creation of activation records for block-structured
languages and static and dynamic scoping as methods for defining program
object visibility are studied in depth. All four of the modern programming
language paradigms (procedural, functional, object-oriented, and logical)
will be reviewed. The design, evaluation, and implementation of programming
language processors such as interpreters, compilers, and translators are
studied.
CSI 3280-4 Object-Oriented Software Development
(4 + 0)
Prerequisite: CSI 2300 with a grade of "C" or better,
or permission of instructor
This is an upper-division software development class
that focuses on the object-oriented programming paradigm. Object-oriented
analysis, design, and development will be explored in some depth with
emphasis on object definition, abstraction, polymorphism, encapsulation,
and inheritance. Abstract class definitions are developed for a number
of common objects and data structures, and derivative classes and subclasses
are developed from these definitions. Students will develop a thorough
understanding of an object-oriented programming language such as C++ or
Smalltalk.
CSI 3300-4 Foundations of File Structures (4
+ 0)
Prerequisites: CSI 2300 and CSI 2400 with grades
of "C" or better, or permission of instructor
This course explores the fundamental concepts associated
with external storage media and the methods of organization, storage,
and retrieval of data on peripheral devices. Various file-structuring
schemes are compared and contrasted in order to develop an in-depth understanding
of the most efficient methods for given situations. Students will gain
experience with internal storage management and a wide variety of sequential
and random access methods of file organization and structure.
CSI 3310-4 Fundamentals of Database Systems (4
+ 0)
Prerequisites: CSI 3100 and CSI 3300 with grades
of "C" or better, or permission of instructor
This course is the second in a two-course series
on the external organization and retrieval of information. It builds on
the base laid in CSI 3300, Foundations of File Structures, by extending
the capabilities of the students into the area of developing database
management systems. Students will study the three principal models for
database organization (relational, hierarchical, and network). They will
also be introduced to the major issues in database management systems
development and operation. The emphasis will be on the relational model
because of its widespread popularity among computer users. Examples will
be constructed using the object-oriented paradigm.
CSI 3510-4 Computer Graphics (4 + 0)
Prerequisites: CSI 2300 with a grade of "C" or better,
MTH 1410, and either MTH 2140 or MTH 3140, or permission of instructor
This course is a survey of graphics hardware and
software. The topics covered include raster scan displays, windowing transformation,
algorithms for vector generators, clipping, area fill, space transformations
in two and three dimensions, perspective viewing methods, and graphical
input. Other topics will be chosen from hidden surface processing, curve
and surface modeling, fractals and animation. Programming projects will
be done using a standard graphics function library. This is a course in
the principles of computer graphics; it is not a course in using existing
commercial software for artistic design or drafting. Students wanting
design or drafting courses should consult offerings of the Art Department.
CSI 3700-4 Computer Networks (4 + 0)
Prerequisites: CSI 2300 and CSI 2400, both with a
grade of "C" or better, or permission of instructor
This course provides a comprehensive study of computer
networks, from the physical aspects to the high-level application protocols
with which most people interact. The software that provides the communication
is emphasized. The methods for creating connections, making sure they
are error free and in order, performing routing, and creating client/server
interactions are discussed.
CSI 4120-4 Foundations of Artificial Intelligence
(4 + 0)
Prerequisite: CSI 3210 with a grade of "C" or better,
or permission of instructor
This course includes a study of the theoretical
foundations of artificial intelligence, including the algorithms and techniques
and programming languages used to design and implement intelligent systems.
The topics covered include search strategies, resolution theorem proving,
rule-based deduction, expert systems architecture, plan-generating systems,
analysis of languages, and machine learning. LISP and PROLOG, the most
commonly used AI programming languages, will be covered and used for programming
assignments.
CSI 4250-4 Software Engineering Principles (4
+ 0)
Prerequisite: CSI 3300 with a grade of "C" or better,
COM 2610, PHI 3360, and senior standing, or permission of instructor
This course focuses on the software development
life cycle. Special emphasis is placed on the earlier phases in the life
cycle that precede the actual writing of the code, and the later phases
in which the software is tested and evaluated after it is written. Finally,
the post-implementation phases that represent the eighty percent of the
life cycle during which the software is evolving as it is in use are studied
in-depth. Students will perform various role playing activities in which
they represent users and implementors during these phases of the development
process.
CSI 4260-4 Software Engineering Practices (4
+ 0)
Prerequisites: CSI 4250 with a grade of "C" or better
This course is a continuation of CSI 4250, Software
Engineering Principles. Students will work in teams of 4 to 6 and apply
the principles to the development of a real-world project. Projects will
be solicited from industry and progress will be evaluated in conjunction
with industry representatives. (Senior Experience)
CSI 4300-4 Advanced Data Structures and Algorithm
Analysis (4 + 0)
Prerequisites: CSI 3100, CSI 3300 with grades of
"C" or better and MTH 3210, or permission of instructor
This course continues the study of data structures
begun in CSI 2300. Extensive concentration is placed on the concept of
the abstract data type (ADT). A wide variety of abstract data types are
studied including linear and nonlinear ADTs. The emphasis is on the design,
analysis, and evaluation of efficient algorithms for a wide variety of
common computing problems.
CSI 4520-1-4 Advanced Computing: Variable Topics
(1-4 + 0)
Prerequisite: permission of instructor
This course will include further topics in computer
science and its applications. Topics will be chosen from analysis of algorithms,
compiler design, simulation, artificial intelligence, or other chosen
by the instructor. This course may be repeated for credit under different
titles.
|