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 CGIs.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