Computer Science and Computer Engineering (CSCE)

Courses

CSCE 20004. Programming Foundations I. 4 Hours.

Introductory programming course for students majoring in computer science or computer engineering. Software development process: problem specification, program design, implementation, testing and documentation. Programming topics: data representation, conditional and iterative statements, functions, arrays, strings, file I/O and classes. Using C++ in a UNIX environment. Corequisite: Lab component. Prerequisite: MATH 24005 or MATH 24004 with a grade of C or better, a College of Engineering (ENGR) student, a Computer Science Minor (CSCE-M), or a math major (MATHBS or MATHBA). (Typically offered: Fall and Spring)

CSCE 20104. Programming Foundations II. 4 Hours.

This course continues developing problem solving techniques by focusing on fundamental data structures and associated algorithms. Topics include: abstract data types, introduction to object-oriented programming, linked lists, stacks, queues, hash tables, binary trees, graphs, recursion, and searching and sorting algorithms. Using C++ in a UNIX environment. Corequisite: Lab component. Prerequisite: CSCE 20004 with a grade of C or better. (Typically offered: Fall and Spring)

CSCE 20203. Introduction to Programming in Java. 3 Hours.

Introduction to programming in Java with emphasis on engineering applications. Programming techniques: data representation and expressions, conditional and iterative statements, arrays, lists, file I/O, methods. Object oriented programming: designing, implementing and using classes, collections and composite objects. Students will gain hands-on programming experience and exposure to classic engineering problem solving techniques. Prerequisite: MATH 24005 or MATH 24004 or MATH 24004, each with a grade of C or higher. (Typically offered: Irregular)

CSCE 21104. Digital Design. 4 Hours.

Introduction to the hardware aspects of digital computers, logic gates, flip-flops, reduction, finite state machines, sequential logic design, digital systems, software design tools, hardware description language (VHDL), and implementation technologies. Corequisite: Lab component. Prerequisite: MATH 24004 or MATH 24004 with a grade of C or better. (Typically offered: Fall and Spring)

CSCE 22104. Computer Organization. 4 Hours.

Presents the relationship between computing hardware and software with a focus on the concepts for current computers. CPU design topics are covered including various techniques for microprocessor design and performance evaluation. Corequisite: Lab component. Prerequisite: CSCE 21104 with a grade of C or better. (Typically offered: Fall and Spring)

CSCE 31903. Programming Paradigms. 3 Hours.

Programming in different paradigms with emphasis on object oriented programming and network programming. Survey of programming languages, event driven programming, and concurrency. Prerequisite: CSCE 20104 or DASC 21003, each with a grade of C or better. (Typically offered: Fall and Spring)

CSCE 319H3. Honors Programming Paradigms. 3 Hours.

Programming in different paradigms with emphasis on object oriented programming and network programming. Survey of programming languages, event driven programming, and concurrency. Prerequisite: Honors standing and (CSCE 20104 or DASC 21003, each with a grade of C or better). (Typically offered: Fall and Spring)

CSCE 35103. Software Engineering. 3 Hours.

A modern approach to the current techniques used in software design and development. This course emphasizes the use of modern software development tools, multi-module programming, and team design and engineering. Prerequisite: CSCE 31903 or CSCE 319H3 or DASC 21003, each with a grade of C or better. (Typically offered: Fall and Spring)

CSCE 36103. Operating Systems. 3 Hours.

An introduction to operating systems including topics in system structures, process management, storage management, files, distributed systems, and case studies. Prerequisite: CSCE 20104 and CSCE 22104, each with a grade of C or better. (Typically offered: Fall and Spring)

CSCE 361H3. Honors Operating Systems. 3 Hours.

An introduction to operating systems including topics in system structures, process management, storage management, files, distributed systems, and case studies. Prerequisite: CSCE 20104 and CSCE 22104, each with a grade of C or better. (Typically offered: Spring)

CSCE 39503. System Synthesis and Modeling. 3 Hours.

This course instructs the students in the use of modern synthesis and modeling languages and approaches for design automation. This course will teach students the use of HDLs and modeling languages for representing and implementing digital computer systems. Prerequisite: CSCE 22104 with a grade of C or better. (Typically offered: Fall)

CSCE 40103. Special Topics. 3 Hours.

Consideration of computer science topics not covered in other courses. Prerequisite: CSCE 31903 or CSCE 319H3 or DASC 21003, each with a grade of C or better. (Typically offered: Irregular) May be repeated for up to 12 hours of degree credit.

CSCE 40403. RFID Information Systems Security. 3 Hours.

Radio frequency identification (RFID) information systems provide information to users about objects with RFID tags. They require the application of information systems security (INFOSEC) to protect the information from tampering, unauthorized information disclosure, and denial of service to authorized users. This course addresses security and privacy in an RFID system. Prerequisite: INEG 23104. (Typically offered: Irregular)

CSCE 41104. Embedded Systems. 4 Hours.

The architecture, software, and hardware of embedded systems. Involves a mixture of hardware and software for the control of a system (including electrical, electro-mechanical, and electro-chemical systems). They are found in a variety of products including cars, VCRs, HDTVs, cell phones, pacemakers, spacecraft, missile systems, and robots for factory automation. Corequisite: Lab component. Prerequisite: CSCE 22104 with a grade of C or better. (Typically offered: Fall)

CSCE 41203. Programming Challenges. 3 Hours.

This course studies the principle methods used in the solution of programming contest problems, e.g., data structures strings, sorting, machine arithmetic and algebra, combinatorics, number theory, backtracking, graph traversal, graph algorithms, dynamic programming, grids, and computational geometry. Prerequisite: CSCE 31903 or CSCE 319H3, each with a grade of C or better. (Typically offered: Irregular)

CSCE 41303. Algorithms. 3 Hours.

Provides an introduction to formal techniques for analyzing the complexity of algorithms. The course surveys important classes of algorithms used in computer science and engineering. Prerequisite: (CSCE 31903 or CSCE 319H3 or DASC 21003, each with a grade of C or better) and (MATH 26103 or MATH 28003). (Typically offered: Fall)

CSCE 41403. Data Mining. 3 Hours.

The course focuses on the principles, theory, design, and implementation of data mining algorithms for large-scale data. Topics include foundations of data mining; preprocessing; mining frequent patterns, associations and correlations; supervised learning including decision tree induction, naïve Bayesian classification, support vector machine, logistic regression, Bayesian network, and K-nearest neighbor learning; unsupervised learning including K-means clustering, hierarchical clustering, density-based clustering, and grid-based clustering; outlier analysis; graph mining; scalable and distributed data mining. Prerequisite: (CSCE 31903 or CSCE 319H3 or DASC 21003) or (CSCE 20104 and INEG 23303 and INEG 23104) or (CSCE 20104 and STAT 30133 and STAT 30043)). (Typically offered: Fall)

CSCE 42103. Computer Architecture. 3 Hours.

The architecture of modern scalar and parallel computing systems. Techniques for dynamic instruction scheduling, branch prediction, instruction level parallelism, shared and distributed memory multiprocessor systems, array processors, and memory hierarchies. Prerequisite: CSCE 22104 with a grade of C or better. (Typically offered: Spring)

CSCE 42303. Low Power Digital Systems. 3 Hours.

The reduction of power consumption is rapidly becoming one of the key issues in digital system design. Traditionally, digital system design has mainly focused on performance and area trade-offs. This course will provide a thorough introduction to digital design for lower consumption at the circuit, logic, and architectural level. Prerequisite: CSCE 22104 with a grade of C or better. (Typically offered: Irregular)

CSCE 42503. Concurrent Computing. 3 Hours.

Programming concurrent processes; computer interconnection network topologies; loosely coupled and tightly coupled paralleled computer architectures; designing algorithms for concurrency; distributed computer architectures. Prerequisite: CSCE 31903 or CSCE 319H3 or DASC 21003, each with a grade of C or better. (Typically offered: Irregular)

CSCE 42603. Advanced Data Structures. 3 Hours.

This course continues the study of data structures, algorithmic analysis for these data structures, and their efficient implementation to support standard library in programming languages. Topics include: AVL trees, Red-Black trees, Splay trees, Optimal Binary Search trees, 2-3 tree, 2-3-4 tree, B-trees, Segment trees, Leftist Heaps, Binomial Heaps, Fibonacci Heap, Disjoint Set, Hashing, and big integer with hundreds to thousands of digits. Prerequisite: CSCE 31903 or CSCE 319H3, each with a grade of C or better. (Typically offered: Irregular)

CSCE 42703. Big Data Analytics and Management. 3 Hours.

Introduction to tools and techniques for distributed data computing and management, big data analytics, scalable machine learning, and real-time streaming data analysis. Students cannot receive credit for both CSCE 42703 and CSCE 52703. Prerequisite: CSCE 31903 or CSCE 319H3 or DASC 21003, each with a grade of C or better. (Typically offered: Irregular)

CSCE 43203. Formal Languages and Computability. 3 Hours.

Finite Automata and regular languages, regular expressions, context-free languages and pushdown automata, nondeterminism, grammars, and Turing machines. Church's thesis, halting problem, time complexity, space complexity and undecidability. Prerequisite: (CSCE 31903 or CSCE 319H3, each with a grade of C or better) and (MATH 26103 or MATH 28003). (Typically offered: Spring)

CSCE 43303. Introduction to Integrated Circuit Design. 3 Hours.

Design and layout of large scale digital integrated circuits using CMOS technology. Topics include MOS devices and basic circuits, integrated circuit layout and fabrication, dynamic logic, circuit design and layout strategies for large scale CMOS circuits. Students may not receive credit for both CSCE 43303 and CSCE 52203. Prerequisite: ELEG 32103 or ELEG 39903 and MATH 25804 (Typically offered: Fall)

CSCE 43503. CPLD/FPGA-Based System Design. 3 Hours.

Field Programmable Logic devices (FPGAs/CPLDs) have become extremely popular as basic building blocks for digital systems. They offer a general architecture that users can customize by inducing permanent or reversible physical changes. This course will deal with the implementation of logic options using these devices. Prerequisite: CSCE 22104 with a grade of C or better. (Typically offered: Irregular)

CSCE 43703. Electronic Design Automation. 3 Hours.

This course studies physical design, analysis and optimization of VLSI circuits and systems with emphasis on computational realizations and optimization. We start with some related topics such as graph algorithms and discuss various well-known algorithms and methodologies in the design process of VLSI circuits, including design partitioning, logic synthesis, floorplanning, routing, static timing analysis and performance-driven layout. It requires a basic knowledge of digital circuit design, data structure, and object-oriented programming. Students cannot receive credit for both CSCE 43703 and CSCE 53703. Prerequisite: CSCE 39503 and CSCE 31903, each with a C or higher. (Typically offered: Irregular)

CSCE 44203. Computer Systems Modeling. 3 Hours.

Basic concepts of problem analysis, model design, and simulation experiments. A simulation will be introduced and used in this course. Prerequisite: CSCE 31903 or CSCE 319H3, each with a grade of C or better. (Typically offered: Irregular)

CSCE 44303. Cryptography. 3 Hours.

This course provides a general introduction to modern cryptography. Topics include: stream ciphers, block ciphers, message authentication codes, public key encryption, key exchange, and signature schemes. Prerequisite: (CSCE 31903 or CSCE 319H3 or DASC 21003, each with a grade of C or better) and (MATH 26103 or MATH 28003). (Typically offered: Irregular)

CSCE 44803. Wearable and Ubiquitous Computing. 3 Hours.

This course will introduce wearable and ubiquitous computing paradigms with emphasis on the engineering and development. Three key themes that will be taught during this course the systems and infrastructures which compose IoT and wearable systems, the devices and techniques for gathering data and communicating with the user, and the applications of these technologies including the user experience. Students cannot receive credit for both CSCE 44803 and CSCE 54803. Prerequisite: CSCE 31903 or CSCE 319H3, each with a grade of C or better. (Typically offered: Irregular)

CSCE 45203. Database Management Systems. 3 Hours.

Introduction to database management systems, architecture, storage structures, indexing, relational data model, E-R diagrams, query languages, SQL, ODBC, transaction management, integrity, and security. Students may not receive credit for both CSCE 45203 and CSCE 55203. Prerequisite: CSCE 31903 or CSCE 319H3, each with a grade of C or better. (Typically offered: Spring)

CSCE 45403. Software Architecture. 3 Hours.

A study of software architecture through the use of case studies drawn from real systems designed to solve real problems from technical as well as managerial perspectives. Techniques for designing, building, and evaluating software architectures. Prerequisite: CSCE 41303 and CSCE 35103. (Typically offered: Irregular)

CSCE 45503. Information Retrieval. 3 Hours.

The objective of this course is to give students a hands-on introduction to information retrieval systems. Classical textual information retrieval systems are studied, including text preprocessing, file structures, term-weighting schemes, and web search engines. Students may not receive credit for both CSCE 45503 and CSCE 55303. Prerequisite: CSCE 31903 or CSCE 319H3, each with a grade of C or better. (Typically offered: Irregular)

CSCE 45601. Capstone I. 1 Hour.

CSCE students complete a comprehensive software capstone project during their final year of undergraduate studies. The project is done over 2 semesters in phases: concept, formal proposal, implementation, and presentation. The projects include and may require the integration of software and human factors and hardware elements and are developed to software engineering methodologies. Prerequisite: CSCE 35103 and (CSCE 36103 or CSCE 361H3) and completion of 91 credit hours. (Typically offered: Fall)

CSCE 46103. Artificial Intelligence. 3 Hours.

Introduction to intelligent agents, AI languages, search, first order logic, knowledge representation, ontologies, problem solving, natural language processing, machine vision, machine learning, and robotics. Prerequisite: CSCE 31903 or CSCE 319H3 or DASC 21003, each with a grade of C or better. (Typically offered: Irregular)

CSCE 46203. Mobile Programming. 3 Hours.

An introduction to software development on mobile devices. The major topics covered in this course include underlying concepts and principles in mobile programming, as well as hands-on programming experience on mobile devices with an emphasis on smartphones. Prerequisite: CSCE 31903 or CSCE 319H3, each with a grade of C or better. (Typically offered: Irregular)

CSCE 46403. Graphics Processing Units Programming. 3 Hours.

This course provides an introduction to massively parallel programming using Graphics Processing Units (GPUs). Topics include basic programming model, GPU thread hierarchy, GPU memory architecture, and performance optimization techniques and parallel patterns needed to develop real-life applications. Prerequisite: CSCE 20104 with a grade of C or better. (Typically offered: Irregular)

CSCE 47503. Computer Networks. 3 Hours.

This course is an introductory course on computer networks. Using the Internet as a vehicle, this course introduces underlying concepts and principles of modern computer networks, with emphasis on protocols, architectures, and implementation issues. Students cannot receive graduate credit for CSCE 47503. Prerequisite: CSCE 31903 or CSCE 319H3, each with a grade of C or better. (Typically offered: Irregular)

CSCE 47803. Cloud Computing and Security. 3 Hours.

Cloud computing has entered the mainstream of information technology, providing highly elastic scalability in delivery of enterprise applications and services. In this course, we will focus on the architecture of today's cloud computing, the technologies used within them, application development using contemporary cloud computing tools, and the security risks and management in the cloud. Students cannot receive credit for both CSCE 47803 and CSCE 57803. Prerequisite: CSCE 36103 or CSCE 361H3, each with a grade of C or better. (Typically offered: Irregular)

CSCE 48103. Computer Graphics. 3 Hours.

Introduction to the theory and algorithms used in computer graphics systems and applications. Topics include: 2D and 3D geometric models (points, lines, polygons, surfaces), affine transformations (rotation, translation, scaling), viewpoint calculation (clipping, projection), lighting models (light-material interactions, illumination and shadow calculation). Students will implement their own graphics pipeline to demonstrate many of these techniques. Higher level computer graphics applications will be created using OpenGL. Prerequisite: CSCE 31903 or CSCE 319H3, each with a grade of C or better. (Typically offered: Irregular)

CSCE 48503. Information Security. 3 Hours.

This course covers principles, mechanisms, and policies governing confidentiality, integrity, and availability of digital information. Topics to be covered include security concepts and mechanisms, security policies, multilevel security models, system vulnerability, threat and risk assessment, basic cryptography and its applications, intrusion detection systems. Prerequisite: CSCE 31903 or CSCE 319H3 or DASC 21003, each with a grade of C or better. (Typically offered: Irregular)

CSCE 4900V. Individual Study. 1-6 Hour.

Individual study directed by faculty in current research topics, state of the art, or advanced methodology in one of the major computer science or computer engineering areas. (Typically offered: Irregular) May be repeated for up to 6 hours of degree credit.

CSCE 49104. Advanced Digital Design. 4 Hours.

To master advanced logic design concepts, including the design and testing of synchronous and asynchronous combinational and sequential circuits using state of the art CAD tools. Corequisite: Lab component. Prerequisite: CSCE 21104 or ELEG 29004. (Typically offered: Irregular)

CSCE 491HV. Honors Thesis. 1-3 Hour.

To provide honors students with experience in presenting their research accomplishments to their peers and faculty. Prerequisite: Honors standing. (Typically offered: Fall and Spring) May be repeated for up to 3 hours of degree credit.

CSCE 49603. Capstone II. 3 Hours.

CSCE students complete a comprehensive capstone project during their final year of undergraduate studies. The project is done over two consecutive semesters in phases: concepts, formal proposal, implementation, and presentation. The projects include and may require the integration of software, human factors, and hardware elements and are developed using software engineering methodologies. Prerequisite: CSCE 45601. (Typically offered: Spring)

CSCE 50103. Advanced Special Topics in Computer Science or Computer Engineering. 3 Hours.

Consideration of current computer engineering or computer science topics not covered in other courses. Prerequisite: Graduate standing in Computer Science Computer Engineering. (Typically offered: Irregular) May be repeated for up to 18 hours of degree credit.

CSCE 50303. Advanced Algorithms. 3 Hours.

Design of computer algorithms, with primary emphasis on the development of efficient implementation. Prerequisite: Graduate standing in Computer Science Computer Engineering. (Typically offered: Irregular)

CSCE 50603. Machine Learning. 3 Hours.

An introduction to machine learning, with particular emphasis on neural network techniques. This course presents the basic principles underlying algorithms that improve with experience, and covers using them effectively for modeling data and making predictions. Prerequisite: Computer Science Computer Engineering(CSCE) graduate standing. (Typically offered: Irregular)

CSCE 50703. Data Mining. 3 Hours.

This course surveys the most common methods used in data mining and machine learning. It involves several projects in which students will implement tools that are useful for mining knowledge from data and making predictions. The course will study both heuristic algorithms and statistical techniques. Prerequisite: CSCE 31903 and (INEG 23104 or STAT 30133) or Computer Science Computer Engineering (CSCE) graduate standing. (Typically offered: Irregular)

CSCE 50903. Concurrent Computing. 3 Hours.

Programming concurrent processes; computer interconnection network topologies; loosely coupled and tightly coupled paralleled computer architectures; designing algorithms for concurrency; distributed computer architectures. Graduate degree credit will not be given for both CSCE 42503 and CSCE 50903. Prerequisite: CSCE 31903 or Computer Science Computer Engineering (CSCE) graduate standing. (Typically offered: Irregular)

CSCE 51104. Embedded Systems. 4 Hours.

The architecture, software, and hardware of embedded systems. Involves a mixture of hardware and software for the control of a system (including electrical, electro-mechanical, and electro-chemical systems). They are found in a variety of products including cars, VCRs, HDTVs, cell phones, pacemakers, spacecraft, missile systems, and robots for factory automation. Graduate degree credit will not be given for both CSCE 41104 and CSCE 51104. Corequisite: Lab component. Prerequisite: CSCE 22104 with a grade of C or better or Computer Science Computer Engineering (CSCE) graduate standing. (Typically offered: Fall)

CSCE 51303. Algorithms. 3 Hours.

Provides an introduction to formal techniques for analyzing the complexity of algorithms. The course surveys important classes of algorithms used in computer science and engineering. Graduate degree credit will not be given for both CSCE 41303 and CSCE 51303. Prerequisite: ((CSCE 31903 and (MATH 26103 or MATH 28003)) or (MATH 44203) or (Computer Science/Computer Engineering(CS/CE) graduate standing). (Typically offered: Fall)

CSCE 51703. Formal Languages and Computability. 3 Hours.

Finite Automata and regular languages, regular expressions, context-free languages and pushdown automata, nondeterminism, grammars, and Turing machines. Church's thesis, halting problem, and undecidability. Graduate degree credit will not be given for both CSCE 43203 and CSCE 51703. Prerequisite: CSCE 41303 or CSCE 51303. (Typically offered: Spring)

CSCE 51803. Advanced Data Structures. 3 Hours.

This course continues the study of data structures, algorithmic analysis for these data structures, and their efficient implementation to support standard library in programming languages. Topics include: AVL trees, Red-Black trees, Splay trees, Optimal Binary Search trees, 2-3 tree, 2-3-4 tree, B-trees, Segment trees, Leftist Heaps, Binomial Heaps, Fibonacci Heap, Disjoint Set, Hashing, and big integer with hundreds to thousands of digits. Graduate degree credit will not be given for both CSCE 42603 and CSCE 51803. Prerequisite: CSCE 31903 or Computer Science Computer Engineering(CSCE) graduate standing. (Typically offered: Irregular)

CSCE 52003. Advanced Database Systems. 3 Hours.

Topics include: object databases, distributed databases, XML query, data warehouses, network as database systems, peer-peer data sharing architectures, data grids, data mining, logic foundations, semantic databases, spatial and temporal databases, and knowledge bases. Prerequisite: CSCE 45203 or CSCE 55203. (Typically offered: Irregular)

CSCE 52203. Introduction to Integrated Circuit Design. 3 Hours.

Design and layout of large scale digital integrated circuits using CMOS technology. Topics include MOS devices and basic circuits, integrated circuit layout and fabrication, dynamic logic, circuit design, and layout strategies for large scale CMOS circuits. Students may not receive credit for both CSCE 43303 and CSCE 52203. Prerequisite: (ELEG 32103 or ELEG 39903) and MATH 25804 or Computer Science Computer Engineering(CSCE) graduate standing. (Typically offered: Fall)

CSCE 52303. Low Power Digital Systems. 3 Hours.

The reduction of power consumption is rapidly becoming one of the key issues in digital system design. Traditionally, digital system design has mainly focused on performance and area trade-offs. This course will provide a thorough introduction to digital design for lower consumption at the circuit, logic, and architectural level. Graduate degree credit will not be given for both CSCE 42303 and CSCE 52303. Prerequisite: CSCE 22104 with a grade of C or better or graduate standing in Computer Science Computer Engineering (CSCE) or graduate standing in Electrical Engineering (ELEG). (Typically offered: Irregular)

CSCE 52503. Integrated Circuit Design Laboratory I. 3 Hours.

Design and layout of large scale digital integrated circuits. Students design, check and simulate digital integrated circuits which will be fabricated, and tested in I.C. Design Laboratory II. Topics include computer aided design, circuit timing, and wire delay. Prerequisite: CSCE 43303 or CSCE 52203 or ELEG 42303 or ELEG 59203. (Typically offered: Irregular)
This course is cross-listed with CSCE 5250, ELEG 5250.

CSCE 52603. Computational Complexity. 3 Hours.

Turing machines, recursion theory and computability, complexity measures, NP-completeness, analysis on NP-complete problems, pseudo-polynomial and approximation. Prerequisite: Computer Science Computer Engineering (CSCE) graduate standing. (Typically offered: Irregular)

CSCE 52703. Big Data Analytics and Management. 3 Hours.

Topics include principles of distributed data computing and management, design and implementation of non-relational data systems, crowd sourcing and human computation, big data analytics and scalable machine learning, real-time streaming data analysis, and social aware computing. Prerequisite: CSCE 31903 and INEG 23104 or Computer Science Computer Engineering (CSCE) graduate standing. (Typically offered: Irregular)

CSCE 52803. Graph and Combinatorial Algorithms. 3 Hours.

Advanced topics in graph and combinatorial optimization problems. Traditional approach section: P and NP problems, proof of NP-completeness, approximation algorithms for solving NP hard problems. Machine learning-based approach section: graph neural networks, deep reinforcement learning, state-of-the-art machine learning approaches for solving graph and combinatorial optimization problems. Prerequisite: Graduate standing in CSCE Department. (Typically offered: Irregular)

CSCE 52903. Computer Architecture. 3 Hours.

The architecture of modern scalar and parallel computing systems. Techniques for dynamic instruction scheduling, branch prediction, instruction level parallelism, shared and distributed memory multiprocessor systems, array processors, and memory hierarchies. Graduate degree credit will not be given for both CSCE 42103 and CSCE 52903. Prerequisite: CSCE 22104 with a grade of C or better or Computer Science Computer Engineering(CSCE) graduate standing. (Typically offered: Spring)

CSCE 53203. Computer Security. 3 Hours.

This course covers a broad selection of contemporary issues in computer security. Topics include security concepts and mechanisms, access control, security policies, authentication methods, basic cryptography, secure system design, and information assurance. Prerequisite: Graduate standing in CSCE department. (Typically offered: Irregular)

CSCE 53303. Computer Forensics. 3 Hours.

Various methods for identification, preservation, and extraction of electronic evidence at a computer crime scene. Specific topics include auditing and investigation of network and host intrusions, computer forensics tools, resources for system administrators and information security officers, legal issues related to computer and network forensics. Prerequisite: CSCE 53203. (Typically offered: Irregular)

CSCE 53403. Advanced Software Engineering. 3 Hours.

This course is about software metrics and models. It will focus on quantitative methods and techniques for management of software projects, design of software systems, and improvement of software quality. The material covered will be metrics and models used in the software lifecycle, such as software requirements metrics, design metrics, implementation metrics, testing metrics, effort estimation model. Prerequisite: CSCE 35103 or Computer Science Computer Engineering (CSCE) graduate standing. (Typically offered: Irregular)

CSCE 53503. CPLD/FPGA-Based System Design. 3 Hours.

Field Programmable Logic devices (FPGAs/CPLDs) have become extremely popular as basic building blocks for digital systems. They offer a general architecture that users can customize by inducing permanent or reversible physical changes. This course will deal with the implementation of logic options using these devices. Graduate degree credit will not be given for both CSCE 43503 and CSCE 53503. Prerequisite: CSCE 22104 with a grade of C or better or Computer Science Computer Engineering (CSCE) graduate standing. (Typically offered: Irregular)

CSCE 53703. Electronic Design Automation. 3 Hours.

This course studies physical design, analysis and optimization of VLSI circuits and systems with emphasis on computational realizations and optimization. We start with some related topics such as graph algorithms and discuss various well-known algorithms and methodologies in the design process of VLSI circuits, including design partitioning, logic synthesis, floorplanning, routing, static timing analysis and performance-driven layout. It requires a basic knowledge of digital circuit design, data structure, and object-oriented programming. Students cannot receive credit for both CSCE 43703 and CSCE 53703. Prerequisite: Graduate standing in Computer Engineering, Computer Science, or Electrical Engineering. (Typically offered: Irregular)

CSCE 53803. Malware Analysis. 3 Hours.

This course discusses fundamental concepts on malicious software, otherwise known as malware, which play a major role in intrusion into computer systems. Various malware analysis tools and techniques are explored. A major focus of this course is providing hands-on laboratory activities, which include dissecting software binary and understanding how to detect and eliminate malicious codes. Prerequisite: Graduate standing in CSCE Department. (Typically offered: Irregular)

CSCE 54203. Cryptography. 3 Hours.

This course provides an introduction to cryptography and its applications and practices. Topics covered include cryptography basics, symmetric key cryptography, public-key cryptography, cryptographic hash function, digital signature, message authentication, key management, password security, SSL/TLS, IPsec, cryptography-assisted anonymous communications, cryptocurrency, and privacy-aware computing. Graduate degree credit will not be given for both CSCE 44303 and CSCE 54203. Prerequisite: Graduate standing in CSCE Department. (Typically offered: Irregular)

CSCE 54803. Wearable and Ubiquitous Computing. 3 Hours.

This course will introduce wearable and ubiquitous computing paradigms with emphasis on the engineering and development. Three key themes that will be taught during this course the systems and infrastructures which compose IoT and wearable systems, the devices and techniques for gathering data and communicating with the user, and the applications of these technologies including the user experience. Students cannot receive credit for both CSCE 44803 and CSCE 54803. Prerequisite: Graduate standing in Computer Engineering, Computer Science, or Electrical Engineering. (Typically offered: Irregular)

CSCE 55203. Database Management Systems. 3 Hours.

Introduction to database management systems, architecture, storage structures, indexing, relational data model, E-R diagrams, query languages, SQL, ODBC, transaction management, integrity, and security. Graduate degree credit will not be given for both CSCE 45203 and CSCE 55203. Prerequisite: Graduate standing in CSCE Department. (Typically offered: Spring)

CSCE 55303. Advanced Information Retrieval. 3 Hours.

Study of the architecture, implementation, and evaluation of current information retrieval systems. Students will apply their knowledge of programming and data structures to implement a large system with an emphasis on efficiency and scalability. They will study current research in the field and implement individual or group projects on advanced topics. Prerequisite: Computer Science Computer Engineering (CSCE) graduate standing. (Typically offered: Irregular)

CSCE 55403. Statistical Natural Language Processing. 3 Hours.

Introduction to statistical natural language processing (NLP). Covers the theory and algorithms needed for building NLP tools, provides broad coverage of mathematical and linguistic foundations, and detailed discussion of statistical methods for text mining and information extraction. Current research and applications of statistical NLP will be discussed. Prerequisite: CSCE 20104 and (STAT 30133 or INEG 23104) or Computer Science Computer Engineering (CSCE) graduate standing. (Typically offered: Irregular)

CSCE 55503. Software Architecture. 3 Hours.

A study of software architecture through the use of case studies drawn from real systems designed to solve real problems from technical as well as managerial perspectives. Techniques for designing, building, and evaluating software architectures. Graduate degree credit will not be given for both CSCE 45403 and CSCE 55503. Prerequisite: (CSCE 41303 or CSCE 51303) and CSCE 35103. (Typically offered: Irregular)

CSCE 55603. Introduction to Deep Learning. 3 Hours.

The course aims at understanding the fundamental of deep learning and its application in computer vision, natural language understanding and game theory. The course starts with basic multi layer perceptron and then moves towards other complicated models such as convolutional neural networks, recurrent neural networks, attention, and generative adversarial network models. The course will end with deep reinforcement learning. The course provides required steps for building deep learning models. Prerequisite: Computer Science Computer Engineering (CSCE) Graduate Standing. (Typically offered: Irregular)

CSCE 56103. Artificial Intelligence. 3 Hours.

Introduction to intelligent agents, AI languages, search, first order logic, knowledge representation, ontologies, problem solving, natural language processing, machine vision, machine learning, and robotics. Prerequisite: Graduate standing in CSCE Department. (Typically offered: Irregular)

CSCE 56203. Secure Digital System Design. 3 Hours.

This course is to give graduate students an insight of contemporary security-related issues in modern digital systems. In addition to lectures, students will be practicing secure digital system design during a project. Prerequisite: Computer Science Computer Engineering (CSCE) graduate standing or Electrical Engineering (ELEG) graduate standing. (Typically offered: Irregular)

CSCE 56503. Network Security. 3 Hours.

This course will be a programming-based, learn-by-doing-oriented course focused on applying foundational principles in security to real networked systems. It will study and simulate genuine attacks across computer systems, networks, and the web. Students will not only understand how these attacks operate but will also gain the skills to prevent, detect, and mitigate them. Additionally, this course offers a comprehensive exploration of various attack case studies and defense strategies, providing students with a holistic perspective on the ever-evolving landscape of network security. Prerequisite: Graduate standing in Computer Engineering, Computer Science, or Electrical Engineering. (Typically offered: Irregular)

CSCE 56703. Mobile Programming. 3 Hours.

An introduction to software development on mobile devices. The major topics covered in this course include underlying concepts and principles in mobile programming, as well as hands-on programming experience on mobile devices with an emphasis on smartphones. Graduate degree credit will not be given for both CSCE 46203 and CSCE 56703. Prerequisite: CSCE 31903 or Computer Science Computer Engineering (CSCE) graduate standing. (Typically offered: Irregular)

CSCE 56803. Image Processing. 3 Hours.

The objective of this class is to give students a hands-on introduction to the fundamentals of image processing. A variety of image processing techniques and applications will be discussed including image enhancement, noise removal, spatial domain and frequency domain filtering, image restoration, color image processing, image compression, edge detection and image segmentation. Prerequisite: CSCE 31903 or Computer Science Computer Engineering (CSCE) graduate standing. (Typically offered: Irregular)

CSCE 56903. Graphics Processing Units Programming. 3 Hours.

This course provides an introduction to massively parallel programming using Graphics Processing Units (GPUs). Topics include basic programming model, GPU thread hierarchy, GPU memory architecture, and performance optimization techniques and parallel patterns needed to develop real-life applications. Graduate degree credit will not be given for both CSCE 46403 and CSCE 56903. Prerequisite: CSCE 20104 with a grade of C or better or Computer Science Computer Engineering (CSCE) graduate standing. (Typically offered: Irregular)

CSCE 57003. Computer Vision. 3 Hours.

The objective of this course is to give students a hands-on introduction to the fundamentals of computer vision. Topics include image formation, object modeling, image processing, feature and edge detection, image segmentation, motion estimation, depth from stereo, shape description and object recognition. Prerequisite: CSCE 31903 and CSCE 46103 or Computer Science Computer Engineering (CSCE) graduate standing. (Typically offered: Irregular)

CSCE 57503. Wireless Systems Security. 3 Hours.

Wireless systems such as wireless local area networks, cellular and mobile networks, and sensor networks are vulnerable to attacks. The goal of the class is for students to understand how to design secure wireless systems. Security topics include confidentiality, integrity, availability, privacy, and control of fraudulent usage of networks. Issues addressed include basic wireless theory, cryptography, threat modeling, risks, and mitigation techniques. Prerequisite: Graduate standing in Computer Science Computer Engineering(CSCE). (Typically offered: Irregular)

CSCE 57603. Privacy Enhancing Technologies. 3 Hours.

This course introduces privacy enhancing technologies and hot privacy topics in modern computing systems. Students will be exposed to many interesting privacy problems, study privacy enhancing technologies, and apply their knowledge to explore an open research problem in a research-oriented project. After completing this course, students will gain broad knowledge of the state-of-the-art privacy enhancing technologies and open research problems. They will also develop skills and enhance potentials to do research on privacy and security. Prerequisite: Must be a graduate student in Computer Science Computer Engineering (CSCE). (Typically offered: Irregular)

CSCE 57703. Computer Networks. 3 Hours.

This course is an introductory course on computer networks. Using the Internet as a vehicle, this course introduces underlying concepts and principles of modern computer networks, with emphasis on protocols, architectures, and implementation issues. Graduate degree credit will not be given for both CSCE 47503 and CSCE 57703. Prerequisite: Computer Science Computer Engineering (CSCE) graduate standing. (Typically offered: Irregular)

CSCE 57803. Cloud Computing and Security. 3 Hours.

Cloud computing has entered the mainstream of information technology, providing highly elastic scalability in delivery of enterprise applications and services. In this course, we will focus on the architecture of today's cloud computing, the technologies used within them, application development using contemporary cloud computing tools, and the security risks and management in the cloud. Graduate degree credit will not be given for both CSCE 47803 and CSCE 57803. Prerequisite: CSCE 36103 or graduate standing in Computer Science Computer Engineering(CSCE). (Typically offered: Irregular)

CSCE 57903. Advanced Network Security. 3 Hours.

This course will teach various topics in computer network security. It will provide a thorough grounding in cyber-security for students who are interested in conducting research and development work on network and system security, and for students who are more broadly interested in real-world security issues and techniques. Students will also be looking at various case studies of attacks and defense strategies, including known exploit proofs-of-concept, published papers, and documents from security agencies and cyber-security research firms. Prerequisite: Graduate standing in Computer Engineering, Computer Science, or Electrical Engineering. (Typically offered: Irregular)

CSCE 58103. Computer Graphics. 3 Hours.

Introduction to the theory and algorithms used in computer graphics systems and applications. Topics include: 2D and 3D geometric models (points, lines, polygons, surfaces), affine transformations (rotation, translation, scaling), viewpoint calculation (clipping, projection), lighting models (light-material interactions, illumination and shadow calculation). Students will implement their own graphics pipeline to demonstrate many of these techniques. Higher level computer graphics applications will be created using OpenGL. Graduate degree credit will not be given for both CSCE 48103 and CSCE 58103. Prerequisite: CSCE 20104 with a grade of C or better or Computer Science Computer Engineering (CSCE) graduate standing. (Typically offered: Irregular)

CSCE 58203. Multiprocessor Systems on Chip. 3 Hours.

This course covers the latest trends in advanced computer architecture for multiprocessor systems on chip for embedded and real time systems. Topics covered include multicore architectures, modeling abstractions, run time systems, and MIMD/SIMD heterogeneous architectures, Hw/Sw co-design techniques. Prerequisite: CSCE 36103 and CSCE 42103. (Typically offered: Irregular)

CSCE 58303. Computer Architecture Security. 3 Hours.

This course will cover fundamental principles and emerging implementation strategies to reason about, design and construct architecture level security capabilities in the manycore era. Coverage includes formal security models, new and emerging considerations for heterogeneous multiprocessor system on chip architectures, hardware and software implementation methods, operating systems for run time security enforcement. Prerequisite: CSCE 42103 or graduate standing in Computer Science Computer Engineering (CSCE). (Typically offered: Irregular)

CSCE 58403. Reconfigurable Computing. 3 Hours.

This course will cover emerging and proposed techniques and issues in Reconfigurable Computing. Topics will include FPGA technologies, CAD/CAE tools, Hw/Sw co-design, system level synthesis, programming models and abstractions. Prerequisite: Graduate standing in CSCE Department. (Typically offered: Irregular)

CSCE 58503. Information Security. 3 Hours.

This course covers principles, mechanisms, and policies governing confidentiality, integrity, and availability of digital information. Topics to be covered include security concepts and mechanisms, security policies, multilevel security models, system vulnerability, threat and risk assessment, basic cryptography and its applications, intrusion detection systems. Graduate degree credit will not be given for both CSCE 48503 and CSCE 58503. Prerequisite: CSCE 31903 or Computer Science Computer Engineering (CSCE) graduate standing. (Typically offered: Irregular)

CSCE 5900V. Advanced Individual Study. 1-3 Hour.

Advanced graduate level individual study directed by faculty in current research topics, state of the art, or advanced methodology in one of the major computer science or computer engineering areas. (Typically offered: Irregular)

CSCE 59104. Advanced Digital Design. 4 Hours.

To master advanced logic design concepts, including the design and testing of synchronous and asynchronous combinational and sequential circuits using state of the art CAD tools. Graduate degree credit will not be given for both CSCE 59104 and CSCE 49104. Corequisite: Lab component. Prerequisite: Graduate students majoring in Computer Engineering, Computer Science, or Electrical Engineering. (Typically offered: Irregular)

CSCE 59403. Computer Arithmetic Circuits. 3 Hours.

Examination of fundamental principles of algorithms for performing arithmetic operations in computers. This course provides sufficient theoretical and practical information to prepare the digital design engineer with an awareness of basic techniques for the realization of arithmetic circuits. Prerequisite: Computer Science Computer Engineering (CSCE) graduate standing. (Typically offered: Irregular)

CSCE 6100V. Master's Thesis. 1-6 Hour.

Master's thesis. (Typically offered: Fall and Spring) May be repeated for degree credit.

CSCE 6200V. Post-Master's Research. 1-18 Hour.

Post-master's research. (Typically offered: Fall and Spring)

CSCE 6900V. Doctoral Individual Study. 1-3 Hour.

Advanced doctoral level individual study directed by faculty in current research topics, state of the art, or advanced methodology in one of the major computer science or computer engineering areas. (Typically offered: Irregular) May be repeated for up to 6 hours of degree credit.

CSCE 7000V. Doctoral Dissertation. 1-18 Hour.

Doctoral Dissertation. (Typically offered: Fall, Spring and Summer) May be repeated for degree credit.