Computer Science
CS 1002 Introduction to the Computing Disciplines 2-0-2 This course examines the various aspects of computer science in today's world.  The students will become familiar with topics such as computer software, hardware, networks, operating systems, web development and data processing.  They will also be exposed to what is expected in the field of computer science and types of job opportunities available.  Speakers will be brought in for various topics.  Institutional credit only.
CS 1301 Computer Science I
Prerequisite: CS 1002 and MATH 1113 or concurrently
3-2-4 This course provides an introduction to computer science with a focus on structured programming.   Topics include an overview of programming, problem-solving and algorithm development, simple data types, arithmetic and logical operators, selection and repetition structures, text files, arrays, procedural abstraction and software design, and modular programming including subprograms.  Programming assignments focus on the techniques of good programming style and how to design, code, debug, and document programs.  The student will be able to solve problems using top-down design and modularize their solutions with proper use of abstraction mechanisms.
CS 1302 Computer Science II
Prerequisite: CS 1301 and CS 1002
3-2-4 This second course in computer science provides a focus on both abstraction and advanced programming techniques of object-oriented programming.  Topics include abstract data types, multi-dimensional arrays and records, recursion, pointers and linked lists, use of parameterized types, software engineering concepts, and introduction to the usage of dynamic data structures (stacks, queues, and trees) to solve application problems. The student will be able to solve problems using objects, including designing and writing their own.  Programming assignments emphasize good software development principles such as information hiding, re-use, use of symbolic debuggers, and separate compilation.
CS 2123 C Programming
Prerequisite: MATH 1113 or concurrently
3-0-3 This course covers the beginning concepts of programming logic and algorithms using the C Programming Language.  Procedural programming style is used in the labs.  (CS and SWE majors may not receive degree credit for this course).
CS 2223 Digital Design
Prerequisite: MATH 2345
3-0-3 A study of the digital devices and circuits used in the implementation of computer systems.  Pertinent topics include Boolean algebra and logic concepts, design and minimization of combinational and sequential logic circuits, and modern digital-design software tools such as VHDL.
CS 3123 Programming Language Concepts
Prerequisite: CS 1302 and CS 3223
3-0-3 A comparative study of programming languages covering their history, development, and different design criteria; their formal definitions of syntax and semantics; their concepts and constructs; and the similarities and differences between languages. This course includes examination of object-oriented, functional, and concurrent languages, exception handling, modularization, scoping, etc. The use of programming tools that enable the student to practice the course objectives are incorporated.
CS 3153 Database Systems
Prerequisite: CS 1302
3-0-3 The topics in this course span from a review of the traditional file processing systems to database management systems.  Topics include files systems and file processing logic, planning, and major phases of database development: analysis, design and implementation.  Labs use an SQL based database product such as Oracle.
CS 3223 Computer Architecture
Prerequisite: CS 2223 and CS 1301
3-0-3 A study of instruction set architectures; basic processor components such as control units, ALU's, and registers; memory; input/output; and performance enhancement using caches and pipelines. Design of the major processor components is discussed in terms of the concepts presented in CS 2223.  Some coverage of assembly language programming is included.
CS 3243 Operating Systems
Prerequisite: CS 3223 and CS 3424
3-0-3 An introduction to basic operating system principles. Process management, memory management (real and virtual), peripheral device management, file systems, and distributed systems are introduced and examined from a conceptual viewpoint. Selected aspects of operating systems are explored in greater depth via software simulation projects.
CS 3424 Data Structures
Prerequisite: CS 1302 and MATH 2345
3-2-4 Common data structures and algorithms for their processing are covered.  Elementary analysis of algorithms is included.  Data structures include stacks, queues (including priority queues), binary search trees, advanced trees, graphs and their representations (including depth- and breadth-first traversals), and hash tables (including collision-avoidance strategies).  Additional topics include searching and sorting.  All data structures are presented using object-oriented implementations, including inheritance.
CS 3663 Applications Programming in Java
Prerequisite: CS 3243
3-0-3 The computer programming language Java is presented with emphasis on its use for developing graphical user interfaces and client/server applications. Laboratory projects are required.
CS 3683 Applications Programming in Ada
Prerequisite: CS 3243
3-0-3 The computer programming language ADA is presented with a focus on its use in applications that involve multi-tasking and as a vehicle for applying a software engineering approach to software development. Laboratory projects are required.
CS 3901-3904 Special Topics
Prerequisite: Junior standing
1 to 4
hours
Special topics selected by the department. Offered on a demand basis.
CS 4134 Programming PDA's
Prerequisite: CS 3243
4-0-4 This course offers a first-hand programming experience with Personal Digital Assistants.  The course addresses issues particular to small, portable devices, such as their GUI, storage and synchronization.  It also explores the wireless environment where these devices would interact.
CS 4243 Systems Programming
Prerequisite: CS 3243
3-0-3 This course covers command line, shell, scripting and system tools like AWK and PERL.  It also covers Unix file I/O and process control, as well as the use and construction of user interfaces.
CS 4253 Distributed Computing
Prerequisite: CS 3243
3-0-3 A course that introduces students to the fundamental principles common to the design and implementation of programs that run on two or more interconnected computer systems.  The subtopics, which are based on these principles, include: distributed operating system and network protocols for process communication, synchronization, scheduling, and exception and deadlock resolution; understanding of client-server, web-based collaborative systems; parallel computing; concurrency issues; and API's for distributed application development.  Several distributed computing environments, like MPI, PVM, and Java RMI are discussed and used in developing experimental projects in a cluster of networked computers.
CS 4263 Computer Networks
Prerequisite: CS 3243
3-0-3 This course broadly covers networking technology from the bottom up.  It begins with physical media (copper wire, optical fiber, radio), moves to electrical signaling (carriers, modulation), digital encoding, error detection, data framing and media access strategies.  Physical and data link layer devices are studied along with popular topologies.  Most popular data-link protocols are reviewed.  The course includes an introduction to TCP/IP protocols.
CS 4284 Real-Time Systems
Prerequisite: CS 3243
4-0-4 This course covers the software-development life cycle as it applies to real-time systems. Labs involve the use of a real-time operating system and an associated development environment. System performance issues are also discussed.  Major project included.
CS 4354 Computer Graphics and Multimedia
Prerequisite: CS 3424
4-0-4 The basic principles and practices of interactive computer graphics and multimedia systems are covered in this introductory course. The design and implementation of state-of-the-art computer graphic rendering and visual multimedia systems are the main part of the course. The sub-topics of the course deal with specific input/output hardware devices and their technology, software and hardware standards, programming methods for implementing 3-dimensional graphical applications and interactive multimedia applications, and a study and evaluation of the effectiveness of graphic/multimedia communications. A large component of the class is the building of a large-scale application.
CS 4413 Algorithm Analysis
Prerequisite: CS 3424
3-0-3 Advanced algorithm analysis including the introduction of formal techniques and the underlying mathematical theory.  Topics include asymptotic analysis of upper and average complexity bounds using big-O, little-o, and theta notation.    Fundamental algorithmic strategies (brute-force, greedy, divide-and-conquer, backtracking, branch-and-bound, pattern matching, and numerical approximations) are covered.    Also included are standard graph and tree algorithms.  Additional topics include standard complexity classes, time and space tradeoffs in algorithms, using recurrence relations to analyze recursive algorithms, non-computable functions, the halting problem, and the implications of non-computability.  Algorithmic animation is used to reinforce theoretical results.  Upon completion of the course, students should be able to explain the mathematical concepts used in describing the complexity of an algorithm, and select and apply algorithms appropriate to a particular situation.
CS 4423 Logical Foundations of Computer Science
Prerequisite: CS 3424, MATH 2343 and senior standing
3-0-3 An elective course surveying computability theory, finite state machines, automata, parsing, grammars, and selected aspects of compiler construction. Particularly useful for students contemplating attending graduate school in computer science.
CS 4453 Simulation and Modeling
Prerequisite: MATH 2260 and a programming course
3-0-3 An introduction to the basic role of simulation in system modeling. Presents approaches to organizing and conducting simulation studies. Emphasis is on the principles and practice of discrete-event simulation using one or more applicable programming languages.
CS 4523 Artificial Intelligence
Prerequisite: CS 3424
3-0-3 A survey of Artificial Intelligence principles and applications, along with in-depth coverage of search techniques.  Some emphasis on knowledge representation and problem-solving strategies is included.
CS 4533 Digital Image Processing
Prerequisite: MATH 2345 and CS 3424
3-0-3 Application of digital image processing.  Topics include image enhancement and restoration, image transforms, geometrical image modifications, edge detection, image segmentation and classification, image coding, feature extraction, morphological image processing, and parallel image processing.
CS 4543 Neural Computation
Prerequisite: MATH 2345 and CS 3424
3-0-3 Application of brain-style computing models.  Topics include fundamentals of artificial neural networks, pattern classification, perceptrons, back-propagation, counter-propagation networks, Hopfield nets, bi-directional associative memories, competitive learning algorithms, and adaptive resonance theory.
CS 4554 Expert Systems
Prerequisite: SWE 4624
4-0-4 An introduction to the development of expert systems, with emphasis on the roles of domain knowledge, knowledge acquisition, expert knowledge representation, and implementation. A major project is required.
CS 4894 Computer Science Capstone
Prerequisite: SWE 4624, ENGL 2010 and SPCH 2400
4-0-4 Team projects in software design, construction, implementation of project management and quality assurance plans, and configuration management for a complex real-world application project.  The capstone project offers the opportunity to integrate the knowledge acquired in preceding courses. Coverage of topics include human-centered evaluation and development; GUI design and programming; effective team management; and communication skills.
CS 4901-4904 Special Topics
Prerequisite: Senior standing
1 to 4
hours
Special topics selected by the department. Offered on a demand basis.
 
Computer Science Graduate
CS 5123 Advanced Programming and Data Structures
Prerequisite:  CS 1301 or equivalent course
3-0-3 Transition course for graduate students with a limited background in programming. Topics include pointers, recursion, data structures such as lists, stacks, queues, trees, etc., sorting and searching, data abstraction, introduction to runtime analysis and the big-oh notation. Appropriate programming projects are also included.
CS 5153 Database Systems
Prerequisite:  CS 5123 or CS 1302 or IT 5113
3-0-3 Transition course.  This course provides an overview of various database models including relational, object-oriented, hierarchical, and network.  Also covered are various file structures including sequential, indexed sequential, and direct.  It covers planning, analysis, design, and implementation of a database.  Entity Relationship models and normalization are covered.  It covers an SQL-based database system such as Oracle.  A major project and/or paper required.
CS 5183 Object-Oriented Programming
Prerequisite:  CS 5123 or CS 3424
3-0-3 Transition course.  Topics to be covered include encapsulation and abstraction, objects and classes, inheritance, polymorphism, class libraries, and messaging.  The course includes major project(s) and/or paper(s).
CS 5223 Computer Architecture
Prerequisite: CS 1301 or equivalent course
3-0-3 Topics from the principles of computer organization and architecture include number systems, digital logic, basic logic design in combinational and sequential circuits, and assembly and machine language.
CS 5243 Operating Systems
Prerequisites:  CS 5123/3424 and CS 5223/3223
3-0-3 Topics from the principles of operating systems include management of resources including processes, real and virtual memory, jobs, processes, peripherals, network, and files.
CS 5423 Mathematical Structures for Computer Science
Prerequisites:  An undergraduate course in Calculus
3-0-3 Transition course.  Topics from discrete mathematics include set theory, relations and functions, principles of counting, introductory graph theory, formal logic, recursion, and finite state machines.
CS 6023 Research Methods and Presentations 3-0-3 Materials and methods of scholarly research in computer science. Includes study of standard research paradigms with illustrative cases of each and the use of research methods and presentations in industrial and business settings.
CS 6103 Discrete-Time Signals and Systems
Prerequisite:  CS 5423
3-0-3 Underlying principles of discrete-time signals and digital signal processing. Topics include mathematical representation of discrete-time signals and systems, sampling theorem and aliasing, introduction to difference equations, IIR and FIR filters, DTF, FFT, and Z-Transforms.
CS 6123 Theory and Implementation of Programming Languages
Prerequisites:  CS 5123/3424 and CS 5423
3-0-3 Comparative study of programming language paradigms with emphasis on design and implementation issues.  Covers formal definitions of syntax and semantics, data types, static and dynamic storage allocation, definition of operations, control of program flow, subroutine and function linkages, formal tools for characterizing program execution, and abstraction techniques.
CS 6153 Advanced Database Systems
Prerequisite:  CS 5153/3153 and CS 5423
3-0-3 An advanced course in database systems emphasizing design issues and implementation tradeoffs.  It covers the theory, algorithms, and methods that underlie distributed databases.  Relational algebra is discussed.  The client-server architecture and application development are also covered.
CS 6163 Information Retrieval and Search Engines
Prerequisites:  CS 5123 and CS 5423
3-0-3 The course covers efficient storage and effective retrieval of large amounts of unstructured text information, including an overview of conventional IR techniques and newer perspectives.
CS 6223 Advanced Computer System Architecture
Prerequisites:  CS 5243/3243
3-0-3 Topics include computer performance issues, instruction set architectures, RISC versus CISC, machine language, microprocessor design and implementation, performance enhancing techniques, cache memory design, and implications to operating system design.
CS 6243 Advanced Concepts in Operating Systems
Prerequisite:  CS 5243/3243
3-0-3 Topics from the theory of operating systems include: memory and process management of high-performance architectures that address concurrent, parallel, and distributed processing.
CS 6263 Computer Networks
Prerequisite:  CS 5243/3243
3-0-3 Issues involved in computer communications are examined, based on the layered ISO/OSI Reference Model and the TCP/IP Protocol suite.  A bottom-up approach is taken with particular emphasis placed on the physical, data link, and network layers.  Topics include WANs, LANs, ADSL, and wireless communication systems.  Laboratory projects involve simulation of various aspects of computer Communication.
CS 6283 Real-Time Systems
Prerequisite:  CS 5243/3243
3-0-3 The software development life cycle as it applies to real-time systems.  Labs involve the use of a real-time operating system and an associated development environment.  Related topics such as concurrent task synchronization and communication, sharing of resources, schedulability, reliability, fault tolerance, and system performance are discussed.  Project included.
CS 6293 Information Security:  Implementation and Application
Prerequisites:  CS 5123 and CS 5423
3-0-3 This course covers the fundamentals of computing security, access control technology, cryptographic algorithms, implementations, tools and their applications in communications and computing systems security. Topics include public key infrastructure, operating system security, database security, network security, web security, firewalls, security architecture and models, and ethical and legal issues in information security.
CS 6323 Human Factors 3-0-3 The psychological, social, and technological aspects of interaction between humans and computers.  Includes usability engineering, cognitive and perceptual issues, human information processing, user-centered design approaches, and development techniques for producing appropriate systems.  Major project included.
CS 6353 Computer Graphics and Multimedia
Prerequisites:  CS 5123/3424 and CS 5423
3-0-3 A study of the hardware and software of computer graphics and multimedia systems from the programmer's perspective. Includes a survey of display and other media technologies, algorithms and data structures for manipulation of graphical and other media objects, and consideration of user interface design. Major project included.
CS 6413 Theory of Computation
Prerequisites:  CS 5423
3-0-3 A study of topics from theoretical computer science that includes automata and languages, computability theory, and complexity theory.
CS 6423 Algorithmic Processes
Prerequisites:  CS 5123/3424 and CS 5423
3-0-3 Design and analysis of algorithms.  Includes notations for representing algorithms, mathematical techniques for analyzing algorithms for appropriateness, efficiency, completeness, correctness, and decidability.
CS 6453 Simulation and Modeling
Prerequisites:  CS 5123/3424, Matrix Algebra, and Probability and Statistics
3-0-3 The application of various modeling techniques to the understanding of computer system performance.  Includes analytic modeling, queuing theory, continuous and discrete simulation methods, and the use of some simulation software tool to implement a major project.
CS 6523 Survey of Artificial Intelligence
Prerequisite:  CS 5123/3424 and CS 5423
3-0-3 A survey of the major issues in AI.  Knowledge representation, reasoning, and learning with AI programming techniques.  Current topics are also included.
CS 6563 Digital Image Processing and Analysis
Prerequisites:  CS 5123 and CS 5423
3-0-3 Theory and application of digital image processing.  Topics include sensing, sampling and quantization, image enhancement and restoration, image transforms, geometrical image modifications, edge detection, image segmentation and classification, image coding, feature extraction, image representation, morphological image processing, and parallel image processing.  Applications include satellite images and biomedical images.
CS 6593 Selected Topics in Artificial Intelligence
Prerequisites:  As determined by the Instructor and Department Chair
3-0-3 In-depth study of specific AI topics.  Possible topics include, but are not limited to, Expert Systems, Neural Networks, Genetic Algorithms, Machine Learning, Fuzzy Logic, etc.
CS 6703 Independent Study
Prerequisites:  Approval of course director
3-0-3 Independent study/project under the direction of a graduate CS faculty member.
CS 6901-6903 Special Topics
Prerequisite:  As determined by the Instructor and Department Chair
1 to 3
hours
Special topics selected by the Department Chair.  Offered on a demand basis.  A student may repeat this course with special permission.
CS 7803 Master's Thesis
Prerequisite:  Consent of the Department Chair and the Thesis Advisor
3-0-3 The thesis is designed for students wanting a research focus to their degree.  The student works independently under the supervision of a designated CS faculty member on a thesis of substance in computer science.  The student will generate a formal written thesis and give a final defense of the thesis.  This course may be repeated, but only 6 hours may be applied toward the degree.