|
Computer Science courses use the CSI and CSS
prefixes and are taught through the Department of Mathematical and Computer
Sciences.
CSI 1050-4 Computer Science 1 (4 + 0)
Prerequisite: 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 2050-4 Computer Science 2 (4 + 0)
Prerequisite: CSI 1050 with a grade of "C" or better, or permission of instructor
This course, a continuation of CSI 1050, 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 1050 and EET 2310 with grades of "C" or better, or permission of instructor
This course is a study of the internal organization of computers. Machine level representation of data, digital
logic, central processor and memory organization, instruction level architecture, secondary memory organization,
interfacing and communication, multiprocessing organization are covered. The vehicle for exploration of
the computer hardware is assembly language programming.
CSI 3050-4 Computer Science 3 (4 + 0)
Prerequisite: CSI 2050 with grade of "C" or better, or permission of instructor
This course, a continuation of CSI 2050, includes graphs, digraphs, balanced binary search trees, red-black
trees, B-trees, B*-trees, B+-trees, and hashing. Students will write a variety of programs and some of these will
include event-driven programming and graphical user interfaces. Two programming languages will be used in
this course.
CSI 3210-4 Principles of Programming Languages (4 + 0)
Prerequisites: CSI 3050 with a grade 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 studied.
CSI 3240-2 Introduction to the Theory of Computation (2 + 0)
Prerequisites: CSI 3050 and MTH 3100 with grades of "C" or better, or permission of instructor
This course explores language theory and computability. Language theory includes: regular expressions, regular
languages, and finite automata (deterministic and non-deterministic); context-free languages and pushdown
automata; and language grammars. Computability includes: Turing machines and their computing power;
unsolvable problems; and intractable problems (NP-Completeness).
CSI 3280-4 Object-Oriented Software Development (4 + 0)
Prerequisite: CSI 2050 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 3400-4 Computer Architecture (4 + 0)
Prerequisites: CSI 2050 and CSI 2400 with grades of "C" or better, or permission of instructor
Computer architecture concepts are extended to include advanced architectural concepts based on the quantitative
analysis and evaluation of modern computing systems. These include advanced instruction set architecture
designs, multilevel and set associative caches, advanced pipelining, out-of-order processors including superscalar
and VLIW techniques, microprogramming concepts, multiprocessing architectures, advanced memory
organizations, input/output, and network-oriented interconnections.
CSI 3510-4 Computer Graphics (4 + 0)
Prerequisites: CSI 2050 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 3600-4 Operating Systems (4 + 0)
Prerequisites: CSI 2400 and CSI 3050 with grades of "C" or better, or permission of instructor
This course is an introduction to the design, development, and implementation of modern computer operating systems.
The topics covered include input/output processing, interrupt handling, system resource management, multitasking,
communication between processes, file system implementation, process and thread control, and virtual
memory management.
CSI 3700-4 Computer Networks (4 + 0)
Prerequisites: CSI 2050 and CSI 2400 with grades 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 3800-2 Fundamentals of Relational Database Systems (2 + 0)
Prerequisites: CSI 2050 and MTH 3100 with grades of "C" or better, or permission of instructor
This is a course in relational database theory. Topics covered include entity-relationship schema, relational
algebra, SQL queries, normalization, decompositions of a relational schema that are dependency-preserving
and/or lossless.
CSI 4050-4 Algorithms and Algorithm Analysis (4 + 0)
Prerequisites: CSI 3210, CSI 3240, MTH 3210 with grades of "C" or better, or permission of instructor
The emphasis of this course is on the design, analysis, and evaluation of efficient algorithms for a wide variety
of computing problems.
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)
Prerequisites: CSI 3050 with a grade of "C" or better, COM 2610, PHI 3370, 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 implementers 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 4281-3 Software Requirements (3 + 0)
Prerequisite: CSI 4250 or permission of department
This course develops basic competency in software requirements engineering and management. Students gain
knowledge and practical experience with the fundamentals of requirements elicitation, explication, validation,
management, and assessment.
CSI 4282-3 Software Development Management (3 + 0)
Prerequisite: CSI 4250 or permission of department
This course provides students with exposure to a broad set of principles and practices affecting the success and
failure of software development efforts and productivity of teams involved in such efforts. The role and tasks of
the software development manager are explored in detail. Note that this course is specific to software development
and is not a general management course (see MGT courses).
CSI 4283-3 Software Testing and Quality Assurance (3 + 0)
Prerequisite: CSI 4250 or permission of department
This course exposes the student to the key concepts and practices in software testing and quality assurance. Topics
covered include aspects of software quality assurance relevant to all phases of the software life cycle, alternative
approaches to software testing, application of current automated tools, standards, and emerging trends.
CSI 4284-3 Software Product Engineering (3 + 0)
Prerequisite: CSI 4250 or permission of department
This course surveys fundamental topics necessary for successful software product engineering, including
usability engineering, software configuration management (SCM), and an overview of legal issues for software
engineers.
CSI 4285-3 Best Practices in Software Development (3 + 0)
Prerequisites: CSI 4260 or two of: CSI 4281, CSI 4282, CSI 4283, CSI 4284; or permission of department
This course exposes the student to current best practices and emerging methodologies in software engineering
and software product development. Topics are chosen to reflect the current state of the care and practice. (A
typical set of such topics includes: software architecture as a discipline, design patterns, eXtreme Programming,
recent technology in security, and aspect-oriented programming.)
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.
|