WAKE FOREST UNIVERSITY DEPARTMENT OF COMPUTER SCIENCE

Graduate Courses

DEPT. OF COMPUTER SCIENCE

Graduate Course Descriptions

611. Computer Architecture. (3) In-depth study of computer systems and architecture design. Topics include processor design, memory hierarchy, external storage devices, interface design, and parallel architectures.

621. Database Management Systems. (3) Introduction to database management systems. Topics include data independence, database models, query languages, security, integrity, and transactions.

622. Database Management and Analytics. (3) Management, analysis, and visualization of largescale data sets. Topics include key-value databases, distributed file systems, map-reduce techniques, similarity measures, link analysis, and clustering. P—CSC 621.

631. Software Engineering. (3) 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.

632. Mobile and Pervasive Computing. (3) 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.

633. Principles of Translators for Compilers and Interpreters. (3) 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 representations, language semantics, code generation, and optimization.

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

643. Internet Protocols. (3) Study of wide area connectivity through interconnection networks. Emphasis is on Internet architecture and protocols. Topics include addressing, routing, multicasting, quality of service, and network security.

646. Parallel Computation. (3) 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 the CUDA library.

647. GPU Programming. (3) 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.

648. Computer Security. (3) 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.

652. Numerical Linear Algebra. (3) 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 given to applications. Credit not allowed for both CSC 652 and MTH 626.

655. Introduction to Numerical Methods. (3) 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.

661. Digital Media. (3) 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.

663. Computer Graphics. (3) Study of software and hardware techniques in computer graphics. Topics include line and polygon drawing, hidden line and surface techniques, transformations, and ray tracing.

665. Image Processing Fundamentals. (3) Study of the basic theory and algorithms for image enhancement, restoration, segmentation, and analysis.

671. Artificial Intelligence. (3) 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.

673. Data Mining. (3) 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.

674. Machine Learning. (3) 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.

675. Neural Networks and Deep Learning. (3) 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 types of neural network algorithms and gain practical experience applying them.

685. Bioinformatics. (3) 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 interaction and communication. Also listed as PHY 685 and BIO 685.

687. Computational Systems Biology. (3) Introduction of concepts and development of skills for 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 interaction and communication.

691. Selected Topics. (1, 2, 3) Topics in computer science that are not studied in regular courses or which further examine topics begun in regular courses. P—POI

693. Individual Study. (1 or 2) Independent study directed by a faculty adviser. By prearrangement.

702. Theory of Computation. (3) Basic theoretical principles of computer science. Topics include the relationship between automata and grammars, Church’s thesis, unsolvability, and computational complexity.

721. Theory of Algorithms. (3) 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.

726. Parallel Algorithms. (3) 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.

731. Compiler Optimization. (3) Design and implementation of optimizing compilers. Optimization techniques, parallelizing transforms, and comparative examples from the literature. P—CSC 633

743. Topics in Operating Systems. (3) Issues in operating system development; resource management, queuing theory, concurrent processing, and languages for operating system development. P—CSC 641

753. Nonlinear Optimization. (3) 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 MTH 753 and CSC 753. P—CSC or MTH 655

754. Numerical Methods for Partial Differential Equations. (3) 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. Credit not allowed for both MTH 754 and CSC 754. P—CSC 655 or MTH 655.

765. Image Processing. (3) Advanced techniques in image processing including image formation and corruption models, digitization, Fourier domain methods, enhancement, restoration, and tomographic reconstruction. P—CSC 721

766. Pattern Recognition. (3) 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

767. Computer Vision. (3) Techniques for extracting features from images: optimal thresholding,
2D and 3D feature measurement, graph isomorphism and graph matching methods. P—CSC 766

775. Neural Networks. (3) Design of artificial neural networks. Introduction to the relevant neurophysiology, feedforward networks, recurrent networks, and applications to pattern recognition and optimization.

779. Topics in Artificial Intelligence. (3) Advanced topics in artificial intelligence. Individual projects are assigned. P—CSC 671.

781. Computer Science Seminar. (0) Discussions of contemporary research. No credit.

790. Advanced Topics in Computer Science. (3) Advanced topics of current interest in computer science not covered by existing courses. P—POI

790. (Spring 2021) Topics in Bioinformatics. (3) After a brief review of molecular biology and an introduction to commonly used tools, algorithms, and databases in bioinformatics, the course will focus on computational methods and algorithms for the analysis of biological sequence data. Topics include probabilistic methods such as Position Weight Matrices, Hidden Markov Models for conducting profile-based searches, Support Vector Machines, and algorithms for cluster analysis. 

791, 792. Thesis Research. (1-9). May be repeated for a maximum of 18 hours each. Satisfactory/ Unsatisfactory

795. Project. (3). Satisfactory/Unsatisfactory

796. Internship. (1-6). The objective of this course is to provide 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).