# 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: MATH 1523 or equivalent or concurrent enrollment; or placement into MATH 1743 or MATH 1823 or higher and departmental permission. 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: MATH 1523 or concurrent enrollment; or placement into MATH 1743 or MATH 1823 or higher and department permission. 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: Math 1523 or concurrent enrollment; or placement into Math 1743 or Math 1823 or higher and departmental permission. 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 2413. Data Structures.****3 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 the architecture, organization and design of uniprocessor-based computer systems. Topics include processor, control and memory design and organization, pipelining and vector processing, computer arithmetic, I/O organization, and computer systems security. (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 and C S 2813 or MATH 2513, and C S 2614 or ECE 2214. 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, and C S 2813 or MATH 2513. Methods and tools for software specification, design, and documentation. Emphasis on architectural modularity, encapsulation of software objects, and software development processes such as design review, code inspection, and defect tracking. Students apply these ideas to design and document software products. Study of professional ethics, responsibility, legal issues. No student may obtain credit for CS 3203 and C S 5213. (F)

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

Prerequisite: C S 2413, 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: CS 2413 and CS 2813 or Math 2513 and permission of instructor; May be repeated, maximum credit 12 hours. For the inquisitive student to apply the scholarly processes of the discipline to a research or creative 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 3823. Theory of Computation.****3 Credit Hours.**

Prerequisite: CS 2413 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 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 5005, and CS 2813 or CS 4005 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) Prerequisites: C S 2413, and C S 2813 or MATH 2513, and MATH 4753 or ISE 3293 or MATH 4743, and MATH 3333, and MATH 3113 or MATH 3413. 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, 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 CS 5063) Prerequisite: C S 2413, 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 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 4273. Capstone Design Project.****3 Credit Hours.**

Prerequisite: C S 3203, and C S major or C S minor. Methods and tools for software development, testing, and delivery. Emphasis on data abstraction and reusable components. Students working in teams implement a significant software product, including design documents, user's guide, and process reports. Students will practice oral/written communication skills. Study of professional social issues and responsibilities. No student may obtain credit for C S 4273 and C S 5213. (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: 2413 and 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. Computational Methods in Discrete Optimization.****3 Credit Hours.**

(Slashlisted with C S 5433) Prerequisite: MATH 3333 and C S 4413 or concurrent enrollment in 4413. Linear programming: simplex method for LP problems, degeneracy and anticycling strategies, duality theory and complementary slackness conditions, revised simplex method, sensitivity analysis and simplex method for general LP problems. Network optimization: the transshipment problem, network simplex method, shortest path algorithms, the maximum flow problem, and the primal dual method. 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 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 4960. Directed Readings.****1-4 Credit Hours.**

1 to 4 hours. Prerequisite: good standing in University; permission of instructor and dean. May be repeated; maximum credit four hours. Designed for upper-division students who need opportunity to study a specific problem in greater depth than formal course content permits. (Irreg.)

** 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 C S 2413 or C S 5005, and C S 2813 or C S 4005 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; C S 2813 or MATH 2513; MATH 4753 or ISE 3293 or MATH 4743; MATH 3333; and MATH 3113 or MATH 3413. 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, 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 CS 4063) Prerequisite: Graduate standing and C S 2413, 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 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 5143. Network Design and Management.****3 Credit Hours.**

Prerequisite: 4133 or 5133, or equivalent. Basic concepts in networks; modeling and evaluation techniques; network analysis: delay, loss and throughput, centralized network design; distributed network design, network reliability; applications to local area wireless, wide area, multi-service networking, etc.; network management: SNMP, OSI management, distributed network management and architectures. (Sp)

** 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 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. Text Analytics.****3 Credit Hours.**

Prerequisite: C S 2413 or C S 5005; CS 2813 or MATH 2513; and MATH 4743 or MATH 4753 or ISE 3293 or ISE 5013. The course covers the design and implementation of algorithms to extract useful knowledge from text to support decision making, including methods to obtain data sets, understanding data formats, detecting duplicates, cleaning data sets, tagging, indexing, search, evaluating algorithms, classification, clustering, topic modeling, and entity resolution. (Sp)

** 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. Computational Methods in Discrete Optimization.****3 Credit Hours.**

(Slashlisted with C S 4433) Prerequisite: MATH 3333 and C S 4413 or concurrent enrollment in 4413. Linear programming: simplex method for LP problems, degeneracy and anticycling strategies, duality theory and complementary slackness conditions, revised simplex method, sensitivity analysis and simplex method for general LP problems. Network optimization: the transshipment problem, network simplex method, shortest path algorithms, the maximum flow problem, and the primal dual method. No student may earn credit for both 4433 and 5433. (F)

** C S 5443. Advanced Discrete Optimization and Networks.****3 Credit Hours.**

Prerequisite: 4413. Review of basic algorithm techniques: DFS, BFS, shortest paths, min-cost spanning tree, etc.; maximum flow problem: labeling and preflow-push algorithms, maximum flow in unit capacity networks and complexity analysis; min cost-flow problems: duality theory, network simplex, primal-dual and relaxation methods; matching: bipartite matching, weighted matching and optimum assignment problems; connectivity: biconnectivity and K-connectivity algorithms; heuristics and approximation algorithms; applications: network design, network reliability and Q0s routing etc. (Sp)

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

Prerequisite: Departmental Permission and C S 4413 or DSA 4413. Topics of machine learning theory. Learning using membership queries, equivalence queries, version spaces, decision trees, perceptrons. Probably approximately correct (PAC) learning, Occam algorithms, VC-dimension, sample sizes for distribution-independent learning. Representation issues, proper learning, reductions, intractability, learning in the realizable case, agnostic learning. Noise models, statistical queries, PAC learning under noise. Adversarially robust learning against poisoning attacks and against adversarial examples. (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 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.)