C S-Computer Science

C S 1213. Programming for Non-Majors with Python.3 Credit Hours.

Prerequisite: Mathematics 1503 or concurrent enrollment. Introduction to the design and implementation of computer programs in the language Python. We will cover data types, control flow, iterations, functions, and the use of external libraries for text processing, graphics, image manipulation, web programming and others. Emphasis on problem solving with examples drawn from diverse disciplines. (F, Sp)

C S 1313. Programming for Non-Majors with C.3 Credit Hours.

Prerequisite: MATH 1523 or concurrent enrollment. Introduction to the design and implementation of computer programs. Emphasis on problem solving. Topics include: variables and constants, arithmetic and Boolean expressions, conditional statements, loops, procedures and functions, arrays, standard libraries, input and output, structures, and program documentation. (F, Sp)

C S 1321. Java for Programmers.1 Credit Hour.

Prerequisite: Departmental Permission; and Math 1523 or MATH 1743 or equivalent or concurrent enrollment, or placement into Math 1823 or higher. Introduction to computer programming using the Java programming language for students who are already proficient in another programming language. Topics include: variables and constants, arithmetic and Boolean expressions, conditional statements, repetition, methods, arrays, linear and binary search, basic sorting algorithms, object-oriented programming, documentation, and testing. Students may not take this class after passing CS 2334. (F, Sp)

C S 1323. Introduction to Computer Programming for Programmers.3 Credit Hours.

Prerequisite: Departmental Permission; and Math 1523 or MATH 1743 or equivalent or concurrent enrollment, or placement into Math 1823 or higher. Introduction to the design and implementation of computer software with an emphasis on abstraction and program organization for students with some prior programming experience. Topics include: variables and constants, arithmetic and Boolean expressions, conditional statements, repetition, methods, arrays, linear and binary search, basic sorting algorithms, object-oriented programming, documentation, and testing. Students may not take this class after passing CS 2334. (F, Sp)

C S 1324. Introduction to Computer Programming for Non-Programmers.4 Credit Hours.

Prerequisite: Departmental Permission; and Math 1523 or MATH 1743 or equivalent or concurrent enrollment, or placement into Math 1823 or higher. Introduction to the design and implementation of computer software with an emphasis on abstraction and program organization for students with no prior programming experience. Topics include: variables and constants, arithmetic and Boolean expressions, conditional statements, repetition, methods, arrays, linear and binary search, basic sorting algorithms, object-oriented programming, documentation, and testing. Students may not take this class after passing CS 2334. (F, Sp)

C S 2334. Programming Structures and Abstractions.4 Credit Hours.

Prerequisite: C S 1323 or 1321 or 1324, and MATH 1523 or higher. The design and implementation of computer programs using disciplined methodologies. Use of several abstract data types. Software reuse through encapsulation, composition, aggregation, inheritance, polymorphism, and generics. Topics include recursion, GUI development, file processing, and unit testing. A program design tool will be used. Introduction to ethics in computer science, including philosophical ethics theories. Discussion of intellectual property rights and privacy. (F, Sp)

C S 2414. Data Structures.4 Credit Hours.

Prerequisite: C S 2334 and MATH 1823 or 1914; and C S 2813 or MATH 2513, or concurrent enrollment in C S 2813 or MATH 2513. Representation, analysis and implementation of data structures and associated algorithms including: algorithm complexity, sorting algorithms, lists, stacks, queues, search trees (AVL, Red-Black, Splay, 2-3), Heaps, Graphs, and Hashing. Written communications required in some projects. Ethical issues and tools and techniques used in writing secure applications will also be discussed. The primary programming language is C++ with a debugging tool. (F, Sp)

C S 2614. Computer Organization.4 Credit Hours.

Prerequisite: CS 2334. An introduction to uniprocessor-based computer systems. Topics include: number systems, logic gates, Boolean algebra, minimization procedures, combinational logic functions, sequential logic design, registers, counters, uses, logic operations, arithmetic and logic unit design, addressing modes, instruction set design, register transfer language, interrupts, control logic design. Students will construct, test and debug digital circuits. (F, Sp)

C S 2813. Discrete Structures.3 Credit Hours.

Prerequisite: C S 2334; MATH 2423 or MATH 2924 as prerequisite or concurrent enrollment. Introduction to the theory of discrete structures useful in computer science. Topics include combinatorics, relations, functions, computational complexity, recurrences, and graph theory. (F, Sp)

C S 2970. Special Topics/Seminar.1-3 Credit Hours.

Special Topics. 1 to 3 hours. May be repeated; Maximum credit nine hours. Special topics course for content not currently offered in regularly scheduled courses. May include library and/or laboratory research, and field projects. (Irreg.)

C S 3113. Introduction to Operating Systems.3 Credit Hours.

Prerequisite: C S 2413 or C S 2414, and C S 2813 or MATH 2513, and C S 2614 or ECE 3223. An introduction to the major concepts and techniques of designing and implementing operating systems including: memory management, process management, information management, and computer security. Principles of performance evaluation. Class projects require the design and implementation of software systems. A UNIX family operating system will be used. (F)

C S 3203. Software Engineering.3 Credit Hours.

Prerequisite: C S 2413 or CS 2414, and C S 2813 or MATH 2513. Methods and tools for software specification, design, implementation, testing, code management and documentation. Emphasis on architectural modularity, encapsulation of software objects, and current industrial software development processes. Students will make reasoned choices among software components. Study of professional ethics, responsibility, and legal issues. No student may obtain credit for CS 3203 and C S 5213. (F, Sp)

C S 3323. Principles of Programming Languages.3 Credit Hours.

Prerequisite: C S 2413 or C S 2414, and C S 2813 or MATH 2513, and ENGL 3153 or BC 2813 or ENGR 2002 as a prerequisite or concurrent enrollment. An introduction to theoretical foundations and paradigms of programming languages. Topics include basic concepts such as lexical analysis, syntax analysis, type systems and semantics, some practical issues such as memory management and exception handling, and programming paradigms such as imperative programming, object-oriented programming, functional programming and scripting. (Sp)

C S 3440. Mentored Research Experience.3 Credit Hours.

0 to 3 hours. Prerequisite: ENGL 1213 or EXPO 1213, and permission of instructor; may be repeated; maximum credit 12 hours. For the inquisitive student to apply computer science in a project under the mentorship of a faculty member. Student and instructor should complete an Undergraduate Research & Creative Projects (URCP) Mentoring Agreement and file it with the URCP office. Not for honors credit. . (F, Sp, Su)

C S 3450. Undergraduate Research.3 Credit Hours.

0 to 3 hours. Prerequisite: (CS 2413 or CS 2414 and CS 2813 or Math 2513) and permission of instructor; may be repeated, maximum credit 6 hours. For the inquisitive student to perform computer science research or creative activity under the mentorship of a faculty member. Not for honors credit. (F, Sp, Su)

C S 3823. Theory of Computation.3 Credit Hours.

Prerequisite: (CS 2413 or CS 2414 and CS 2813 or MATH 2513) or CS 5005 or DSA 5005. Introduction to abstract machine theory and formal language theory. Topics include Turing machines, finite/pushdown automata, deterministic versus nondeterministic computations, context-free grammars, and mathematical properties of these systems. (F)

C S 3910. Computer Science Internship.3 Credit Hours.

0 to 3 hours. Prerequisite: (CS 2413 or CS 2414) and (CS 2813 or Math 2513), majors only and permission of instructor. Focuses on application of the skills taught in major courses. Allows a student to earn credit toward degree requirements through the completion of an intense internship experience. Feedback from the sponsoring organization and a written report detailing the responsibilities and results of the experience is required. (F, Sp, Su)

C S 3960. Honors Reading.1-3 Credit Hours.

1 to 3 hours. Prerequisite: admission to Honors Program. May be repeated; maximum credit six hours. Consists of topics designated by the instructor in keeping with the student's major program. Covers materials not usually presented in the regular courses. (F, Sp)

C S 3970. Honors Seminar.1-3 Credit Hours.

1 to 3 hours. Prerequisite: admission to Honors Program. May be repeated with change of topic; maximum credit eight hours. Projects covered will vary. Deals with concepts not usually presented in regular coursework. (Irreg.)

C S 3980. Honors Research.1-3 Credit Hours.

1 to 3 hours. Prerequisite: admission to Honors Program. May be repeated with change of subject matter; maximum credit six hours. Provides an opportunity for the gifted Honors candidate to work on a special project in the student's field. (F, Sp, Su)

C S 3990. Independent Study.1-3 Credit Hours.

1 to 3 hours. Prerequisite: permission of instructor and junior standing. May be repeated once with change of content. Independent study may be arranged to study a subject not available through regular course offerings. (F, Sp, Su)

C S 4013. Artificial Intelligence.3 Credit Hours.

(Slashlisted with C S 5013) Prerequisite: CS 2413 or CS 2414, and CS 2813 or MATH 2513. Study of the methods of search, knowledge representation, heuristics, and other aspects of automating the solution of problems requiring intelligence. No student may earn credit for both 4013 and 5013. (Sp)

C S 4023. Introduction to Intelligent Robotics.3 Credit Hours.

(Slashlisted with C S 5023) Prerequisite: C S 2413, and C S 2813 or MATH 2513. History of intelligent robotics; functional models approach; reactive robots; ethology for robotics; architectures and methodologies; implementation; sensing; hybrid deliberative/reactive robotics; multi-robot systems; navigation; topological path planning; metric path planning; localization and mapping. No student may earn credit for both 4023 and 5023. (F)

C S 4033. Machine Learning Fundamentals.3 Credit Hours.

(Slashlisted with C S 5033) Prerequisite: (C S 2413 or C S 2414) and (C S 2813 or MATH 2513) and (MATH 4753 or ISE 3293 or MATH 4743 or ECE 2523) and MATH 3333 and (MATH 2443 or MATH 2934). Topics include decision trees, relational learning, neural networks, Bayesian learning, reinforcement learning, multiple-instance learning, feature selection, learning appropriate representations, clustering, and kernel methods. No student may earn credit for both 4033 and 5033. (F)

C S 4053. Computer Graphics.3 Credit Hours.

(Slashlisted with C S 5053) Prerequisite: C S 2413 or CS 2414, and C S 2813 or MATH 2513, and MATH 3333. An introduction to computer graphics. Topics include coordinate systems, transformations, rendering in both two and three dimensions, and graphical programming. No student may earn credit for both 4053 and 5053. (F)

C S 4063. Human Computer Interaction.3 Credit Hours.

(Slashlisted with C S 5063) Prerequisite: C S 2413 or CS 2414, and C S 2813 or MATH 2513. An introduction to human-computer interaction and graphical user interfaces. Topics include principles of human-computer interaction, human perceptual and cognitive abilities, user interface analysis and design, window systems, and social implications of computing. Current user interface programming tools will be described and used. Oral presentations are required for some assignments. No student may earn credit for both 4063 and 5063. (Sp)

C S 4083. Responsible and Ethical AI/ML.3 Credit Hours.

(Slashlisted with C S 5083) Prerequisite: CS 4013 or CS 5013 or CS 4033 or CS 5033 or CS 5043. This course focuses on how to ethically and responsibility create Artificial Intelligence (AI). Topics will include responsible conduct of research, ethical scientific conduct, ownership of ideas, algorithms and data, and ethics of developing AI. Learning activities include active discussions and debates, writing, and projects. No student may obtain credit for both 4083 and 5083. No student may earn credit for both 4083 and 5083. (Sp)

C S 4113. Distributed Operating Systems.3 Credit Hours.

(Slashlisted with C S 5113) Prerequisite: C S 3113, and Mathematics 4753 or Industrial Engineering 3293 or Mathematics 4743 or Engineering 3293. Continuation of study from 3113. Advanced topics and examples and simulation techniques used in performance evaluation. No student may earn credit for both 4113 and 5113. (Sp)

C S 4133. Data Networks.3 Credit Hours.

(Slashlisted with 5133) Prerequisite: 3113 or permission of instructor. Comprehensive treatment of data networking principles including: layered protocol design and their functions, tools for performance analysis, multi-access communication, routing and flow control. No student may earn credit for both 4133 and 5133. (F)

C S 4173. Computer Security.3 Credit Hours.

(Slashlisted with C S 5173) Prerequisite: CS 3113. An introduction to computer security. Topics include applied cryptography, access control, programming and software security, operating system security, network security protocols, and the legal and ethical aspects of security software. (F)

C S 4203. Software Analysis and Design.3 Credit Hours.

Prerequisite: CS 3203. This course is an intensive exploration of software analysis and design, delving into requirements acquisition, use case derivation, modeling and design of interaction behavior and state behavior, and derivation of design class diagrams. This hands-on course will equip students with the skills to apply these skills to real-world analysis and design challenges. (F)

C S 4213. Software Design Patterns.3 Credit Hours.

Prerequisite: CS 3203. This course is an intensive exploration of software design patterns, delving into their descriptions, underlying design principles, and utilized techniques. This hands-on course will equip students with the skills to apply these patterns to real-world design challenges. (F)

C S 4223. Software Quality and Testing.3 Credit Hours.

Prerequisite: CS 3203. This course delves deeply into software quality assurance, examining various testing processes, methodologies, techniques, and tools. Covered topics encompass formal review techniques, black box and white box testing, integration testing, acceptance testing, regression testing, and performance testing. Through hands-on activities, students will acquire the necessary skills to verify the accuracy and quality of developed systems. (Sp)

C S 4273. Capstone Design Project.3 Credit Hours.

Prerequisite: C S 3203, and C S major or C S minor. Students working in teams implement a significant software product, including design documents, user's guide, and process reports. Emphasis is on data abstraction and reusable components. Students will make reasoned choices among software components. Students will practice oral/written communication skills, learn about professional social issues and responsibilities. No student may obtain credit for C S 4273 and C S 5213. (F, Sp) [V].

C S 4281. Engineering Co-Op Program.1 Credit Hour.

(Crosslisted with AME, CH E, CEES, ECE, EPHY, ISE and BME 4281) Prerequisite: Departmental permission and junior standing. May be repeated; maximum credit 6 hours. The Co-Op program provides students an opportunity to enhance their education via career exploration in related professional work experiences. Course assignments help students articulate their experiences by completing journals; mid-term paper; final paper and/or final presentation. Faculty receive an evaluation from the student's Co-Op supervisor who monitors performance. Faculty collaborate with the Co-Op supervisor to ensure student success. (F, Sp, Su)

C S G4323. Compiler Construction.3 Credit Hours.

Prerequisite: C S 2413 or C S 2414 and C S 3823. Introduction to the theory and implementation of programming language compilers and interpreters. Class projects require the design of medium scale software systems. (Sp)

C S 4410. Programming Competition.0 Credit Hours.

Prerequisite: Permission of Instructor. Prepare students to participate in regional, national, and international computer programming competitions. Students will work in teams to solve challenging computer programming problems. (F, Sp)

C S G4413. Algorithm Analysis.3 Credit Hours.

(Crosslisted with DSA 4413) Prerequisites: C S 2413 and C S 2813; or MATH 2513; or C S 5005. Design and analysis of algorithms and measurement of their complexity. This course introduces various algorithm design strategies: divide and conquer, greedy principle and dynamic programming to solve a variety of problems using algorithms of various types - deterministic and randomized, serial and parallel, centralized and decentralized, program based and circuit based. (F)

C S 4433. Linear Optimization.3 Credit Hours.

(Slashlisted with C S 5433) Prerequisite: MATH 3333 or Math 4373. This course will introduce the theory and practice of linear programming. Topics include geometry of linear programming, simplex method, duality theory, and network flow problems. No student may earn credit for both 4433 and 5433. (F, Sp)

C S 4473. Parallel, Distributed, and Network Programming.3 Credit Hours.

(Slashlisted with C S 5473) Prerequisite: CS 3113 and CS 4413. Parallel and distributed architectures, algorithms, programming paradigms and network communication protocols and programming. Topics include asynchronous/synchronous computation, GPU architectures, load balancing, memory hierarchies, other parallel and distributed models of computation, concepts about computer networks, including internet protocol stack and internet architecture, and socket programming using TCP and UDP. No student may earn credit for both 4473 and 5473. (Sp)

C S G4513. Database Management Systems.3 Credit Hours.

(Crosslisted with DSA 4513) Prerequisites: C S 2413 and C S 2813; or MATH 2513; or C S 5005. The design and implementation of a DBMS including data models, query languages, entity-relationship diagrams, functional dependencies, normalization, storage structures, access methods, query processing, security and transaction management, and applications. The impact of databases on individuals, organizations, and society, and legal and professional responsibilities including security and privacy will be discussed. A commercial DBMS is used. Students practice written communication skills. (F)

C S G4613. Computer Architecture.3 Credit Hours.

(Crosslisted with ECE 4613) Prerequisite: ECE 3223 or C S 2614 or C S 2613. Covers basic concepts of computer system design and communication between components, along with current and historical examples of computer architecture. (F, Sp)

C S 4713. Computational Learning Theory.3 Credit Hours.

(Slashlisted with C S 5713) Prerequisite: C S 4413 or DSA 4413 or permission of instructor. Learning using membership queries, equivalence queries, version spaces, decision trees, linear models. Probably approximately correct (PAC) learning, VC-theory, distribution-independent learning. Representation issues and intractability. Noise models, statistical queries, PAC learning under noise, poisoning attacks, adversarial examples. Distribution-specific learning and evolvability. Online learning and mistake bounds. Weak and strong learning (boosting). No student may earn credit for both 4713 and 5713. (F)

C S 4723. Neural Data Science.3 Credit Hours.

(Slashlisted with C S 5723) Prerequisite: Computer Programming (CS 1213 or CS 1313 or CS 1321 or CS 1323 or CS 1324) and Statistics (ECE 2523 or ISE 3293 or Math 4743 or Math 4753); or permission of instructor. This course will introduce the fundamental concepts of neural data analysis and its implementation using computer programming. Topics include statistical modeling, connectivity analysis, time-frequency analysis, and pattern recognition. No student may earn credit for both 4723 and 5723. (F)

C S 4733. Computer Vision for Autonomous Vehicles.3 Credit Hours.

(Slashlisted with C S 5733) Prerequisite: C S2413 or C S 2414 or C S 5005; and MATH 3333; or permission of instructor. This course delves into the foundational principles of mathematics and the practical implementation of state-of-the-art autonomous navigation algorithms, specifically within the domains of self-driving cars, delivery robots, and autonomous aerial vehicles such as drones. Positioned within the field of robotics, it explores various aspects of autonomous navigation, covering motion planning, computer vision, localization, and mapping. No student may earn credit for both 4733 and 5733. (F)

C S 4743. Scientific Computing I.3 Credit Hours.

(Slashlisted with C S 5743) Prerequisite: MATH 3333. Interaction between applications, architectures, and algorithms. Review of linear algebra, serial, pipelined vector processors, cluster of processors. Measures of proformance of parallel algorithms. Parallel algorithms for the solution of linear systems. No student may earn credit for both 4743 and 5743. (F)

C S 4823. Cryptography.3 Credit Hours.

(Slashlisted with 5823) Prerequisite: 3823 and 4413. Elementary number theory, time complexity for doing arithmetic, finite fields, RSA, discrete logarithm and Diffie-Hellman, zero-knowledge protocols and oblivious transfer. Basic elliptic curve cryptosystems, elliptic curve factorization and primality proving. No student may earn credit for both 4823 and 5823. (Sp)

C S 4910. Senior Reading and Research.1-3 Credit Hours.

1 to 3 hours. Prerequisite: senior standing, permission of instructor. May be repeated with change of subject matter; maximum credit six hours. Individually supervised reading and research in computing science for gifted seniors. (F, Sp, Su)

C S 4970. Undergraduate Seminar.1-3 Credit Hours.

0 to 3 hours. May be repeated with change of subject matter; maximum credit three hours. A special type of seminar necessitated by the rapidly changing nature of modern data processing information science and computing sciences. (Irreg.)

C S 4973. Special Topics.3 Credit Hours.

Prerequisite: 2413 and permission of instructor. May be repeated with change of subject matter; maximum credit nine hours. A special topics course necessitated by the rapidly changing nature of computer sciences. Topics offered under this number will be accepted as approved Computer Science electives for Computer Science majors. (Irreg.)

C S 4990. Independent Study.1-3 Credit Hours.

1 to 3 hours. Prerequisite: Senior standing and permission of instructor. May be repeated; maximum credit nine hours but total credit applicable to any degree may be limited. Individual or group research and development projects involving original laboratory, analytical or theoretical investigations and syntheses. Specific objectives and work requirements are established by prior agreement of the instructor and student. Students should expect to spend at least 48 hours for each credit hour and to submit appropriate reports or papers (F, Sp, Su).

C S 5005. Computing Structures.5 Credit Hours.

(Crosslisted with DSA 5005) Prerequisite: CS 2334, MATH 1914 or MATH 1823 or with permission of graduate liaison. This course has three parts: discrete mathematics, object-oriented programming in C++, and data structures in C++. As part of the discrete mathematics students will be introduced to combinatorics, logic, relations, functions, computational complexity, automata, and graph theory. Students will be introduced to the fundamentals of object-oriented programming and learn to design, build, and analyze data structures using object-oriented principles and techniques. Credit hours earned for this course cannot be used to fulfill degree requirements for the B.S., M.S. or Ph.D. programs in computer science. (Irreg.)

C S 5013. Artificial Intelligence.3 Credit Hours.

(Slashlisted with C S 4013) Prerequisite: Graduate standing, and CS 5005 or (C S 2413 or CS 2414 and C S 2813 or MATH 2513). Study of the methods of search, knowledge representation, heuristics, and other aspects of automating the solution of problems requiring intelligence. No student may earn credit for both 4013 and 5013. (Sp)

C S 5023. Introduction to Intelligent Robotics.3 Credit Hours.

(Slashlisted with C S 4023) Prerequisite: graduate standing and C S 2413, and C S 2813 or MATH 2513. History of intelligent robotics; functional models approach; reactive robots; ethology for robotics; architectures and methodologies; implementation; sensing; hybrid deliberative/reactive robotics; multi-robot systems; navigation; topological path planning; metric path planning; localization and mapping. No student may earn credit for both 4023 and 5023. (F)

C S 5033. Machine Learning Fundamentals.3 Credit Hours.

(Slashlisted with C S 4033) Prerequisite: Graduate standing and (((C S 2413 or C S 2414) and (C S 2813 or MATH 2513)) or CS 5005) and (MATH 4753 or ISE 3293 or MATH 4743 or ECE 2523) and MATH 3333; and (MATH 2443 or MATH 2934). Topics include decision trees, relational learning, neural networks, Bayesian learning, reinforcement learning, multiple-instance learning, feature selection, learning appropriate representations, clustering, and kernel methods. No student may earn credit for both 4033 and 5033. (F)

C S 5043. Advanced Machine Learning.3 Credit Hours.

Prerequisite: Graduate standing; MATH 3333; MATH 4743 or MATH 4753 or ENGR 3293 or ISE 3293; and C S 4033/5033 or C S 5073; or permission of the instructor. Topics include deep learning, deep networks, convolutional neural networks, recurrent neural networks, transformers, autoencoders, generative adversarial networks, and explainable deep learning. (Irreg.)

C S 5053. Computer Graphics.3 Credit Hours.

(Slashlisted with C S 4053) Prerequisite: Graduate standing and C S 2413 or CS 2414, and C S 2813 or MATH 2513, and MATH 3333. An introduction to computer graphics. Topics include coordinate systems, transformations, rendering in both two and three dimensions, and graphical programming. No student may earn credit for both 4053 and 5053. (F)

C S 5063. Human Computer Interaction.3 Credit Hours.

(Slashlisted with C S 4063) Prerequisite: Graduate standing and C S 2413 or CS 2414, and C S 2813 or MATH 2513; or departmental permission. An introduction to human computer interaction and graphical user interfaces. Topics include principles of human computer interaction, human perceptual and cognitive abilities, user interface analysis and design, window systems, and social implications of computing. Current user interface programming tools will be described and used. Oral presentations are required for some assignments. No student may earn credit for both 4063 and 5063. (Sp)

C S 5073. Artificial Neural Networks Evolution.3 Credit Hours.

Prerequisite: CS 2413 and CS 2813, or CS 5005, and MATH 3333. Overview of computational intelligence and artificial evolution, artificial neural networks and artificial evolution, introduction to artificial life and neuro-evolution, and evolutionary robotics. (F)

C S 5083. Responsible and Ethical AI/ML.3 Credit Hours.

(Slashlisted with 4083) Prerequisite: graduate standing and CS 4013/5013 or CS 4033/5033 or CS 5043. This course focuses on how to ethically and responsibility create Artificial Intelligence (AI) and perform Machine Learning (ML). Topics will include responsible conduct of research, ethical scientific conduct, ownership of ideas, algorithms and data, and ethics of developing AI. Learning activities include active discussions and debates, writing, and projects No student may earn credit for both 4083 and 5083. (Sp)

C S 5093. Visual Analytics.3 Credit Hours.

Prerequisite: permission of instructor. Exploration and analysis of complex information through visual interactive computational tools and techniques. Topics include analytic reasoning, sense-making, knowledge dissemination, data representation and transformation, visual abstraction, coordinated interaction, visual query languages, spatiotemporal visualization, and applications of visual analysis. (Sp)

C S 5113. Distributed Operating Systems.3 Credit Hours.

(Slashlisted with C S 4113) Prerequisite: Graduate standing, C S 3113; and MATH 4753, ISE 3293, or MATH 4743. Advanced topics, examples, and simulation techniques used in performance evaluation. No student may earn credit for both 4113 and 5113. (Sp)

C S 5133. Data Networks.3 Credit Hours.

(Slashlisted with 4133) Prerequisite: 3113 or 5004 or permission of instructor. Comprehensive treatment of data networking principles including: layered protocol designs and their functions, tools for performance analysis, multi-access communication, routing and flow control. No student may earn credit for both 4133 and 5133. (F)

C S 5173. Computer Security.3 Credit Hours.

(Slashlisted with C S 4173) Prerequisite: CS 3113. An introduction to computer security. Topics include applied cryptography, access control, programming and software security, operating system security, network security protocols, and the legal and ethical aspects of security software (F)

C S 5183. Wireless and Mobile Networks.3 Credit Hours.

Prerequisite: Graduate standing, CS 4133/5133; MATH 4743 or MATH G4753 or ISE 3293 or ECE 2523 or permission of instructor. This course provides a systematic view of designing and securing wireless mobile computing systems and networks. It covers system and security elements from the physical layer all the way to the application layer in wireless mobile computing. (Sp)

C S 5213. Software Engineering Processes.3 Credit Hours.

Prerequisite: graduate standing, C S 3113 or C S 3823 or C S 5005. No student may obtain credit for C S 4263 or C S 4273 and CS 5213. Effective processes for software requirements specification, planning, design, documentation, development, review, defect tracking, testing, product delivery, and product evaluation. Emphasis on resource tracking and software quality. Students work in teams to develop, deliver, and evaluate software products. (Sp)

C S 5293. Natural Language Processing.3 Credit Hours.

Prerequisite: C S 2413 or C S 2414 or C S 5005; C S 2813 or MATH 2513; and a statistics course from the departmentally approved list. This course covers the fundamental algorithms and methods in natural language processing (NLP). Topics include n-gram models, text classification, statistical models over linguistic structures (e.g., sequences, trees, and graphs), vector semantics, neural networks, large language models, etc. Applications include parsing, information extraction, machine translation, topic modeling, dialog systems, and more. Students will build computational models for different areas of NLP. (F)

C S 5413. Computational Complexity.3 Credit Hours.

Prerequisite: 4413 and 3823 or 5813. Computational complexity theory dealing with various models of computation and a detailed analysis of P and NP hard problems. (Sp)

C S 5433. Linear Optimization.3 Credit Hours.

(Slashlisted with C S 4433) Prerequisite: Graduate standing; MATH 3333 or Math 4373. This course will introduce the theory and practice of linear programming. Topics include geometry of linear programming, simplex method, duality theory, and network flow problems. No student may earn credit for both 4433 and 5433. (F)

C S 5463. Advanced Computer Architecture.3 Credit Hours.

(Crosslisted with ECE 5463) Prerequisite: C S 4613. The design of modern programmable computer systems with emphases on exploiting parallelism at all levels, designing within constraints, including energy consumption, and the impact of architecture on software design. Covers state of the art computer architecture, case studies and trends. (Sp)

C S 5473. Parallel, Distributed, and Network Programming.3 Credit Hours.

(Slashlisted with C S 4473) Prerequisite: Graduate standing, C S 3113, and C S 4413. Parallel and distributed architectures, algorithms, programming paradigms and network communication protocols and programming. Topics include asynchronous/synchronous computation, GPU architectures, load balancing, memory hierarchies, other parallel and distributed models of computation, concepts about computer networks, including internet protocol stack and internet architecture, and socket programming using TCP and UDP. No student may earn credit for both 4473 and 5473. (Sp)

C S 5483. Network Science.3 Credit Hours.

Prerequisite: C S 4413 or DSA 4413 or permission of instructor. Topics to be covered include fundamental algorithms for network analysis, investigating properties of networks, learning community detection methods, understanding network inference methods, understanding dynamics of networks, percolation, resilience, spreading phenomenon, social influence, and cascades. A variety of application contexts will be used, including physical, informational, biological, cognitive, and social systems. (F)

C S 5513. Advanced Database Management.3 Credit Hours.

Prerequisite: 4513. An advanced course dealing with both current database applied research subjects and theoretical aspects of relational databases. Selected topics such as distributed databases, object-oriented databases, real-time databases, and multimedia databases will be discussed. (Sp)

C S 5593. Data Mining.3 Credit Hours.

Prerequisite: graduate standing and permission from the instructor or department. Covers the process, concepts and techniques in data mining, including advanced techniques that deal with Big Data. It provides students with the necessary background to conduct data mining tasks for real world problems. The topics covered include understanding and preprocessing data, classification, association analysis, cluster analysis, anomaly detection, and Big Data mining. (F)

C S 5613. Computer Networks and Distributed Processing.3 Credit Hours.

Prerequisite: 4613. Provides a comprehensive treatment of the analysis and design of computer networks. Data communication techniques and distributed processing in a network architecture will be examined. (Sp)

C S 5703. Machine Learning Practice.3 Credit Hours.

(Crosslisted with DSA 5703) Prerequisite: Graduate standing; C S 4013/5013, C S 5593, ISE/DSA 5103; or permission of instructor. Machine learning is the data-driven process of constructing mathematical models that can be predictive of data observed in the future. In this course, we will study the use of a range of supervised, semi-supervised and unsupervised methods to solve both classification and regression problems. (F)

C S 5713. Computational Learning Theory.3 Credit Hours.

(Slashlisted with C S 4713) Prerequisite: Graduate standing or permission of instructor; C S 4413 or DSA 4413. Learning using membership queries, equivalence queries, version spaces, decision trees, linear models. Probably approximately correct (PAC) learning, VC-theory, distribution-independent learning. Representation issues and intractability. Noise models, statistical queries, PAC learning under noise, poisoning attacks, adversarial examples. Distribution-specific learning and evolvability. Online learning and mistake bounds. Weak and strong learning (boosting). No student may receive credit for 4713 and 5713. No student may earn credit for both 4713 and 5713. (F)

C S 5723. Neural Data Science.3 Credit Hours.

(Slashlisted with C S 4723) Prerequisite: Graduate standing or permission of instructor. This course will introduce the fundamental concepts of neural data analysis and its implementation using computer programming. Topics include statistical modeling, connectivity analysis, time-frequency analysis, and pattern recognition. No student may earn credit for both 4723 and 5723. (F)

C S 5733. Computer Vision for Autonomous Vehicles.3 Credit Hours.

(Slashlisted with C S 4733) Prerequisite: Graduate standing or permission of instructor. This course delves into the foundational principles of mathematics and the practical implementation of state-of-the-art autonomous navigation algorithms, specifically within the domains of self-driving cars, delivery robots, and autonomous aerial vehicles such as drones. Positioned within the field of robotics, it explores various aspects of autonomous navigation, covering motion planning, computer vision, localization, and mapping. No student may earn credit for both 4733 and 5733. (F)

C S 5743. Scientific Computing I.3 Credit Hours.

(Slashlisted with C S 4743) Prerequisite: graduate standing and MATH 3333 and AME 3723 or MATH 4073 or ENGR 3723 or C S 3723. Interaction between applications, architectures, and algorithms. Review of linear algebra, serial, pipelined vector processors, cluster of processors. Measures of proformance of parallel algorithms. Parallel algorithms for the solution of linear systems. No student may earn credit for both 4743 and 5743. (F)

C S 5753. Scientific Computing II.3 Credit Hours.

Prerequisite: 5743. Special research topics in scientific computing. Possible topics include optimization algorithms, time series modeling, Kalman filtering techniques, and multivariate statistical techniques. (Sp)

C S 5813. Formal Languages.3 Credit Hours.

Prerequisite: 3823. Theory of formal languages. Mathematical modeling of natural or artificial objects, events, and phenomena. Topics include systems for linear/nonlinear objects, their language-theoretical properties, and the related machine theory. (F)

C S 5823. Cryptography.3 Credit Hours.

(Slashlisted with 4823) Prerequisite: 3823 and 4413. Elementary number theory, time complexity for doing arithmetic, finite fields, RSA, discrete logarithm and Diffie-Hellman, zero-knowledge protocols and oblivious transfer. Basic elliptic curve cryptosystems, elliptic curve factorization and primality proving. No student may earn credit for both 4823 and 5823. (Sp)

C S 5833. Blockchains & Cryptocurrencies.3 Credit Hours.

Prerequisite: Departmental Permission and C S 3823 or C S 4413. This course attempts to bridge the gap in the technical understanding of blockchain architectures and their applications as a currency. Specifically, this course will address the following fundamental questions and more: How does Bitcoin work and what makes it different? How secure are Bitcoins? How anonymous are Bitcoin users? What applications can be built using Bitcoin as a platform? (Sp)

C S 5880. Graduate Project.2-6 Credit Hours.

2 to 6 hours. Prerequisite: Graduate standing and permission of department. For students electing the non-thesis project option. Students will plan and carry out a project in computer science under the direction of their project committee. Students must take at least 6 credit hours of CS 5880 over one or more semesters; only the first 6 credits will count towards the non-thesis project program requirement. (F, Sp, Su)

C S 5903. Graduate Perspectives on Computing.3 Credit Hours.

Prerequisite: Graduate standing and permission of department. A broad survey of principles, pathways, practices, and research in computer science. Topics include foundations and current computing research on systems, theory, artificial intelligence & machine learning, and people & data; ethics, integrity, social implications, and professional practices in computing; and essential skills and tools for computing research and practice. (F, Sp)

C S 5960. Directed Readings.1-3 Credit Hours.

1 to 3 hours. Prerequisite: graduate standing and permission of department. May be repeated; maximum credit twelve hours. Directed readings and/or literature reviews under the direction of a faculty member. (F, Sp, Su)

C S 5970. Graduate Seminar.1-3 Credit Hours.

Prerequisite: permission of instructor. May be repeated with a change of subject matter; maximum credit six hours. Selected topics of current research interest not covered by regularly scheduled coursework. (F, Sp, Su)

C S 5980. Research for Master's Thesis.2-9 Credit Hours.

Variable enrollment, two to nine hours; maximum credit applicable toward degree, six hours. (F, Sp, Su)

C S 5990. Independent Studies.1-3 Credit Hours.

1 to 3 hours. Prerequisite: graduate standing, permission of instructor. May be repeated with change of topic; maximum graduate credit nine hours. Supervised individual reading and research in computer science for graduate students. (F, Sp, Su)

C S 6960. Directed Readings.1-3 Credit Hours.

1 to 3 hours. Prerequisite: graduate standing or permission of instructor. May be repeated; maximum credit six hours. Directed readings and/or literature review under the direction of a faculty member. (Irreg.)

C S 6970. Special Topics/Seminar.1-3 Credit Hours.

1 to 3 hours. Prerequisite: graduate standing or permission of instructor. May be repeated; maximum credit 12 hours. Special topics or seminar course for content not currently offered in regularly scheduled courses. May include library and/or research and field projects. (Irreg.)

C S 6980. Research for Doctoral Dissertation.2-16 Credit Hours.

2 to 16 hours. Prerequisites: Graduate standing and permission of instructor; may be repeated. Directed research culminating in the completion of the doctoral dissertation. (F, Sp, Su)

C S 6990. Independent Study.1-3 Credit Hours.

1 to 3 hours. Prerequisite: Graduate standing and permission of instructor. May be repeated; maximum credit nine hours. Contracted independent study for a topic not currently offered in regularly scheduled courses. Independent study may include library and/or laboratory research and field projects. (Irreg.)