Undergraduate CS Courses

CS 1001 - Introduction to Computer Science

An overview introduction to the field of computer science.

CS 1043 - Introduction to Programming and Problem-Solving

Introduction to a disciplined approach to problem-solving methods and algorithm development using procedural and data abstraction. Coding, debugging, testing, and documentation, using an object-oriented development environment. Programming language is Java.

CS 2003 - Fundamentals of Algorithm and Computer Applications

Continuation of CS 1043. Further development of a disciplined approach to design, coding, and testing of programs written in an object-oriented language. Various implementations of abstract data types, including lists, stacks, queues and introduction to trees. Introduction to algorithm analysis, sorting and searching.
Prerequisite: CS 1043

CS 2033 - Computer Architecture, Organization and Assembler

Introduction to computer hardware organization, instruction execution, and the relationships between higher-level programming languages and machine language. Information flow and control. Instruction and data representation. Assembly language features including control and communication with simple I/O devices and interfaces between assembly programs and high level languages. Survey of modern computer and microprocessor organization.
Prerequisite: CS 1043 or permission of instructor

CS 2123 - Data Structures

Basic concepts of data, lists, strings, arrays, B trees, AVL trees, hashing, and algorithm analysis. Representation of trees and graphs, storage systems and structures, storage allocation. Emphasis on various algorithm techniques. Students will write programs in C++ and Java.
Prerequisite: CS 2003

CS 2163 - Computer Design, Organization, and Logic

Boolean algebra, combinational circuits, truth tables, maps, minimization techniques. Sequented circuits, stable and unstable states, state diagrams, and flow tables. Computer organization.
Prerequisite: CS 2033
Credit is not given for both CS 2163 and EE 2163.

CS 2503 - Scientific Programming

Computational issues in science and engineering problem-solving. Computer implementation of models and numerical methods used in solving science and engineering problems. C++ programming on a UNIX workstation emphasized. Other computational and visualization tools are introduced. Network access to scientific libraries and data augments the computational environment.
Corequisite: MATH 2024
Prior programming experience helpful but not required.

CS 3003 - Comparative Programming Languages

Detailed analysis of the concepts and constructs of modern programming languages. Comparative study of programming languages. Emphasis on imperative languages; discussion of functional, object-oriented and logical programming languages.
Prerequisite: CS 2003

CS 3013 - Discrete Mathematics

Theory and applications of mathematical models fundamental to analysis of discrete problems. Introduction to set theory, relations and functions. Principles of counting and other combinatorial problems. Introduction to graph theory and its application to algorithm analysis. Formal logic, methods of proof and correctness of algorithms. Recursion and recursive definitions.
Prerequisite: MATH 2014 or permission of instructor
Same as MATH 3013

CS 3043 - Website Design and Implementation

An introduction to Human-Computer Interfaces and programming tools required to build web documents. Topics include human memory and perception, user and task analysis, prototyping and evaluation, content and visual organization, navigation, color and typography guidelines, accessibility, globalization and trust. Current markup languages, web programming style and dynamic web document development, and introduction to CGI’s.
Prerequisites: CS 2003

CS 3053 - Operating Systems

Introduction to operating system design. Views of operating system as a computer resource manager and as coordinator of competing processes. Process synchronization and deadlock avoidance. UNIX as a standard example. Comparison of several current operating systems.
Prerequisites: CS 2033 and CS 2123

CS 3243 - Computer Applications Programming

Windows programming. Languages of ANS1, Visual C++, Visual Basic, Fortran, and Java studied as programming platforms. Also covers production of Dynamic Link Libraries for use by C++ and Visual Basic programs. Windows NT Operating System used primarily, but Java used for multi-platform applications development. Heavily project/homework oriented.
Prerequisites: CS 2003 or permission of instructor

CS 3353 - System Administration

Introduction to computer system administration as a practical discipline. Covers technical, theoretical and ethical aspects of system administration. Topics include Linux, Unix, Microsoft Windows covering installation, configuration, operation† and security management. Assignments use one or more scripting languages such as Unix shells, Perl, and Awk.
Prerequisite: CS 2003

CS 4013 - Compiler Construction

Algebraic language syntax and semantic definition. Languages, grammars and parsing algorithms. Semantics processing. Attribute grammars and syntax-directed translation. Declarations processing, type-checking, storage allocation, code generation.
Prerequisites: CS 2123 and CS 3003

CS 4063 - Computer Architecture

Operating systems strategies and architecture features required to support them. Alternative. implementations. Survey of advanced topics in a variety modern computer and microprocessor architectures.
Prerequisite: CS 2033 or permission of instructor

CS 4123 - Theory of Computing

Finite automata. Regular languages and grammars. Properties of regular languages. Context free languages and grammars. Pushdown automata. Properties of context free languages. Chomsky hierarchy. Turing machines. Limits of algorithmic computation.
Prerequisite: CS 3013

CS 4153 - Computer Security

Introduction to security problems in computing, basic encryption and decryption techniques, secure encryption systems, cryptographic protocols and practices, security in networks and distributed systems, legal and ethical issues in computer security.
Prerequisites: CS 3013 and CS 3053

CS 4163 - Database Systems

Thorough introduction to theory and practice of database systems. Emphasis on theoretical considerations involved in modeling data and designing easy to use, efficient database systems. Also covers practical issues of query languages and optimization, transaction processing, concurrency control and recovery techniques as well as embedding structured queries in high-level language.
Prerequisites: CS 2123 and CS 3013

CS 4213 - Object-Oriented Software

Concepts and techniques of object-oriented software construction are motivated by improving quality, reusability, and extendibility. Classes, assertions, genericity, inheritance, polymorphism, and dynamic binding are illustrated using contemporary environments.
Prerequisite: CS 2123 or permission of instructor

CS 4253 - Artificial Intelligence

Comprehensive introduction to the principles and techniques of artificial intelligence (AI). Emphasis on scientific and technological motivations for AI. In-depth coverage of agents and environments, search techniques, game playing, knowledge representation, rule-based reasoning, logic, planning, learning, reasoning under uncertainty. Programming in LISP and rule-based languages.
Prerequisites: CS 2123 and CS 3013

CS 4323 - Data Communication and Networking

Overview of networking issues. Includes discussion of the physical media used in modern networks and of wireless technology. Networking standards such as Ethernet and fast Ethernet. Networking protocols such as DHCP, TCP/IP, IPX/SPX, SNMP, ICMP, RIP etc. Networking hardware such as routers, bridges, receivers and transceivers.
Prerequisite: CS 3053 or permission of instructor

CS 4333 - Computer Networks

Foundations of computer network design: requirements, architecture, and software. Layering and protocols. OSI and Internet architecture. Direct link networks: building blocks, encoding, framing, error detection, reliable transmission and media access control.
Prerequisite: CS 3053 or permission of instructor

CS 4353 - Parallel Programming

Discussion of languages and environments for programming parallel processors including program annotations, language extensions, and software tools. Discussion of shared and distributed memory paradigms, and homogeneous and heterogeneous parallel computing. Issues of vector and data parallel computing. Portability and performance evaluation, concepts and tools.
Prerequisite: CS 2503 or CS 3003, and consent of instructor

CS 4363 - Distributed Computing

Concepts and architectures for distributed and concurrent computing. Distributed transaction processing, process synchronization and concurrency control. Quality of service, fault tolerance and security. COBRA, DCE ad DCOM, middleware. Coordination languages and distributed programming systems; Linda, PVM, JINI. Distributed Operating Systems.
Prerequisite: CS 3053

CS 4453 - Computer Law and Policy

Legal and political aspects of computers in society. Computer crime, Cyber-terrorism, copyright and internet privacy, access and freedom legislation. Public policy for cryptographic export controls, critical infrastructure protection, and global digital economy development.
Prerequisite: CS 2123

CS 4503 - Senior Software Projects I

First of a two-course sequence in software engineering. Formal and semi-formal methods of specification and design will be used to describe the various requirements of a non-trivial software system.
Prerequisites: CS 2123 and CS 3013

CS 4513 - Senior Software Projects II

Second of two-course sequence in software engineering. Involvement in actual requirements analysis, design, and implementation of a non-trivial software project. Emphasis on social and ethical implications of computing and software development, and on customer and team relations. Results of projects presented in writing. Oral presentations before staff and students required throughout semester.
Prerequisite: CS 4503 and senior standing

CS 4533 - Scientific Software Environments

Discusses case studies that illustrate the interplay of mathematical modeling, scientific computing and applied sciences and engineering. Attention to high performance architectures, software engineering methodology for large scale codes, and visualization of large data sets. Emphasis on high performance computing science and engineering problems. Extensive use of electronic textbooks. Computer projects required.
Prerequisites: MATH 3073 and either CS 2503 or CS 2003
Same as MATH 4533

CS 4613 - Fundamentals of Computer Graphics

Introduction to computer graphics software and hardware. Two and three-dimensional object descriptions and transformations, clipping scan conversion, and visible surface computations. Raster and vector organized display systems, hardcopy devices, interactive input devices. Emphasis on design of interactive systems.
Pre-requisite: CS 2123

CS 4863 - Special Topics in Computer Science


CS 4971-3 - Research and Computer Sciences Literature


CS 4983 - Senior Thesis

Each student investigates a computer science topic not covered by his or her previous undergraduate work. Submission of a written thesis and an oral presentation is required.
Prerequisites: Senior standing and departmental approval

CS 4991-3 - Independent Study


CS 5063 - Parallel Architectures

Advanced treatment of parallel computer architecture covering new technological developments, including details of multiprocessor systems, shared memory, distributed memory, interconnection networks, clusters, and specialized machines.
Prerequisite: CS 4063

CS 5183 - Information System Security Engineering

Engineering methods for the development of safety and security critical information systems. Secure software design and implementation. Information infrastructure maintenance and reliability. Specification, design and analysis of mission-critical system properties. Certification, accreditation and validation processes.
Prerequisite: CS 5443

CS 5193 - Risk Management for Information Systems

Risk analysis and threat profiling for mission critical information systems. Adversarial analysis and countermeasure synthesis. Policy development and implementation. Incident handling and response.
Prerequisite: CS 5443

CS 5243 - Computational Linear Algebra

Computational techniques for the solution of systems of linear and non-linear algebraic equations. Emphasis on the intelligent use of existing software packages. Laboratory exercises using matrix computation environment required.
Prerequisite: MATH 4123

CS 5263 - Scientific Computing

Computational techniques for the solution of systems of linear and non-linear algebraic equations. Emphasis on the intelligent use of existing software packages. Laboratory exercises using matrix computation environment required.
Prerequisite: CS 4553 or MATH 2024 and CS 2003

CS 5313 - Advanced Artificial Intelligence

Detailed overview of research issues relevant to computational approaches to understanding and creating intelligent behavior. Includes philosophical foundations, knowledge representation, planning, machine learning, multiagent systems. Students work in groups on final research project.
Prerequisite: CS 6613

CS 5323 - Multi-Agent Systems

A thorough introduction of the research and application of techniques for coordination of multiple, autonomous agents sharing common resources and/or goals. Students will work in groups on a final research project.
Prerequisite: CS 4253

CS 5333 - Machine Learning

Comprehensive survey of computational mechanisms that allow autonomous agents to acquire knowledge and expertise, improving performance on a given set of tasks from experience. Covers symbolic and sub-symbolic schemes; supervised, reinforcement, and unsupervised learning; single agent and multiagent systems; robot learning; learning information agents; practical applications. Group work on final research project.
Prerequisite: CS 4253

CS 5343 - Intelligent Agents

A thorough overview of agent based system concepts including analysis of key agent characteristics like autonomy, proactivity, learning, and social responsiveness. Particular emphasis is placed both on recognizing the opportunity and feasibility of developing novel and significant applications of agent based systems well as principled theoretical underpinnings, scientific approaches, mechanisms, and infrastructures necessary to develop such applications.
Prerequisite: CS 4253

CS 5353 - Analysis of Algorithms

A thorough overview of agent based system concepts including analysis of key agent characteristics like autonomy, proactivity, learning, and social responsiveness. Particular emphasis is placed both on recognizing the opportunity and feasibility of developing novel and significant applications of agent based systems well as principled theoretical underpinnings, scientific approaches, mechanisms, and infrastructures necessary to develop such applications.
Prerequisite: CS 2121 and CS 3013

CS 5403 - Secure Electronic Commerce

Electronic commerce technology, models and issues. Principles and case studies of electronic commerce. Introduction to security architectures for electronic commerce including digital signatures, certificates, and public key infrastructure (PKI). Legal and national policy electronic commerce issues.
Prerequisite: CS 2123 or permission of the instructor

CS 5433 - Distributed Algorithms

Components in a distributed system must communicate and cooperate toward the solution of a complex problem. Design and analysis of selected aspects of distributed algorithms governing these components. Topics include concurrency, distributed communication, and failures, Designing real world solutions to problems in distributed computing.
Prerequisite: CS 2123

CS 5443 - Information System Assurance

Design and analysis methods for high assurance information systems. Safety, reliability and security. Specification of mission-critical system properties. Software and hardware validation, verification and certification.
Prerequisite: CS 4153

CS 5463 - Enterprise Security Management

Managerial aspects of computer security and risk management for enterprises. Accreditation, procurement, extension and operation principles for secure computing systems.
Prerequisite: CS 5443

CS 5473 - Network Security

Comprehensive study of current and developing communications systems and networks. Host-based and network-based intrusion detection. Anomaly and misuse detection. Network security appliances including firewalls and access control devices. Topics are covered with all networks in mind: Internet, PSTN, ATM, Frame Relay Networks, etc.
Prerequisite: CS 4153

CS 5483 - Computer and Network Forensics

Procedures for the identification, preservation and extraction of electronic evidence. Auditing and investigation of network and host intrusions. Forensic tools and resources for systems administrators and information system security officers.
Prerequisite: CS 4153

CS 5493 - Secure System Administration and Certifications

Provisioning, procurement and installation of network, hardware and software systems for mission critical enterprises. System configuration, integration and maintenance. Incident handling and response.
Prerequisite: CS 5443

CS 5543 - Parallel Languages and Environments

Overview of language standards for parallel programming. Automatic detection of parallel sections for procedural languages. Discussion of shared memory and message-passing paradigms. Development of tools and environments for programming homogeneous and heterogeneous parallel processors.
Prerequisite: CS 4353 or permission from instructor

CS 5553 - Parallel Algorithms

Design and analysis of parallel algorithms with emphasis on distributed memory parallel computation. Topics include numerical problems, sorting algorithms, matrix operations, graph theory and combinational algorithms. Course open to students from other disciplines with strong mathematics background.
Prerequisite: CS 2123 and CS 3053or permission from instructor

CS 5623 - Evolutionary Computation

Provides basic knowledge of new methods in computer science inspired by evolutionary processes in nature. Includes: evolutionary computation, fundamentals of genetic algorithms, representations, genetic operators, and selection mechanisms. Theory of genetic algorithms. Schema theory and extensions. Genetic programming, and representation and genetic operators. Applications of evolutionary computation techniques to combinatorial optimization problems.
Prerequisite: CS 2123