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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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 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.
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.
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.
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.
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.
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.