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
3-2-4
Prerequisite: CS 1002 and MATH 1113 or concurrently
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
3-2-4
Prerequisite: CS 1301 and CS 1002
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
3-0-3
Prerequisite: MATH 1113 or concurrently
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
3-0-3
Prerequisite: MATH 2345
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
3-0-3
Prerequisite: CS 1302 and CS 3223
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
3-0-3
Prerequisite: CS 1302
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
3-0-3
Prerequisite: CS 2223 and CS 1301
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
3-0-3
Prerequisite: CS 3223 and CS 3424
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
3-2-4
Prerequisite: CS 1302 and MATH 2345
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
3-0-3
Prerequisite: CS 3243
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
3-0-3
Prerequisite: CS 3243
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
1 to 4 hours
Prerequisite: Junior standing
Special topics selected by the department. Offered on a demand basis.

CS 4134  Programming PDA's
4-0-4
Prerequisite: CS 3243
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
3-0-3
Prerequisite: CS 3243
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
3-0-3
Prerequisite: CS 3243
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
3-0-3
Prerequisite: CS 3243
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
4-0-4
Prerequisite: CS 3243
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
4-0-4
Prerequisite: CS 3424
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
3-0-3
Prerequisite: CS 3424
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
3-0-3
Prerequisite: CS 3424, MATH 2343 and senior standing
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
3-0-3
Prerequisite: MATH 2260 and a programming course
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
3-0-3
Prerequisite: CS 3424
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
3-0-3
Prerequisite: MATH 2345 and CS 3424
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
3-0-3
Prerequisite: MATH 2345 and CS 3424
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
4-0-4
Prerequisite: SWE 4624
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
4-0-4
Prerequisite: SWE 4624, ENGL 2010 and SPCH 2400
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
1 to 4 hours
Prerequisite: Senior standing
Special topics selected by the department. Offered on a demand basis.
 

Computer Science Graduate

CS 5123  Advanced Programming and Data Structures
3-0-3
Prerequisite:  CS 1301 or equivalent course
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
3-0-3
Prerequisite: CS 5123 or CS 1302 or IT 5113
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
3-0-3
Prerequisite:  CS 5123 or CS 3424
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
3-0-3
Prerequisite:  CS 1301 or equivalent course
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
3-0-3
Prerequisites:  CS 5123/3424 and CS 5223/3223
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
3-0-3
Prerequisites:  An undergraduate course in Calculus
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
3-0-3
Prerequisite:  CS 5423
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
3-0-3
Prerequisites:  CS 5123/3424 and CS 5423
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
3-0-3
Prerequisite:  CS 5153/3153 and CS 5423
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
3-0-3
Prerequisites:  CS 5123 and CS 5423
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
3-0-3
Prerequisites:  CS 5243/3243
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
3-0-3
Prerequisite:  CS 5243/3243
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
3-0-3
Prerequisite:  CS 5243/3243
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
3-0-3
Prerequisite:  CS 5243/3243
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  Applied Cryptography
3-0-3
Prerequisites:  CS 5123 and CS 5423
This course covers the fundamentals of cryptographic and coding principles, cryptographic algorithms, implementations, and their applications in communications and computer systems security.  Topics include public key systems, block ciphers, stream ciphers, digital signatures, error-correcting and detecting codes, key management techniques, and efficient implementation.

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
3-0-3
Prerequisites:  CS 5123/3424 and CS 5423
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
3-0-3
Prerequisites:  CS 5423
A study of topics from theoretical computer science that includes automata and languages, computability theory, and complexity theory.

CS 6423  Algorithmic Processes
3-0-3
Prerequisites:  CS 5123/3424 and CS 5423
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
3-0-3
Prerequisites:  CS 5123/3424, Matrix Algebra, and Probability and Statistics
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
3-0-3
Prerequisite:  CS 5123/3424 and CS 5423
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
3-0-3
Prerequisites:  CS 5123 and CS 5423
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
3-0-3
Prerequisites:  As determined by the Instructor and Program Head
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
3-0-3
Prerequisites:  Approval of course director
Independent study/project under the direction of a graduate CS faculty member.

CS 6901-6903  Special Topics
1 to 3 hours
Prerequisite:  As determined by the Instructor and Program Head
Special topics selected by the program head.  Offered on a demand basis.  A student may repeat this course with special permission.

CS 7803  Master's Thesis
3-0-3
Prerequisite:  Consent of the Program Head and the Thesis Advisor
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.