Computer Science (CSCI)

CSCI 100  Critical Questions in Computer Science  (4 Credits)  
An exploration of significant questions and concepts, beliefs and creative visions, theories and discoveries in Computer Science for first-year students. Although topics vary, the courses also seek to improve students' communication skills beyond the written word.
College Curriculum: C100  
CSCI 120  Elementary Topics CSCI  (1-3 Credits)  
A treatment of elementary topics not covered in existing courses. Course material, chosen from various areas of computer science, will be described and prerequisites/corequisites will appear in detailed course schedule.
CSCI 121L  Elementary Topics Lab  (0 Credits)  
Corequisite(s): CSCI 121  
CSCI 131  Concepts in Computer Science  (3 Credits)  
An overview of computer science, presenting an introduction to key issues and concepts: elementary computer organization and arithmetic, algorithms, program translation, operating systems, elementary data structures, file systems and database structures. Required laboratory sessions introduce students to application software for data management, text processing and network use. Not open to students who have received credit for any 300-400 level computer science course. Two lecture hours, two laboratory hours. Some majors require their students to satisfy the Major Computing Requirement by taking a computer science course designated for that purpose. CSCI 131 is designated for that purpose.
Corequisite(s): CSCI 131L  
CSCI 131L  Concepts in CSCI Lab  (0 Credits)  
Corequisite(s): CSCI 131  
CSCI 135  Web Design  (3 Credits)  
Web site design, including development cycle and best practices. Process of design. Markup languages: HTML, CSS templates. Testing and validation. Visual design. Tools: ftp/stfp, text editors, debuggers, validators, graphics tools.  Not open to students who have credit for CSCI 300-400-level course.
CSCI 141  Modern Programming Fundamentals  (4 Credits)  
CSCI 141 introduces students to the foundational principles of computer programming through problems drawn from computing, the natural and social sciences, and data-driven fields. Students learn how to design algorithmic solutions, translate them into Python programs, and evaluate the correctness and clarity of their code. The course emphasizes core programming concepts such as values, variables, data types, expressions, conditionals, loops, functions, and the use of standard libraries culminating in an introduction to the basics of object-oriented programming. Throughout the course students are introduced to the responsible use of modern computational tools including integrated development environments (IDEs) and evolving artificial intelligence (AI) platforms.
Corequisite(s): CSCI 141L  
Domain: NQR  
CSCI 141L  Modern Prog. Fundamentals Lab  (0 Credits)  
Corequisite(s): CSCI 141  
CSCI 146  Reasoning Under Uncertainty  (3 Credits)  
This course will focus research design in the context of data, providing an overview of different modeling approaches, their differences, and the context(s) in which each might be most appropriate to apply. Special attention will be given to cases in which complete information is not available. Each modeling framework's disciplinary history will be considered, and the overlaps and distinctions between them discussed. Students will be expected to acquire a strong capability to identify the most appropriate modeling strategies given a problem and problem context, as well as learn the limitations or advantages of a given approach.
Prerequisite(s): CSCI 140 (may be taken concurrently) or CSCI 141 (may be taken concurrently) or DATA 141 (may be taken concurrently)   
College Curriculum: MAPR  
CSCI 150  First-Year Seminar  (4 Credits)  
An exploration of a specific topic in Computer Science. A grade of C- or better fulfills the COLL 150 requirement. Although topics vary, the courses emphasize academic writing skills, reading and analysis of texts, and discussion.
College Curriculum: C150  
CSCI 220  Intermediate Topics  (1-3 Credits)  
A treatment of intermediate topics not covered in existing courses. Course material, chosen from various areas of computer science, will be described and prerequisites/corequisites will appear in detailed course schedule.
CSCI 224  Linux for Ethical Hackers  (3 Credits)  
This course introduces the basics of Linux in the context of cybersecurity and penetration testing. Topics include ethical hacking, virtualization, getting started with Linux, text manipulation, adding and removing software and services, filesystems, logging, process and network management, and scripting.
Prerequisite(s): CSCI 141   
CSCI 232  Competitive Programming  (1 Credit)  
A weekly seminar focusing on techniques and strategies for competitive programming. Students compete in teams to solve computer programming challenges as quickly and correctly as possible. Winning teams present solutions for discussion in code review sessions. Exercises vary in difficulty and a variety of programming languages are available, making this course useful to students of all levels. Cannot be applied to the requirements for a major or a minor in computer science. This course may be repeated.
Prerequisite(s): (CSCI 140 (may be taken concurrently) or CSCI 141 (may be taken concurrently) or DATA 140 (may be taken concurrently))  
CSCI 241  Data Structures  (3 Credits)  
A $250 per credit fee will apply for students for whom initial enrollment at W&M begins in Fall 2025 or later. Data structures define how data are stored and accessed for computation. This course covers a broad introduction to their use in efficient software development. Topics include functional and performance implications of structured data abstraction, storage, and access, as well as fundamental data structures including arrays, linked lists, stacks, queues, deques, balanced search trees, heaps, and hash tables, together with the algorithms that govern their operation and applications that emerge from them. Students also examine the role data structures play in common applications including media streaming, text encoding and compression, sorting, searching, and indexing. Students will apply concepts through hands-on, object-oriented software development with classes, interfaces, GUI events, garbage collection, unit testing, recursion, and elementary design patterns. Students will study and apply responsible, effective use of AI agents for code generation, test case creation, specifications compliance, and visualization.
Prerequisite(s): CSCI 141 or DATA 141 or CSCI 140 or DATA 140  
CSCI 243  Logic and Discrete Structures  (3 Credits)  
A $250 per credit fee will apply for students for whom initial enrollment at W&M begins in Fall 2025 or later. Theoretical foundations of computer science. Topics typically include propositional logic, predicate logic, sets, functions, Boolean algebra,  proof techniques, counting, discrete probability, relations, trees, and graphs.
Prerequisite(s): (CSCI 141 (may be taken concurrently) or CSCI 142 (may be taken concurrently) or CSCI 140 (may be taken concurrently) or DATA 140 (may be taken concurrently) or DATA 141 (may be taken concurrently))  
CSCI 301  Software Development  (3 Credits)  
A $250 per credit fee will apply for students for whom initial enrollment at W&M begins in Fall 2025 or later. An introduction to principled software development, emphasizing design at the module level as well as tools and techniques. Topics include object-oriented class design and implementation, abstraction techniques, debugging techniques, defensive programming, development and analysis tools, and testing. Emphasizes the role of the individual programmer in large software development projects.
Prerequisite(s): CSCI 241  
CSCI 303  Algorithms  (3 Credits)  
A $250 per credit fee will apply for students for whom initial enrollment at W&M begins in Fall 2025 or later. A systematic study of algorithms and their complexity, including searching, sorting, selecting, and algorithms for graphs. A survey of algorithm design methods, including greedy algorithms, divide-and-conquer, dynamic programming, and backtracking. An introduction to NP-complete problems.
Prerequisite(s): CSCI 241 and (CSCI 243 or MATH 214)  
CSCI 304  Computer Organization  (3 Credits)  
A $250 per credit fee will apply for students for whom initial enrollment at W&M begins in Fall 2025 or later. Organization of computer hardware and software; virtual machines, computer systems organization, machine language, assembler language and microprogramming.
Prerequisite(s): CSCI 241 (may be taken concurrently)  
CSCI 312  Principles of Programming Languages  (3 Credits)  
A $250 per credit fee will apply for students for whom initial enrollment at W&M begins in Fall 2025 or later. A study of programming language principles and paradigms. Formal syntax, including grammars, and semantics. Paradigms, including: imperative, object oriented, functional, logic, event-driven, and concurrent. Run-time implementation issues, including: memory management, parameter passing, and event handling.
Prerequisite(s): CSCI 241 and (CSCI 243 or MATH 214)  
CSCI 315  Systems Programming  (3 Credits)  
Prerequisite(s): CSCI 304  
CSCI 320  Directed Study  (1-3 Credits)  
A directed study course to investigate aspects of computer science. Course can be based on readings from the literature, on a project, or on a research topic. Cannot be applied to the requirements for a major or a minor in computer science. Permission of instructor required. P/F option decided by instructor.
Prerequisite(s): CSCI 301 or CSCI 303 or CSCI 304 or CSCI 312  
CSCI 321  Database Systems  (3 Credits)  
Design, organization and implementation of database management systems: file organization and processing, hierarchical, network, and relational models of database structure, data definition and data manipulation languages, security and integrity of databases, and the study of existing database implementations.
Prerequisite(s): CSCI 241 and (CSCI 243 or MATH 214)  
CSCI 324  Cybersecurity Fundamentals  (3 Credits)  
This course introduces the fundamentals of cybersecurity and global cybersecurity challenges related to computer networks and international critical infrastructure. The course explores cybersecurity principles, business continuity and incident response, access control, network security, and cybersecurity operations. Key aspects of this course are the exploration of historical and cultural aspects of international cybersecurity considerations and government organizations, as they relate to the cybersecurity of essential services. Academic diversity and team building are essential to this course.
College Curriculum: C30C  
CSCI 356  Large Language Models  (3 Credits)  
A $250 per credit fee will apply for students for whom initial enrollment at W&M begins in Fall 2025 or later. This course dives into the electrifying realm of large language models (LLMs), the engines driving today’s natural language processing revolution. Students will master the theory, architecture, and real-world applications of LLMs, preparing to harness–or perhaps politely welcome–our future AI overlords. Blending lectures, hands-on coding, and critical analysis, this course equips you with the skills to build, apply, and interrogate these linguistic titans.
Prerequisite(s): CSCI 141   
Additional fees apply  
CSCI 412  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.
Prerequisite(s): (CSCI 301 or CSCI 312) and CSCI 321  
CSCI 415  Systems Programming  (3 Credits)  
A $250 per credit fee will apply for students for whom initial enrollment at W&M begins in Fall 2025 or later. 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.
Prerequisite(s): CSCI 303 and CSCI 304  
CSCI 416  Fundamentals of Artificial Intelligence/Machine Learning  (3 Credits)  
A $250 per credit fee will apply for students for whom initial enrollment at W&M begins in Fall 2025 or later. This course will give an overview of important concepts, techniques, and algorithms in artificial intelligence with emphasis on machine learning, beginning with topics such as linear regression and ending up with more recent topics such as boosting, support vector machines, and expectation maximization. The course will give the student the basic ideas and intuition behind modern methods as well as a bit more formal understanding of how, why, and when they work.
Prerequisite(s): CSCI 303 and (MATH 112 or MATH 132) and (MATH 211 or MATH 109)  
College Curriculum: C400  
CSCI 417  Computer Animation  (3 Credits)  
A $250 per credit fee will apply for students for whom initial enrollment at W&M begins in Fall 2025 or later. 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.
Prerequisite(s): CSCI 141   
Additional fees apply  
CSCI 420  Special Topics in Computer Science  (1-3 Credits)  
A $250 per credit fee will apply for students for whom initial enrollment at W&M begins in Fall 2025 or later. A treatment of topics of interest not routinely covered by existing courses. Material may be chosen from various areas of computer science. A complete course description and a list of prerequisites will appear in appropriate registration bulletins.
CSCI 421  Database Systems  (3 Credits)  
Design, organization and implementation of database management systems: file organization and processing, hierarchical, network, and relational models of database structure, data definition and data manipulation languages, security and integrity of databases, and the study of existing database implementations.
Prerequisite(s): CSCI 303  
CSCI 423  Finite Automata and Theory of Computation  (3 Credits)  
A $250 per credit fee will apply for students for whom initial enrollment at W&M begins in Fall 2025 or later. Theory of sequential machines, finite automata, Turing machines, recursive functions, computability of functions.
Prerequisite(s): CSCI 303  
CSCI 423W  Finite Automata Writing  (0 Credits)  
CSCI 424  Computer Architecture  (3 Credits)  
An introduction to the principles of computer design. Students will apply their knowledge of digital logic design to understand the high-level interactions between different computer system hardware components. The course will cover various computer architecture aspects related to memory hierarchy and design, CPU design, pipelining, and multiprocessor architecture.
Prerequisite(s): CSCI 304 and (CSCI 301 or CSCI 303)  
CSCI 425  Entrepreneurship in Computer Science  (3 Credits)  
Develop an innovative solution addressing a demonstrated real need by drawing on the knowledge gained from studies in CS 100-400 level classes and the College Curriculum. General approaches in entrepreneurship towards launching a tech startup company including design thinking, customer development, and agile management are combined with agile software development to develop a minimum viable software product.
Prerequisite(s): CSCI 301 and CSCI 303 and CSCI 304 and CSCI 312  
College Curriculum: C400  
CSCI 426  Simulation  (3 Credits)  
Introduction to simulation. Discrete and continuous stochastic models, random number generation, elementary statistics, simulation of queueing and inventory systems, discrete event simulation, point and interval parameter estimation.
Prerequisite(s): CSCI 303 and MATH 112 and CSCI 301  
CSCI 427  Fundamentals of Computer Graphics  (3 Credits)  
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.
Prerequisite(s): CSCI 301 and CSCI 303 and (MATH 211 or MATH 109)  
College Curriculum: C200  
Domain: NQR  
CSCI 430  Computer Languages  (1-3 Credits)  
Topics include syntax, semantics and pragmatics of one computer language as well as the influence of the languages intended areas of applications on its design. The language studied will vary and students may repeat the course for different languages. This course does not count toward satisfying the major requirements or the major GPA.
Prerequisite(s): CSCI 241  
CSCI 432  Web Programming  (3 Credits)  
A $250 per credit fee will apply for students for whom initial enrollment at W&M begins in Fall 2025 or later. 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.
CSCI 434  Network Systems and Design  (3 Credits)  
This course covers modern computer networking systems and design. We’ll take a top-down approach, starting with the application layer and moving down to the transport, network, and data link layers. We’ll also cover wireless networks. In addition to studying the theories behind computer networking systems and design, we’ll practice these theories through network programming. Students will also conduct a research project on computer network traffic analysis using AI, which satisfies the COLL 400 capstone experience.
Prerequisite(s): CSCI 415 or (CSCI 301 and CSCI 303 and CSCI 304)  
College Curriculum: C400  
CSCI 435  Software Engineering  (3 Credits)  
A $250 per credit fee will apply for students for whom initial enrollment at W&M begins in Fall 2025 or later. The software life cycle. Software design methodologies. Testing and maintenance. Programming teams.
Prerequisite(s): CSCI 301 and CSCI 312  
College Curriculum: C400  
CSCI 436  Data Mining  (3 Credits)  
Introduction to fundamental concepts and techniques in data mining, specifically, basic data mining concepts, graph mining, traditional clustering and classification methods, as well as recent deep learning techniques.
Prerequisite(s): CSCI 303 and (MATH 211 or MATH 109) and (MATH 212 or MATH 213)  
CSCI 437  Introduction to Game Design and Game Development  (3 Credits)  
A comprehensive introduction to the design and development of computer games. Emphasis is placed on the formal process of game design, covering aspects such as the creation of the game proposal and design documents, designing game mechanics, balancing game play, and interest curves. This course also covers a broad range of technical topics in game development, ranging from programming techniques geared towards games, the basics of computer graphics algorithms for games, decision making and tactical AI, path finding, collision detection, visibility, and game physics.
Prerequisite(s): CSCI 301 and CSCI 303  
College Curriculum: C400  
CSCI 437X  Team Management for Game Design and Game Development  (1 Credit)  
This course is to be taken in together with CSCI-437 Introduction to Game Design and Game Development. The goal of this course is learn, via practice, how to lead a small team of dedicated developers through the process of designing and developing a computer game as part of the co-requisite course CSCI-437. While enrollment in CSCI-437 covers the technical details of game design and game development, the focus of this course is on the actual team management.
Corequisite(s): CSCI 437  
CSCI 440  Computing Profession/Society  (3 Credits)  
CSCI 440W  Computing Profession/Society  (0 Credits)  
Corequisite(s): CSCI 440  
CSCI 442  Compiler Construction  (3 Credits)  
The emphasis in this course is on the construction of translators for programming languages. Topics include lexical analysis, block structure, grammars, parsing, program representation and run-time organization.
Prerequisite(s): CSCI 304 and CSCI 312 and CSCI 301  
CSCI 444  Principles of Operating Systems  (3 Credits)  
A $250 per credit fee will apply for students for whom initial enrollment at W&M begins in Fall 2025 or later. The conceptual view of an operating system as a collection of concurrent processes; semaphores, monitors and rendezvous. Real and virtual memory organization and management, processor allocation and management, and external device management.
Prerequisite(s): CSCI 301 and CSCI 303 and CSCI 304  
CSCI 445  Mobile Application Security  (3 Credits)  
This course is a senior-level introduction to mobile application security and security research. Students successfully completing this class will be able to understand and apply the various security best practices in designing mobile applications, and will also develop a background in the research and practices in performing security analysis of mobile applications. The course will introduce the fundamental concepts in security and privacy (e.g., confidentiality, threat models, crypto basics, SSL/TLS, access control) and demonstrate how these concepts apply to secure mobile application development. Students will also learn the various techniques used in analyzing mobile applications for security vulnerabilities or malware, including static and dynamic program analysis. The Android platform and Android's application model will generally be the prime examples used throughout the class, although iOS application analysis techniques may also be added as the course progresses. Students will have homework (programming and/or questions-based assignments), a semester-long application development/analysis project, and a final exam.
Prerequisite(s): CSCI 301  
College Curriculum: C400  
CSCI 446  Neural Networks for Machine Learning  (3 Credits)  
A $250 per credit fee will apply for students for whom initial enrollment at W&M begins in Fall 2025 or later. Machine learning enables computers to learn from experience. The first part of the course will cover foundational topics in pattern recognition and machine learning such as probability distributions, linear models for regression, and linear models for classification. The second part of the course will examine nonlinear models for regression and classification, focusing on artificial neural networks. Neural networks are being used to achieve state-of-the-art performance at applications in different modalities and domains. Students will be required to analyze and present relevant research papers.
Prerequisite(s): (MATH 106 or MATH 351 or MATH 451) and (MATH 211 or MATH 109) and (MATH 212 or MATH 213)  
CSCI 447  Human-Computer Interaction  (3 Credits)  
This course introduces the basics of human-computer interaction design and evaluation methods and techniques, such as examining user tasks, developing scenarios and storyboards, creating prototypes, iterating on prototypes to create a final design project, and evaluating the prototype. Other topics may include computer-supported cooperative work, multimodal and cutting-edge development in human-AI interaction and prompt engineering, etc.
CSCI 449  Scientific Computing  (3 Credits)  
Prerequisite(s): CSCI 303 and (MATH 211 or MATH 109)  
CSCI 454  Computer and Network Security  (3 Credits)  
An introduction to the principles and practices of cryptography, network security, and secure software. Cryptography topics includes: 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.
Prerequisite(s): CSCI 303 and CSCI 304  
CSCI 455  Generative Artificial Intelligence for Software Development  (3 Credits)  
GenAI for Software Development provides students with a strong foundation in the principles and technical expertise needed to develop and apply Deep Learning (DL)-based systems, with a particular emphasis on Generative AI methods. The course focuses on leveraging advanced techniques to enhance software development processes, addressing practices such as source code generation, automated documentation, and other key aspects of modern software engineering. By the end of the course, students will possess a comprehensive understanding of Generative AI methods for software development. This includes the ability to design and implement new DL-based approaches to address challenges in the software engineering domain, critically analyze the latest advancements in the field, and propose innovative solutions to refine Generative AI techniques. These skills will equip students with the essential knowledge to thrive and excel in a highly competitive professional environment where every decision and contribution matters.
Prerequisite(s): CSCI 301 and CSCI 416  
CSCI 464  Penetration Testing  (3 Credits)  
A $250 per credit fee will apply for students for whom initial enrollment at W&M begins in Fall 2025 or later. This course introduces computer network vulnerability assessments and penetration testing.  The course explores how malicious actors and hackers attack computers and networks and how to protect against these threats. This is a hands-on learning course where students will be exposed to and perform various types of vulnerability assessments and explore penetration testing techniques in order to understand how to defend against cyber-attacks. Legal implications and ethical issues will also be addressed.
Prerequisite(s): CSCI 224 or CSCI 304  
Additional fees apply  
CSCI 465  Edge Computing  (3 Credits)  
This course provides an in-depth exploration of edge computing, a transformative paradigm that brings computation closer to the data source, enabling faster processing, reduced latency, and better privacy preservation. Students will delve into its real-world applications, enabling technologies, available tools, public datasets, and emerging challenges across various industries. Through hands-on experience, students will work with edge devices such as smartphones, IoT sensors, autonomous vehicles, robotics, and industrial controllers, which power cutting-edge innovations in smart cities, smart homes, smart manufacturing, augmented and virtual reality (AR/VR), and intelligent transportation systems. A key component of the course is a semester-long, student-driven project, allowing students to design, deploy, and evaluate their own edge computing solutions with instructor guidance. By the end of the course, students will not only gain practical skills in implementing edge computing systems but also develop a critical understanding of their capabilities, limitations, and real-world impact.
Prerequisite(s): CSCI 303 or CSCI 312  
CSCI 466  Applied Topology Data Science  (3 Credits)  
A $250 per credit fee will apply for students for whom initial enrollment at W&M begins in Fall 2025 or later. This course introduces applied topology—new algorithms for probing the shape and structure of complex data arising in computing, data science, and physics. We begin with foundational concepts of topology such as topological spaces, continuous maps, and connectedness. Then we examine tools of topological data analysis, including simplicial complexes, persistent homology, persistence diagrams, and stability. The course emphasizes the idea that data are not only points to be fit or classified but also objects with multiscale structure that can reveal loops, voids, and connectivity patterns. These patterns elude traditional machine learning approaches, particularly in noisy, high-dimensional settings. Students will work with real datasets, compute topological invariants, and use these features in artificial intelligence and machine learning models, while also learning where topological methods succeed and where they break down.
Prerequisite(s): (MATH 106 or MATH 351 or MATH 451) and (MATH 109 or MATH 211 )  
Additional fees apply  
CSCI 490  Research in Computer Science  (1-3 Credits)  
Independent research under the supervision of a faculty member. A written report is required. Permission of the Undergraduate Director required.
CSCI 495  Honors  (3 Credits)  
Students admitted to Honors study in computer science will be enrolled in this course during both semesters of their senior year. The course comprises: (a) supervised research in the student’s area of interest; (b) presentation by April 15 of an Honors thesis; and (c) satisfactory performance in a comprehensive oral examination in the field of the student’s major interest.
CSCI 495W  Honors  (0 Credits)  
Corequisite(s): CSCI 495  
CSCI 496  Honors  (3 Credits)  
Students admitted to Honors study in computer science will be enrolled in this course during both semesters of their senior year. The course comprises: (a) supervised research in the student’s area of interest; (b) presentation by April 15 of an Honors thesis; and (c) satisfactory performance in a comprehensive oral examination in the field of the student’s major interest.
College Curriculum: C400  
CSCI 496W  Honors  (0 Credits)  
Corequisite(s): CSCI 496  
CSCI 498  Internship  (1-3 Credits)  
Students wishing to receive academic credit for an internship program must request and obtain departmental approval prior to participation in the program. Graded Pass/Fail only.