CSC 611. Computer Architecture. (3 h)

An in-depth study of computer systems and architecture design. Topics include processor design, memory hierarchy, external string devices, interface design, and parallel architectures.

CSC 621. Database Management Systems. (3 h)

Introduction to large-scale database management systems. Topics include data independence, database models, query languages, security, integrity, and transactions.

CSC 622. Data Management and Analytics. (3 h)

Management, analysis, and visualization of large-scale data sets. Topics include key-value databases, distributed file systems, map reduce techniques, similarity measures, link analysis, and clustering. P - CSC 621.

CSC 631. Software Engineering. (3 h)

Study of fundamental topics in software engineering including software processes, agile software development and project management, requirements engineering, system modeling, design patterns and implementation, and software testing. Students practice software engineering principles through team projects.

CSC 632. Mobile and Pervasive Computing. (3 h)

Study of the fundamental design concepts and software principles underlying mobile and pervasive computing, including mobile interface design, data management, mobile networks, location aware computing, and mobile security. Involves significant programming on modern mobile platforms.

CSC 633. Principles of Translators for Compilers and Interpreters. (3 h)

Study of techniques for translating high-level programming languages to a target language. Typical target languages include Java bytecode and assembly language. Topics include lexical analysis, parsing, intermediate representatives, language semantics, code generation, and optimization.

CSC 641. Operating Systems. (3 h)

Study of the different modules that compose a modern operating system. In-depth study of concurrency, processor management, memory management, file management, and security.

CSC 643. Internet Protocols. (3 h)

Study of wide area connectivity through interconnection networks. Emphasis is on Internet architecture and protocols. Topics include addressing, routing, multi-casting, quality of service, and network security.

CSC 646. Parallel Computation. (3 h)

Study of techniques for parallel and high performance computing. Topics include an overview of modern high-performance computer design, pipelining, concurrency, data dependency, shared memory, message passing, and graphics processors. Select parallel algorithms and methods for asymptotic scalability analysis are also presented. Assignments may include coding with OpenMP, MPI, and CUDA.

CSC 647. GPU Programming. (3 h)

An introduction to general purpose parallel program development on Graphics Processing Units (GPUs). Topics covered will include data parallelism, memory and data locality, parallel algorithm patterns and performance metrics, and application test studies.

CSC 648. Computer Security. (3 h)

Introduction to computer security concepts and associated theory. Detailed coverage of the core concepts of access control, cryptography, trusted computing bases, digital signatures, authentication, network security, and secure architectures. Legal issues, security policies, risk management, certification and accreditation are covered in their supporting roles. Students will learn to analyze, design, and build secure systems of moderate complexity.

CSC 652. Numerical Linear Algebra. (3 h)

Numerical methods for solving matrix and related problems in science and engineering using a high-level matrix-oriented language such as MATLAB. Topics include systems of linear equations, least squares methods, and eigenvalue computations. Special emphasis is given to applications. Credit is not allowed for both CSC 652 and MTH 626.

CSC 655. Introduction to Numerical Methods. (3 h)

An introduction to numerical computations on modern computer architectures; floating point arithmetic and round-off error including programming in a scientific/engineering language such as MATLAB, C or Fortran. Topics include algorithms and computer techniques for the solution of problems such as roots of functions, approximations, integration, systems of linear equations and least squares methods. Credit not allowed for both MTH 655 and CSC 655.

CSC 661. Digital Media. (3 h)

Study of the mathematics and algorithms underlying digital sound, image, and video manipulation. Topics may include sampling and quantization, resolution, filters, transforms, data encoding and compression, multimedia files types and transmission, 3D printing, and digital media in multimedia and web programming.

CSC 663. Computer Graphics. (3 h)

Study of software and hardware techniques in computer graphics. Topics include line and polygon drawing, hidden line and surface techniques, transformations, and ray tracing.

CSC 665. Image Processing Fundamentals. (3 h)

Study of the basic theory and algorithms for image enhancement, restoration, segmentation, and analysis.

CSC 671. Artificial Intelligence. (3 h)

An overview of areas of study in artificial intelligence. Topics are chosen from among knowledge representation, formal logic, fuzzy logic, intelligent agents, expert systems, machine learning, robotics, and natural language processing.

CSC 673. Data Mining. (3 h)

An overview of data mining methods and algorithms for classification, association analysis, clustering, and anomaly detection. A major focus will be on the implementation of algorithms for and design and construction of solutions to data mining problems. Applications and ethical considerations of data mining in humanities, arts, and healthcare are discussed.

CSC 674. Machine Learning. (3 h)

An introduction to concepts and application of machine learning algorithms and techniques, focusing on supervised and unsupervised learning. Students learn the theoretical concepts behind several types of machine learning algorithms and gain practical experience applying them. Algorithms covered could include logistic regression, support vector machines, regularization, dimensional reduction, clustering, and neural networks.

CSC 675. Neural Networks and Deep Learning. (3 h)

An introduction to concepts and applications of neural networks and deep learning, a branch of machine learning that uses additional layers of high-level representations of data to maximize performance on a given task. The topics covered may include basic neural networks, deep neural networks, and convolutional and recurrent neural networks. Students learn the theoretical concepts behind several of types of neural network algorithms and gain practical experience applying them.

CSC 685. Bioinformatics. (3 h)

Introduction to bioinformatics and computing techniques essential to current biomedical research. Primary focus is gene and protein sequence and structure databases and algorithms for sequence and structure analysis. Emphasizes interdisciplinary interactions and communication. Also listed as PHY 685 and BIO 685.

CSC 687. Computational Systems Biology. (3 h)

Introduction of concepts and development of skills for the comprehension of modern systems biology research problems, including both biological and computational aspects. Topics may include microarrays, protein interaction networks, large-scale proteomics experiments, and algorithms and computational approaches for modeling, storing, and analyzing the resulting data sets. Emphasizes interdisciplinary interactions and communication.

CSC 691. Selected Topics. (1-3 h)

Topics in computer science that are not studied in regular courses or which further examine topics begun in regular courses. P-POI.

CSC 693. Individual Study. (1, 2 h)

Independent study directed by a faculty adviser. By prearrangement.

CSC 702. Theory of Computation. (3 h)

Basic theoretical principles of computer science. Topics include the relationship between automata and grammars, Church's thesis, unsolvability, and computational complexity.

CSC 721. Theory of Algorithms. (3 h)

Design and analysis of algorithms. Topics may include time and space complexity analysis, divide-and-conquer algorithms, the fast Fourier transform, NP-complete problems, and efficient algorithms for operations on lists, trees, graphs, and matrices.

CSC 726. Parallel Algorithms. (3 h)

A thorough, current treatment of parallel processing and supercomputing. Modern high-performance commercial architectures, parallel programming, and various supercomputing applications are discussed. Hands-on experience is emphasized. Students are given access to a variety of machines.

CSC 731. Compiler Optimization. (3 h)

Design and implementation of optimizing compilers. Optimization techniques, parallelizing transforms, and comparative examples form the literature. P-CSC 633.

CSC 743. Topics in Operating Systems. (3 h)

Issues in operating system development; resource management, queuing theory, concurrent processing, and languages for operating system development. P-CSC 641.

CSC 753. Nonlinear Optimization. (3 h)

The problem of finding global minimums of functions is addressed in the context of problems in which many local minima exist. Numerical techniques are emphasized, including gradient descent and quasi-Newton methods. Current literature is examined and a comparison made of various techniques for both unconstrained and constrained optimization problems. Credit not allowed for both CSC 753 and MTH 753. P-CSC 655 or MTH 655.

CSC 754. Numerical Methods for Partial Differential Equations. (3 h)

Numerical techniques for solving partial differential equations (including elliptic, parabolic, and hyperbolic) are studied along with applications to science and engineering. Theoretical foundations are described, and emphasis is on algorithm design and implementation using either C, FORTRAN or MATLAB. Also listed as MTH 754. P-CSC 655 or MTH 655.

CSC 765. Image Processing. (3 h)

Advanced techniques in image processing including image formation and corruption models, digitization, Fourier domain methods, enhancement, restoration, and tomographic reconstruction. P-CSC 721.

CSC 766. Pattern Recognition. (3 h)

Study of statistical pattern recognition techniques and computer-based methods for decision-making, including discriminant functions, feature extraction, and classification strategies. Emphasis is on applications to medical image analysis. P-POI.

CSC 767. Computer Vision. (3 h)

Techniques for extracting features from images: optimal thresholding, 2D and 3D feature measurement, graph isomorphism and graph matching methods. P-CSC 766.

CSC 775. Neural Networks. (3 h)

Design of artificial neural networks. Introduction to the relevant neurophysiology, feedforward networks, recurrent networks, and applications to pattern recognition and optimization.

CSC 779. Topics in Artificial Intelligence. (3 h)

Advanced topics in artifical intelligence. Individual projects are assigned. P-CSC 671.

CSC 781. Computer Science Seminar. (0 h)

Discussions of contemporary research. No credit.

CSC 790. Advanced Topics in Computer Science. (3 h)

Advanced topics of current interest in computer science not covered by existing courses. P-POI.

CSC 791. Thesis Research I. (1-9 h)

May be repeated for a maximum of 18 hours each. Satisfactory/Unsatisfactory.

CSC 792. Thesis Research II. (1-9 h)

May be repeated for a maximum of 18 hours each. Satisfactory/Unsatisfactory.

CSC 795. Project. (3 h)

Satisfactory/Unsatisfactory.

CSC 796. Internship. (1-6 h)

Provides students an opportunity to integrate computer science theory and practice by working in a supervised and professional setting. The course is limited to those seeking the fifth-year Master's in computer science and approval must be obtained by the Computer Science Graduate faculty prior to enrollment. Credit hours may be adjusted based on the length of the internship. May be repeated. Satisfactory/Unsatisfactory. P-CSC 631 (admission to the 5th year program).