600 Level Courses

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) Introduction to problems in artificial intelligence. Topics may include knowledge representation, heuristic search, formal logic, planning, robotics, machine learning, intelligent agents, and pattern recognition.

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.