Department of Computer Science

Department website

Integrated Science Center
540 Landrum Drive
Williamsburg, VA 23185

info@cs.wm.edu


The Computer Science Program

The Department of Computer Science offers a Master of Science (M.S.) and a Doctor of Philosophy (Ph.D.) in Computer Science. In addition, the department offers a M.S. and a Ph.D. with a concentration in Computational Science. A M.S. with a concentration in Cybersecurity and a M.S. with a concentration in Artificial Intelligence/Machine Learning are also available for students that want to study those areas in depth. A Bridge to the M.S. for students transitioning from a non-computer science academic background is also available. The Department provides a strong research program with faculty actively engaged in research in the following areas: artificial intelligence, cybersecurity, cyberphysical systems, computer systems and networking, high performance computing, modeling and simulation, programming languages and compilers, robotics, software verification, software engineering, graphics, and scientific computing.


Admission

William & Mary uses an online application system.  Application materials consist of transcripts and three letters of recommendation. The general and computer science subject GRE scores are not required but may optionally be supplied. The absence of GRE scores will not negatively affect the application. If English is not your first language, your Test of English as a Foreign Language (TOEFL) or International English Language Testing System (IELTS) scores are required and must be sent directly to William & Mary by the Educational Testing Service or IELTS.


Admission requirements for the M.S. and Ph.D. in Computer Science

Students seeking the M.S. or Ph.D. degrees in computer science are expected to have a background that includes the following:

  • Mathematics: two calculus courses and one linear algebra course.
  • Computer Science: two introductory programming courses (CS1 and CS2 in the standard computer science curriculum) and a cohort of courses that may include: discrete mathematics, data structures, algorithms, and computer organization.

Applicants to the M.S. program who are lacking sufficient background may be considered for admission to the Bridge to the M.S. pathway program. In that case, the department will establish a suitable set of qualifying courses at the time of admission. To continue in the M.S. program, Bridge to the M.S. students must earn at least a B- in each qualifying course. 


Admission requirements for the M.S. with a Concentration in Computational Science

Students seeking the M.S. degree with a concentration in computational science are expected to have a background in mathematics, science or engineering that includes the following:

  • Mathematics: two calculus courses and one linear algebra course
  • Computer Science: two introductory programming courses (CS1 and CS2 in the standard computer science curriculum).

Students with insufficient background in data structures, algorithms, computer organization, and systems programming may be required to enroll in CSCI 241 Data Structures CSCI 303 Algorithms, CSCI 304 Computer Organization, and CSCI 415 Systems Programming.


Computer Science, Bridge to the M.S.

The Bridge to M.S. option is intended for students that want to obtain a Master of Science degree in Computer Science but who might be missing some prerequisite background in the discipline. The Bridge to M.S. students will be provided with a tailored curriculum of prerequisite courses and each student will be assigned a dedicated advisor. A student’s prior experience, either academic or professional, will determine the starting point in the course work. The total credit hour requirement before taking graduate courses in the M.S. program in CS is between 4 and 30, depending on the applicant’s background coursework in CS and Math. Exact individual requirements will be worked out with a faculty advisor and will consider the student’s academic and professional CS background.

The Bridge to M.S. students will focus more on hands-on experience and less on research in the discipline. Students may enroll part-time or full-time. Students with some related experience will be able to skip some portions of the coursework. Students who earn a grade of “B-” or better in each qualifying course and meet the minimum GPA in bridge coursework will seamlessly continue in the Computer Science M.S. program

W&M computer science students have great freedom in choosing their courses, thus it is possible to specialize in a particular field (assuming courses are offered in that field).


Course Requirements before moving to M.S. courses

Calculus I
Calculus II
Linear Algebra
Computational Linear Algebra Lab
Modern Programming Fundamentals
Data Structures
Logic and Discrete Structures
Software Development
Algorithms
Computer Organization

To continue in the M.S. program, Bridge to M.S. students must earn at least a "B-" in each qualifying course taken. 

Graduate Courses in Computer Science

CSCI 515  Systems Programming  (3 Credits)  
The design and implementation of programs which provide robust and efficient services to users of a computer. Macro processors; scripting languages; graphical interfaces; network programming. Unix and X are emphasized. Cross-listed with CSCI 415.
CSCI 516  Fundamentals of Artificial Intelligence and Machine Learning  (3 Credits)  
Machine learning (ML) is the study of predictive models whose performance can be improved by incorporating additional data or experience. This course will give an overview of the theory and practice of machine learning, focusing primarily on deterministic ML methods for classification and regression. Topics include decision trees, linear and nonlinear regression, artificial neural networks, support vector machines and kernel methods, ensemble methods, clustering methods, dimension reduction techniques, mixture models, and naive Bayes methods. We will also look at practical concerns such as performance evaluation, data preprocessing, and hyperparameter tuning. Cross-listed with CSCI 416.
CSCI 517  Computer Animation  (3 Credits)  
Introduction to principles and practice of 3D computer animation within the context of digital production. Primary topics include modeling, keyframe animation, procedural animation, shading, rigging, and effects. Course projects will be time-intensive and completed using production-level software, complemented by Python scripting. Cross-listed with CSCI 417.
CSCI 520  Elementary Topics  (1-3 Credits)  
Will be published in the registration schedule. A treatment of elementary topics of interest not routinely covered by existing courses. Material may be chosen from various areas of computer science. Cross-listed with CSCI 420 This course may be repeated for credit.
CSCI 521  Implementation of Database Systems  (3 Credits)  
Issues involved in designing efficient database systems, and the strategies, data structures, and algorithms used in the implementation of such systems. Some advanced topics covered: data warehousing, online analytical processing, data mining, spatial data management.
CSCI 523  Finite Automata and Theory of Computation  (3 Credits)  
Theory of sequential machines and finite automata. Turing machines, recursive functions, computability of functions.
CSCI 524  Computer Architecture  (3 Credits)  
An introduction to the principles of computer design. Topics include data representation, including adders, signed integer arithmetic, floating point representation and character representation. A study of microprocessor, minicomputer and mainframe architecture including clocks, memory management, bus communication and input/output.
CSCI 526  Simulation  (3 Credits)  
An introduction to simulation. Discrete and continuous stochastic models, random number generation, elementary statistics, simulation of queuing and inventory systems, Monte Carlo simulation, point and interval parameter estimation. Selected applications.
CSCI 527  Computer Graphics  (3 Credits)  
An introduction to computer graphics and its applications. Topics include coordinate systems, the relationship between continuous objects and discrete displays, fill and flood algorithms, two-dimensional geometric transformations, clipping, zooming, panning, and windowing. Topics from three-dimensional graphics include representations for objects, geometric and projection transformations, geometric modeling, and hidden line/surface removal algorithms. Cross-listed with CSCI 427.
CSCI 530  Computer Languages  (1-3 Credits)  
Topics include syntax, semantics, and pragmatics of one computer language as well as aspects of that language’s intended areas of application which influenced its design. The language studied will vary; students may repeat the course for different languages.
CSCI 532  Web Programming  (3 Credits)  
Overview of the Internet. Markup languages: HTML, CSS, XML. Server-side programming languages: Perl/Python, PHP, Java. Other topics include: N-tier programming, security, database access, XML processing. Cross-listed with CSCI 432.
CSCI 534  Network Systems and Design  (3 Credits)  
The Internet; principles and design of network applications, including web servers and multimedia; transport, network and data link layers; network security; network performance evaluation and capacity planning. Cross-listed with CSCI 434.
CSCI 535  Software Engineering  (3 Credits)  
The software life cycle. Software design methodologies. Testing and maintenance. Programming teams. Cross-listed with CSCI 435.
CSCI 536  Data Mining  (3 Credits)  
The past few years have witnessed a boom of big data in different areas, including commercial platforms, healthcare, social networks, business, finance and more. Extracting useful and valuable information from big data can help improve quality of life and make our world a better place. The goal of this course is to introduce the Extracting useful and valuable information from big data can help improve quality of life fundamental concepts and techniques in data mining. Specifically, this course will cover the basic data mining concepts, graph mining, traditional clustering and classification models as well as the latest deep learning techniques. This course can help undergraduate students find a position of data scientist after graduation and do some data mining related projects for post-graduate study. In this course, students are required to do machine programming assignments, and take midterm and final exam. Cross-listed with CSCI 436.
CSCI 542  Compiler Construction  (3 Credits)  
Principles and tools for the construction of translators for programming languages. Topics include lexical analysis, block structure, grammars, parsing, error recovery, program representation, run-time organization and code generation.
CSCI 544  Principles of Operating Systems  (3 Credits)  
The conceptual view of an operating system as a collection of concurrent processes; semaphores, monitors, and rendezvous. Real and virtual memory organization, resource allocation, file organization and management, processor allocation and management, and external device management. Cross-listed with CSCI 444.
CSCI 545  Mobile Application Security  (3 Credits)  
The course will cover topics including (but not limited to) security basics, application of crypto in mobile apps, storage in mobile applications, secure network communications, inter-application data flows, user privacy, static and dynamic analysis, manual analysis, using NLP in application analysis, and other emerging topics. A detailed list of lecture by lecture contents, assignments, and due dates (subject to change as semester evolves) is available on the course schedule. Cross-listed with CSCI 445.
Prerequisite(s): CSCI 301  
CSCI 546  Neural Networks and Machine Learning  (3 Credits)  
Foundational topics in pattern recognition and machine learning such as probability distributions, linear models for regression, and linear models for classification are discussed. Examines nonlinear models for regression and classification, focusing on artificial neural networks. Cross-listed with CSCI 446.
CSCI 554  Computer and Network Security  (3 Credits)  
An introduction to the principles and practices of cryptography, network security, and secure software. Cryptography topics include: basic methods, key distribution and protocols for authenticated and confidential communications. The practice of network security includes: Kerberos, PGP, public key infrastructures, SSL/TLS, IP security, intrusion detection, password management, firewalls, viruses and worms, and Denial of Service (DoS) attacks. Cross-listed with [CSCI 454]
CSCI 555  Generative AI for Software Development  (3 Credits)  
This course is designed to bridge the gap between traditional software engineering practices and cutting-edge advancements in artificial intelligence, with a focus on Generative Al techniques. It aims to provide students with the skills to effectively integrate GenAI into software development workflows, enabling them to automate and optimize key tasks. Students will be introduced to the latest breakthroughs in generative methods for software, including tools like GitHub Copilot and ChatGPT, which are used to streamline tasks such as code generation and software documentation. Cross-listed with CSCI 455.
Prerequisite(s): CSCI 301 and CSCI 416  
CSCI 564  Applied Cybersecurity  (3 Credits)  
This is a systems-level security course involving hands-on labs, lecture, student presentations and a term project. Students will learn about secure systems design, vulnerabilities and how to defend against attacks to network, hardware and software components covering security issues and defenses from IoT to the cloud. Lab exercises will teach students how vulnerabilities work and how to document and mitigate them. Cross-listed with CSCI 464.
CSCI 566  Directed Studies  (3-4 Credits)  
No credits earned in this course may be applied to the number of credits required to satisfy graduate degree requirements. This course may be repeated.
CSCI 597  Problems in Computer Science  (1 Credit)  
Supervised projects selected to suit the needs of the graduate student, including those wishing to perform an internship as part of the Curricular Practical Training Program. Projects to be chosen in consultation with the student’s advisor. Acceptable research outlines and project reports are required. Students may count credits received in only one offering of this course toward the number of credits required for their degree.
CSCI 608  Decision Theory  (3 Credits)  
Development and use of systematic procedures for assisting decision makers in evaluating alternative choices. Emphasis is on problem formulation, uncertainty and risk assessment, Bayes, minimax and other decision rules and applications. Problems will be solved using appropriate software tools.
CSCI 616  Stochastic Models in Computer Science  (3 Credits)  
An introduction to stochastic models, problem solving, and expected value analysis as applied to algorithms and systems in computer science. Topics include probability, discrete and continuous random variables, discrete-time Markov chains, and continuous time birth-death processes.
CSCI 618  Models and Applications in Operations Research  (3 Credits)  
A study of realistic and diverse Operations Research problems with emphasis upon model formulation, interpretation of results and implementation of solutions. Topics include applications of linear programming, goal programming, decomposition of largescale problems, and job scheduling algorithms. Problems will be solved using appropriate software tools.
CSCI 619  Ubiquitous and Mobile Computing  (3 Credits)  
A study of research issues and applications in ubiquitous and mobile computing. Topics include image sensing, acoustic sensing, motion sensing, wireless sensing, I/O sensing, and social sensing. Additional topics include communication and networking issues in ubiquitous and mobile computing.
CSCI 626  Data Analysis and Simulation  (3 Credits)  
Basic statistical analysis techniques for experimental data generation and collection, aiming at design, analytic modeling and implementation of systems. Covers basics from the areas of statistics, simulation, event queueing, and their application to Internet systems, data centers and cloud computing, storage systems, distributed systems, and hardware/software design.
CSCI 628  Linear Programming  (3 Credits)  
Theory and applications of linear programming. Topics include the simplex method, duality theory, sensitivity analysis and interior point methods. Problems will be solved using appropriate software tools.
CSCI 634  Advanced Computer Networking  (3 Credits)  
Covers various aspects of computer networking: Internet design principles, wireless, mobile, and sensor networks, MAC protocols, routing, congestion/flow control, network topology and traffic analysis, network security, web service, and overlay networks.
CSCI 635  Advanced Software Engineering  (3 Credits)  
Covers a range of topics that challenge today’s software development teams: the design of large systems, the necessity to adjust and maintain existing software systems over a longer than expected life cycle, the urge for correctness, robustness and performance of software.
CSCI 636  Big Data Systems  (3 Credits)  
The course will introduce the students to the world of Big Data Systems and Analytical Frameworks. Instructor will first discuss the limitations of the prior technologies that were not enough to process Big Data, followed by the introduction and in-depth discussions of the technologies that were developed as part of Big Data Processing. This course will cover a mix of databases and distributed systems, focusing on transaction and various types of analytical models. In doing so, the course will define various data models, consistency models, programming frameworks, and scalability.
CSCI 638  Nonlinear Programming  (3 Credits)  
Topics include unconstrained optimization, nonlinear least-squares, feasible-point methods, and penalty and barrier methods, with an emphasis on effective computational techniques.
CSCI 642  Compiler Techniques for High Performance Computing  (3 Credits)  
This course aims to introduce various compiler optimization techniques for high performance computing (HPC), such as compiler analysis, code transformation, code optimization, instruction parallelism, multicore parallelism, cache management, modern parallel architectures, and programming models. In addition, students will explore related seminal and recent scientific publications in this area.
CSCI 645  Software Maintenance and Evolution  (3 Credits)  
This course will cover foundational techniques and recent advances in software maintenance and evolution, such as software change management, software quality measurement, software quality assurance, mining of software repositories, software refactoring, defect prediction, defect management, and software documentation.
CSCI 646  Deep Learning  (3 Credits)  
This course explores deep learning models in different research areas, ranging from computer vision and natural language processing (NLP) to graph representation. More specifically, this course will cover the foundations and advances in basic deep neural networks, deep generative models, language modeling, self-supervised learning, graph neural networks, and recent advances in the field.
CSCI 648  Network Optimization  (3 Credits)  
Network flow theory and algorithms, including transportation, maximum flow shortest path and minimum spanning tree problems. Applications to a variety of areas are also stressed. Problems will be solved using appropriate software tools.
CSCI 649  Computational Methods  (3 Credits)  
Covers a wide spectrum of numerical algorithms and techniques for solving real world computational problems. Topics include non-linear and linear equations, interpolation, integration, differentiation, and the central effects of floating point arithmetic. Both theory and programming aspects are covered.
CSCI 652  Advanced Compiler Construction  (3 Credits)  
A course on compiler technology with focus on program code optimizations, generation, and parallelization. Topics include data flow analysis, code transformations, dependence theory, parallelization and vectorization, register and cache management, and interprocedural analysis.
CSCI 653  Analysis of Algorithms  (3 Credits)  
Algorithm design techniques including divide-and-conquer, dynamic programming and greedy method. Analysis methods including worst case and average case. Additional topics chosen from among amortized analysis, lower bound theory and NP-completeness.
CSCI 654  Advanced Computer Architecture  (3 Credits)  
A study of high performance computer architecture with emphasis on experiments and simulation. Topics include pipelining, memory hierarchies, I/O, multiprocessors, and new designs for performance improvements.
CSCI 656  Machine Learning Systems  (3 Credits)  
Examines the growth of diverse applications of Machine Learning (ML) in production, the continued growth in data volume, and the complexity of large-scale learning systems artificial intelligence, machine learning, and system design. Explores system design for supporting large-scale ML applications, and how to use ML to optimize resource usage in computer systems.
CSCI 658  Discrete Optimization  (3 Credits)  
Topics include relaxation techniques, constructive heuristics, improving search techniques (simplex method simulated annealing, tabu search), branch and bound schemes, and valid inequalities for branch and cut methods. Problems will be solved using appropriate software tools.
CSCI 663  Theory of Computation  (3 Credits)  
An in depth study of Turing machines and the equivalent computational models such as recursive function theory and lambda calculus. Church’s thesis and incompleteness results. Computational complexity including NP-completeness.
CSCI 664  Advanced Operating Systems  (3 Credits)  
Advanced topics in the design and implementation of modern operating systems, especially those which support a distributed computer environment. Topics include: synchronization, mutual exclusion, language support, process and thread management, scheduling, remote procedure call, fault tolerance, network and parallel file systems, security, modeling and performance.
CSCI 666  Directed Studies  (1-12 Credits)  
No credits earned in this course may be applied to the number of credits required to satisfy graduate degree requirements. This course may be repeated.
CSCI 667  Concepts of Computer Security  (3 Credits)  
The course will cover topics including (but not limited to) network security, authentication, security protocol design and analysis, security modeling, key management, program safety, intrusion detection, DDoS detection and mitigation, architecture/operating systems security, security policy, web security, and other emerging topics.
CSCI 668  Reliability  (3 Credits)  
Introduction to probabilistic models and statistical method used in analysis of reliability problems. Topics include models for the lifetime of a system of components and statistical analysis of survival times data. Problems will be solved using appropriate software tools.
CSCI 674  GPU Architectures and Programming  (3 Credits)  
This course provides an indepth understanding of the microarchitectural and architectural details of a generalpurpose graphics processing unit (GPU). A range of toptier architecture conference and journal papers are discussed to understand the important research issues associated with the GPU architectures. Students will be tested via simulationbased assignments, oral/written presentation skills, and written examinations. In addition, students will also be required to complete a semesterlong research project.
Prerequisite(s): CSCI 652 and CSCI 653  
CSCI 677  Systems Security  (3 Credits)  
Focuses on recent advances in computer systems security, including both attacks and countermeasures. Attacks that exploit hardware vulnerabilities and hardware and software protections from these attacks are explored. Specific topics include memory corruption attacks, control flow attacks, return-oriented programming attacks and their variations, side—channel attacks, speculative execution attacks (Meltdown & Spectre), trusted computing systems and secure architectures, malware detection techniques, and operating system security.
CSCI 678  Analysis of Simulation Models  (3 Credits)  
This course introduces statistical techniques used in the analysis of simulation models. The first half of the course develops techniques for determining appropriate inputs to a simulation model, and the last half develops analysis techniques that are applied to the output of a simulation model.
CSCI 680  Topics in Computer Science  (1-3 Credits)  
A treatment of Master’s level topics of interest not routinely covered by existing courses. Material may be chosen from various areas of computer science. This course may be repeated for credit.
CSCI 685  Colloquium  (0-2 Credits)  
Each full-time graduate student is required to enroll in this course. No credits earned in this course may be applied to the number of credits required for a degree. This course includes training in the responsible and ethical conduct of research, as well as discussions of fabrication, falsification, and plagiarism. This course may be repeated.
CSCI 688  Topics in Computational Operations Research  (1-3 Credits)  
A treatment of Master’s level topics of interest not routinely covered by existing courses. Material may be chosen from various areas of computational operations research. May be repeated for different topics. This course may be repeated for credit.
CSCI 690  Readings in Computer Science  (1-3 Credits)  
A description of the intended contents of the readings course must be approved by the Chair before the student may register for the course. Students pursuing the M.S. degree with thesis option may not apply these credits towards their M.S. degree. Students pursuing the M.S. without thesis option may apply one section of CSCI 690 toward their M.S. degree. This course may be repeated for credit. Pre-requisites: Permission of instructor and chair.
CSCI 695  Directed Thesis Master’s Research  (1-12 Credits)  
Students design and conduct research in support of their master's thesis under the direction of a faculty member. This course may be repeated, but no more than 9 semester credit hours may be used to satisfy degree requirements for submitting a master's thesis. Note: Students who are not submitting a master's thesis may not use this course to satisfy degree requirements.
CSCI 698  Simulation and Modeling in Computational Operations Research  (3 Credits)  
Simulation model building in a high-level simulation language (SIMAN) with C++/C interface. Topics include network, discrete-event, and continuous modeling approaches. Interfaces between the three modeling approaches are presented. Familiarity with univariate and multivariate probability distributions is required for input modeling and simulation output analysis. Course culminates in a semester project in SIMAN.
CSCI 700  Thesis  (1-12 Credits)  
Students finish the research for and the writing of their master’s thesis under the direction of a faculty advisor. Students who are not submitting a master’s thesis may not use this course to satisfy degree requirements. This course may be repeated, but no more than 6 semester credit hours may be used to satisfy degree requirements for a thesis master’s only. Note: Grade of either G or U converts to P upon successful completion of a defense and submission and acceptance of the thesis.
CSCI 708  Research Project in Computational Operations Research  (2 Credits)  
Students will select a faculty advisor and committee in their area of specialization within computational operations research, prepare a research proposal abstract for approval by the department's director of graduate studies, undertake a research project, and write a paper describing their research. This course is normally taken after a student has completed 18 credit hours toward the M.S. degree with a concentration in computational operation research. Not open to students who receive credit for either CSCI 700 or CSCI 710. May not be repeated. Semester credit hours earned may be used to satisfy degree requirements for a non-thesis master's only. Pre-requisite: Permission of Graduate Director.
CSCI 710  Research Project  (2 Credits)  
Students will select a faculty advisor and committee in their area of research interest, prepare a research proposal abstract for approval by the department’s director of graduate studies, undertake a research project, and write a paper describing their research. This course is normally taken after a student has completed 18 credit hours toward the M.S. degree in computer science with or without a concentration, except for a concentration in computational operation research. Not open to students who receive credit for either CSCI 700 or CSCI 708. May not be repeated. Semester credit hours earned may be used to satisfy degree requirements for a non-thesis master's only (except for a concentration in computational operation research).
CSCI 712  Advanced Compiler Construction  (3 Credits)  
A project-oriented course involving compilers or compiler generators. Possible topics include syntactic error recovery, semantic analysis, code optimization and code generation.
CSCI 723  Advanced Analysis of Algorithms  (3 Credits)  
Advanced aspects of the design and analysis of computer algorithms. The study of probabilistic algorithms and parallel algorithms for solving problems from graph theory, geometry, and number theory. Lower bound theory. Intractability theory and its application to modern cryptography.
CSCI 726  Discrete Event Simulation  (3 Credits)  
Methods of discrete-event simulation. Markov chains. Simulation of open and closed networks of queues. Simulation of non-stationary Poisson processes. Transient and steady-state analysis. Event list algorithms and data structures. Theoretical and empirical tests of randomness. Selected applications.
Prerequisite(s): CSCI 616 and CSCI 626  
CSCI 734  Distributed Computing Systems  (3 Credits)  
Time and order in distributed systems. Synchronous and asynchronous systems. Models of faulty behavior in distributed systems. Paradigms of distributed computing: network mutual exclusion, deterministic agreement (Byzantine and fail-stop), elections, global state acquisition, atomic transactions. Issues in programming distributed systems. Reliable distributed systems. Distributed databases. Selected case studies.
CSCI 746  Discrete-State Stochastic Models  (3 Credits)  
Logic, performance, and reliability analysis of discrete-state systems. Exploration of the state space. Queuing networks, fault trees, reliability block diagrams, task graphs, Petri nets and domain-oriented languages. Underlying stochastic processes, solutions and approximations.
Prerequisite(s): CSCI 616 and CSCI 626  
CSCI 749  Numerical Algorithms  (3 Credits)  
In-depth study of modern numerical algorithms central to solving many scientific and engineering problems, and of the techniques used to develop and analyze those algorithms, with an emphasis on algorithmic issues.
Prerequisite(s): CSCI 649  
CSCI 754  Performance Evaluation of Computer Systems  (3 Credits)  
Analytical modeling techniques and their application in computer system performance modeling and prediction. Modeling of resource allocation policies in parallel systems, web server analysis, measurements and workload characterization of parallel computations and multimedia applications, hardware/software design, and bottleneck analysis.
Prerequisite(s): CSCI 526 and CSCI 626  
CSCI 766  Directed Studies  (1-12 Credits)  
No credits earned in this course may be applied to the number of credits required to satisfy graduate degree requirements. This course may be repeated.
CSCI 774  Parallel Computing  (3 Credits)  
This course introduces parallel computation as a means of achieving high performance in modern parallel architectures. A unified approach is followed, where the design of parallel algorithms, their implementation and performance evaluation is studied in relation to the underlying system.
Prerequisite(s): CSCI 652 and CSCI 653  
CSCI 775  Research  (3 Credits)  
This course is for students who are ready to contribute to a research project. The focus is not readings, but it should result in a product that will be evaluated. Before the start of the semester, the student together with a faculty advisor will submit a proposal to the graduate curriculum committee specifying the goals, the milestones, and the metrics on which this research will be evaluated. The expected workload should be commensurate with a regular 600 or 700 level course. At the end of the semester the student submits a report to the graduate curriculum committee outlining the results, and addressing the milestones and the metrics. The committee evaluates it and assigns a letter grade.
CSCI 780  Advanced Topics  (1-3 Credits)  
A treatment of doctoral-level topics of interest not routinely covered by existing courses. Material may be chosen from various areas of computer science. This course may be repeated for credit.
CSCI 785  Colloquium  (0-2 Credits)  
Each full-time graduate student is required to enroll in this course. No credits earned in this course may be applied to the number of credits required for a degree. This course includes training in the responsible and ethical conduct of research, as well as discussions of fabrication, falsification, and plagiarism. This course may be repeated.
CSCI 790  Readings in Computer Science  (1-3 Credits)  
A description of the intended contents of the readings course must be approved by the Graduate Director before the student may register for the course. Students pursuing the M.S. degree with thesis option may not apply these credits towards their M.S. degree. Students pursuing the M.S. without thesis option may apply one section of CSCI 790 toward their M.S. degree. This course may be repeated for credit. Pre-requisite: Instructor and Graduate Director approval.
CSCI 795  Directed Dissertation Research  (3-12 Credits)  
Students design and conduct research in support of their dissertation under the direction of a faculty advisor. This course may be repeated, but no more than 12 semester credit hours may be used to satisfy degree requirements for a student submitting a dissertation. Note: Students who are not submitting a dissertation may not use this course to satisfy degree requirements.
CSCI 800  Dissertation  (1-12 Credits)  
Students finish the research for and the writing of their dissertation under the direction of a faculty advisor. Students who are not submitting a dissertation may not use this course to satisfy degree requirements. This course may be repeated, but no more than 24 semester credit hours may be used to satisfy degree requirements for a doctorate only.