Computer Science (CS)
How to Read Course Descriptions
The bolded first line begins with a capitalized abbreviation that designates the subject area followed by the course number and title. The number of credits earned by taking the courses is also displayed.
The course description is a brief summary of the purpose of the course and the topics covered. Any requisite courses are listed and could include the following:
- Courses showing the abbreviation “COREQ” require simultaneous registration with each course named as a corequisite.
- The abbreviation “PRE-or-COREQ” means that each course named may have been taken prior to or may be taken concurrently with the course for which it is required.
- Courses showing the abbreviation “PREREQ” require the courses named as prerequisites to have been taken previously.
If the course can be applied towards a General Education Objective, the applicable Objective is listed.
To assist with your academic planning, courses in the Undergraduate Catalog are designated according to the semester they are usually offered. Unanticipated faculty vacancies and academic program changes may affect future course scheduling. Therefore, students should always contact the academic department to verify future course offerings, especially when specific courses are needed for graduation.
The following letters which appear after the course descriptions indicate the anticipated course scheduling:
F = Fall Semester, every year
S = Spring Semester, every year
Se = Sequential; a series of courses is presented until all have been taught.
Su = Summer Semester, every year
EF, ES, ESu = Even-numbered years, Fall, Spring, or Summer Semester
OF, OS, OSu = Odd-numbered years, Fall, Spring, or Summer Semester
D = Students should contact the Department to ask when this course will be offered.
R1 = Course is rotated every year, either Fall or Spring
R2 = Course is rotated every two years, either Fall or Spring
R3 = Course is rotated every three years, either Fall or Spring
CS 1181 Computer Science and Programming I: 3 semester hours.
Problem solving methods and algorithm development with an emphasis on programming style. Secure software design/coding concepts for resilient software. Equivalent to INFO 1181. Satisfies Objective 7 of the General Education Requirements. PRE-or-COREQ: MATH 1143 or MATH 1147. F, S
CS 1187 Applied Discrete Structures: 3 semester hours.
Discrete structures in CS and EE. Boolean algebra and logic; sets, functions, and relations; iteration, recursion, and induction; algorithms; programming in pseudocode; basic counting principles; graphs and trees; and other selected topics from discrete mathematics. Equivalent to MATH 1187. PREREQ: CS 1181/INFO 1181. S
CS 1337 System Programming and Assembly: 3 semester hours.
Effect of computer architecture on the performance and correctness of code including data representation, machine language, compilation, code optimization, memory hierarchy, linking, pipelining, virtual memory, I/O and storage, and operating systems. Assembly programming. PREREQ: CS 1181. F
CS 2235 Data Structures and Algorithms: 3 semester hours.
Implementation, usage, and design concerns of important data structures and their operations. Implementation and discussion of basic search and sorting algorithms. Discussion will include both O(n log n) and linear sorting algorithms. Incorporates aspects of time complexity and asymptotic analysis of algorithms. Students will be required to develop small to medium sized programs. PREREQ: CS 1181. F,S
CS 2263 Advanced Object-Oriented Programming: 3 semester hours.
Advanced software development with an object-oriented focus. Design, implementation, and testing of several large programs using current technologies. Includes a discussion of the philosophy, application, and examples of object-oriented concepts and techniques; comprehensive survey of software engineering design patterns.PREREQ: CS 2235. S
CS 2299 Experimental Course: 1-6 semester hours.
The content of this course is not described in the catalog. Title and number of credits are announced in the Class Schedule. Experimental courses may be offered no more than three times with the same title and content. May be repeated.
CS 3305 Introduction to Computational Theory: 3 semester hours.
Finite state automata, regular languages, lexical analysis; push-down automata, context-free languages, parsing; Turing machines and unrestricted grammars; computability complexity, NP-completeness. PREREQ: CS 1187/MATH 1187. F
CS 3316 Social Issues and Professional Practices in Computing: 3 semester hours.
Societal impact of computer technology, the computer scientist's place in society, ethical issues. Reading, discussion, and writing seminar. Essential skills for finding, applying for, and obtaining internships in CS. PREREQ: ENGL 3307 or ENGL 3308. F
CS 3321 Introduction to Software Engineering: 3 semester hours.
Techniques and tools for conceiving, designing, testing, deploying, maintaining, and documenting large software systems with particular focus on the structured analysis and design phases including task analysis, human factors, costs, and project and team management. PREREQ: CS 2263. F
CS 3337 Advanced Systems Programming: 3 semester hours.
Continuation of CS 1337, Systems Programming and Assembly. Introduction to fundamental concepts in networks, operating systems, basic client/server implementation, and parallel programming. PREREQ: CS 1337. S
CS 3393 Computer Science Internship: 1-3 semester hours.
Internship program coordinated by Computer Science faculty providing significant exposure to computer science issues and techniques. May not be used to fulfill computer science major or minor requirements. PREREQ: CS 2263 and CS 3316, and permission of instructor. D
CS 4412 Advanced Algorithms: 3 semester hours.
Further exploration of advanced topics in algorithms and data structures. Application of time complexity and mathematical analysis of algorithms, including best, worst, and average case analysis. Discussion and application of several algorithm design techniques including Brute force, Greedy, Divide-and-conquer, decrease-and-conquer, Dynamic programming, Transform-and-conquer, Backtracking and branch-and-bound, Probabilistic, and Approximation Algorithms approaches. PREREQ: CS 2263, CS 3305 and MATH 1175. S
CS 4418 Bioinformatics: 3 semester hours.
Examines computational methods for analyzing biological systems. Dynamic programming, Markov models, Neural Networks and Bayesian analysis are used to predict secondary structure, tertiary structure and active sites for drug docking given molecular DNA sequence analysis. PREREQ: CS 4412. D
CS 4420 Computer Security and Cryptography: 3 semester hours.
Public key and private key cryptography, key distribution, cryptographic protocols, requisite mathematics and selected topics in the development of security and cryptography. PREREQ: CS 4412. D
CS 4421 Software Architecture and Requirements Engineering: 3 semester hours.
An introduction to the design and implementation of large software systems. Includes the application of software architecture patterns, architectural tactics, analysis of software architectures, selection of architectural patterns to meet functional and non-functional requirements, and the use of architecture to meet quality standards. The course will also include methods of documenting and recovering existing architectures. Students, working in teams, will develop and evolve a large software product through multiple architectural patterns using current methods and tools found in the software industry. PREREQ: CS 3321. D
CS 4422 Software Testing and Formal Methods: 3 semester hours.
An introduction to the theory and techniques used in software testing and formal design method. Includes topics related to code coverage, program analysis, test design, and advanced concepts such as mutation testing, metamorphic testing, and test automation. The second half of the course focuses on formal modelling techniques for the specification, verification and validation of software designs. PREREQ: CS 3321. D
CS 4423 Software Evolution and Program Analysis: 3 semester hours.
An exploration of the theory and issues surrounding the maintenance and improvement of existing software systems. Topics will include the identification and triage of software bugs, patching and deploying fixes to existing software systems, refactoring software in large code bases, and the processes for managing change and maintenance of software systems. The second half of this course will focus on the identification of issues in software using program analysis. Specifically, focusing on current techniques used in static and dynamic analysis of software to identify maintainability, security, and performance issues. The course will culminate in two projects, one being the successful modification and refactoring of a large software system and the second in the development of a basic dynamic analysis tool. PREREQ: CS 3321. D
CS 4424 Secure Software Engineering: 3 semester hours.
Introduction to the Secure Software Development Lifecycle and the tools and techniques used in practice to design and develop software from a security standpoint. This course will also discuss methods of analyzing software for security vulnerabilities, detecting threats through current testing techniques, and the management and mitigation of risk in the software development process. PREREQ: CS 3321. D
CS 4442 GUI Development: 3 semester hours.
Planning and construction of Graphical User Interfaces and discussion of essential software engineering concepts. Includes the use of a modern toolkit language. PREREQ: CS 3321. D
CS 4451 Database Theory Design and Programming: 3 semester hours.
Data models, relational algebra and calculus, SQL and stored procedures, database design, ER diagrams, normalization theory, data storage, index structures, performance analysis, concurrency control. Database programming language access. Uses a different programming language. PREREQ: CS 4412. D
CS 4458 Computer Graphics: 3 semester hours.
CS 4470 Parallel Processing: 3 semester hours.
Topics in high-performance computing: parallel architectures, SIMD, MIMD, SMP, NUMA models, message passing, cache coherency issues, MPI, PVM, parallel programming languages, cluster and grid approaches, applications and experience programming on a cluster. PREREQ: CS 3337. D
CS 4471 Operating Systems: 4 semester hours.
Theory, design, and implementation of software systems to support the management of computing resources. Concurrency, mutual exclusion and synchronization, CPU scheduling. Process, memory, and security. I/O files, and device management. Scripts and shells. Extensive systems programming including implementation of a portion of an operating system. PREREQ: CS 3337. D
CS 4472 Artificial Intelligence: 3 semester hours.
Introduction to the history, philosophy, and general algorithms for artifical intelligence. PREREQ: CS 4412. D
CS 4473 Computational Creativity: 3 semester hours.
Introduction to the the art, science, philosophy and engineering of computational systems which, by taking on particular responsibilities, exhibit behaviours that unbiased observers would deem to be creative. PREREQ: CS 2263. D
CS 4478 Machine Learning: 3 semester hours.
Introduction to the philosophy, utility, and models of machine learning, such that students are able to understand the basic concepts and issues of machine learning. Students will be prepared to use machine learning approaches in real world applications and/or to continue in a graduate research program. Topics covered include neural networks, decision trees, nearest neighbor learning, data mining, feature selection, clustering, ensembles, reinforcement learning, genetic algorithms, and deep learning. PREREQ: CS 4412 and MATH 2240. D
CS 4479 Natural Language Processing: 3 semester hours.
An introduction to Statistical Natural Language Processing (Stat. NLP) for solving problems involving natural (human) language. NLP and language technologies have become an important part of the programmer's toolbox when working with text, speech, and other language data. PREREQ: CS 4412. D
CS 4481 Compilers: 3 semester hours.
Design and construction of compilers. Theory and pragmatics of lexical, syntactic, and semantic analysis. Interpretation. Code generation for a modern architecture. Run-time environments. Includes a large compiler-implementation project. PREREQ: CS 3305 and CS 4412. D
CS 4488 Capstone Project: 3 semester hours.
Analysis, specification, design, implementation, and testing of a large software project. Formal approach and tools. Software lifecycle. Human computer interaction. Project and team management. Uses a different programming language. PREREQ: INFO 4407, and PRE-OR-COREQ: CS 3337 and CS 4412. D
CS 4492 Special Problems in Computer Science: 3 semester hours.
Research and reports on problems or topics in computer science. May be repeated for up to 9 credits with different content. PREREQ: Permission of instructor. D
CS 4494 Undergraduate Research: 1-3 semester hours.
Students will engage in a research project under the supervision of a research instructor, learning fundamental skills in conducting and publishing research in computer science. May be repeated for up to 9 credits with different content. PREREQ: Consent of instructor. D
CS 4499 Experimental Course: 1-6 semester hours.
The content of this course is not described in the catalog. Title and number of credits are -announced in the Class Schedule. Experimental courses may be offered no more than three times with the same title and content. May be repeated.