Courses
This page displays the schedule of Bryn Mawr courses in this department for this academic year. It also displays descriptions of courses offered by the department during the last four academic years.
For information about courses offered by other Bryn Mawr departments and programs or about courses offered by Haverford and Swarthmore Colleges, please consult the Course Guides page.
For information about the Academic Calendar, including the dates of first and second quarter courses, please visit the College's calendars page.
Spring 2026 CMSC
| Course | Title | Schedule/Units | Meeting Type Times/Days | Location | Instr(s) |
|---|---|---|---|---|---|
| CMSC B109-001 | Introduction to Computing | Semester / 1 | LEC: 1:10 PM-2:30 PM MW | Park 300 |
Xu,D., Xu,D. |
| Laboratory: 2:40 PM-4:00 PM M | Park 231 |
||||
| CMSC B151-001 | Introduction to Data Structures | Semester / 1 | Lecture: 1:10 PM-2:30 PM MW | Park 245 |
Dinella,E., Dinella,E. |
| Laboratory: 2:40 PM-4:00 PM W | Park 230 |
||||
| CMSC B223-001 | Systems Programming | Semester / 1 | Lecture: 10:10 AM-11:30 AM TTH | Park 159 |
Normoyle,A., Normoyle,A. |
| Laboratory: 2:40 PM-4:00 PM T | Park 230 |
||||
| CMSC B231-001 | Discrete Mathematics | Semester / 1 | Lecture: 6:30 PM-8:00 PM MW | Park 245 |
Garimella,R. |
| CMSC B283-001 | Topics in Computer Science: Competitive Coding Algorithms | Semester / 1 | LEC: 1:10 PM-2:30 PM TTH | Park 245 |
Wehar,M., Wehar,M. |
| Laboratory: 2:40 PM-4:00 PM TH | Park 230 |
||||
| CMSC B340-001 | Analysis of Algorithms | Semester / 1 | Lecture: 11:40 AM-1:00 PM MW | Park 159 |
Xu,D., Xu,D. |
| Laboratory: 2:40 PM-4:00 PM W | Park 231 |
||||
| CMSC B355-001 | Operating Systems | Semester / 1 | Lecture: 11:40 AM-1:00 PM TTH | Park 336 |
Normoyle,A., Normoyle,A. |
| Laboratory: 2:40 PM-4:00 PM TH | Park 231 |
||||
| CMSC B383-001 | Recent Advances in Computer Science: Web3 Security | Semester / 1 | LEC: 11:40 AM-1:00 PM MW | Park 337 |
Dinella,E., Dinella,E. |
| LEC: 2:40 PM-4:00 PM M | Park 230 |
||||
| CMSC B399-001 | Senior Conference | Semester / 1 | Lecture: 2:40 PM-4:00 PM F | Park 336 |
Dept. staff, TBA |
| CMSC B400-002 | Senior Thesis | 1 | Xu,D. | ||
| CMSC B403-001 | Supervised Work/Independent Study | 1 | Dept. staff, TBA |
Fall 2026 CMSC
| Course | Title | Schedule/Units | Meeting Type Times/Days | Location | Instr(s) |
|---|---|---|---|---|---|
| CMSC B113-001 | Computer Science I | Semester / 1 | Lecture: 1:10 PM-2:30 PM TTH | Wehar,M., Wehar,M. | |
| Laboratory: 2:40 PM-4:00 PM T | |||||
| CMSC B151-001 | Introduction to Data Structures | Semester / 1 | Lecture: 1:10 PM-2:30 PM TTH | Department staff,T., Dinella,E. | |
| Laboratory: 2:40 PM-4:00 PM TH | |||||
| CMSC B231-001 | Discrete Mathematics | Semester / 1 | Lecture: 6:30 PM-8:00 PM MW | Garimella,R. | |
| CMSC B260-001 | Foundations of Data Science | Semester / 1 | Lecture: 10:10 AM-11:30 AM TTH | Department staff,T., Poliak,A. | |
| Laboratory: 2:40 PM-4:00 PM T | |||||
| CMSC B340-001 | Analysis of Algorithms | Semester / 1 | Lecture: 11:40 AM-1:00 PM MW | Dinella,E., Xu,D. | |
| Laboratory: 1:10 PM-3:30 PM W | |||||
| CMSC B345-001 | Theory of Computation | Semester / 1 | Lecture: 10:10 AM-11:30 AM MW | Dept. staff, TBA |
Spring 2027 CMSC
(Class schedules for this semester will be posted at a later date.)
2025-26 Catalog Data: CMSC
CMSC B109 Introduction to Computing
Fall 2025, Spring 2026
The course is an introduction to computing: how we can describe and solve problems using a computer. Students will learn how to write algorithms, manipulate data, and design programs to make computers useful tools as well as mediums of creativity. Contemporary, diverse examples of computing in a modern context will be used, with particular focus on graphics and visual media. The Processing/Java programming language will be used in lectures, class examples and weekly programming projects, where students will learn and master fundamental computer programming principles. Students are required to register for the weekly lab. Prerequisites: Must pass either the Quantitative Readiness Assessment or the Quantitative Seminar (QUAN B001).
Quantitative Methods (QM)
Quantitative Readiness Required (QR)
Scientific Investigation (SI)
Counts Toward: Biochemistry & Molecular Bio; Biochemistry Molecular Biology; Biochemistry Molecular Biology; Data Science.
CMSC B113 Computer Science I
Fall 2025
This is an introduction to the discipline of computer science, suitable for those students with a mature quantitative ability. This fast-paced course covers the basics of computer programming, with an emphasis on program design, problem decomposition, and object-oriented programming in Java. Graduates of this course will be able to write small computer programs independently; examples include data processing for a data-based science course, small games, or estimating likelihood of probabilistic events, etc.. No computer programming experience is necessary or expected. Students are required to register for a weekly lab.
Course does not meet an Approach
Quantitative Methods (QM)
Quantitative Readiness Required (QR)
Scientific Investigation (SI)
Counts Toward: Data Science.
CMSC B151 Introduction to Data Structures
Fall 2025, Spring 2026
Introduction to the fundamental algorithms and data structures using Java. Topics include: Object-Oriented programming, program design, fundamental data structures and complexity analysis. In particular, searching, sorting, the design and implementation of linked lists, stacks, queues, trees and hash maps and all corresponding complexity analysis. In addition, students will also become familiar with Java's built-in data structures and how to use them, and acquire competency using a debugger. Students must also register for the weekly lab. Prerequisites: CMSC B109 or CMSC B113 or CMSC H105, or permission of instructor.
Quantitative Methods (QM)
Scientific Investigation (SI)
Counts Toward: Biochemistry & Molecular Bio; Biochemistry Molecular Biology; Biochemistry Molecular Biology; Data Science.
CMSC B223 Systems Programming
Fall 2025, Spring 2026
Systems programming provides a foundation for the implementation of programs and toolkits that serve as infrastructure for other software, such as compilers, operating systems, networking APIs, and graphics engines. Topics include pointers, bit representations of data, x86_64 assembly, memory management, processes, and threads. In this class, students will gain hands-on experience implementing low-level algorithms and data structures using C. Furthermore, students will build technical skills related to makefiles, interactive debugging, version control, and command-line shell interaction. C++ and STL will be introduced at the end of the course.. Students must register for the weekly lab. NOTE: CMSC B223 and CMSC H251 cover overlapping material and students may not take both. Prerequisites: CMSC B151 or CMSC H106 or CMSC H107, and CMSC B231 or CMSC H231 or MATH B231 or MATH H231..
Course does not meet an Approach
CMSC B231 Discrete Mathematics
Fall 2025, Spring 2026
An introduction to discrete mathematics with strong applications to computer science. Topics include propositional logic, proof techniques, recursion, set theory, counting, probability theory and graph theory. Prerequisites: CMSC B113 or B109 or H105 or H107
Quantitative Methods (QM)
Counts Toward: Mathematics.
CMSC B240 Principles of Computer Organization
Fall 2025
A lecture/laboratory course studying the hierarchical design of modern digital computers. Combinatorial and sequential logic elements; construction of microprocessors; instruction sets; assembly language programming. Lectures cover the theoretical aspects of machine architecture. In the weekly laboratory, designs discussed in lecture are constructed in software. Prerequisite: CMSC B151, or CMSC H106, or CMSC H107, and CMSC B231 or CMSC H231 or MATH B231 or MATH H231.
Course does not meet an Approach
CMSC B260 Foundations of Data Science
Not offered 2025-26
This course will introduce core principles of learning from data. More and more decisions are being made by algorithms that operate on large datasets, and this course will give students the tools to understand and contribute to this process. Throughout we will emphasize the ethical use of data and analyze case studies of how data science has intersected with society. This course will have a significant theory component, covering introductory linear algebra, probability, statistics, modeling, information theory, and optimization. However, we will also implement these ideas (in Python) and apply them to concrete datasets from a variety of fields (including images, video, text, DNA, music, art, etc). The language for this course is Python 3.
Quantitative Readiness Required (QR)
CMSC B283 Topics in Computer Science
Section 001 (Spring 2026): Competitive Coding Algorithms
Spring 2026
This is an intermediate-level topics course. Course content varies. Prerequisites: CMSC B151 or CMSC H106/107, and CMSC B231 or CMSC H231 or MATH B231 or MATH H231, or permission of instructor
Course does not meet an Approach
CMSC B340 Analysis of Algorithms
Fall 2025, Spring 2026
This course will cover qualitative and quantitative analysis of algorithms and their corresponding data structures from a precise mathematical point of view. Topics include: performance bounds, asymptotic and probabilistic analysis, worst case and average case behavior and correctness and complexity. Particular classes of algorithms will be studied in detail. This course fulfills the writing requirement in the major. Prerequisites: CMSC B151, or CMSC H106 or CMSC H107, and CMSC B231, or CMSC H231 or MATH B231 or MATH H231 or permission of instructor.
Writing Intensive
Quantitative Readiness Required (QR)
Counts Toward: Mathematics.
CMSC B345 Theory of Computation
Not offered 2025-26
This course focuses on the mathematical foundations of computer science. We start by reviewing the history of computing. Next, we formalize simple models of computing such as DFA's, NFA's, and Regular Expressions. Then, we study more advanced models of computing such as Pushdown Automata and CFL's with applications to linguistics. Finally, we formally introduce Turing machines. With Turing machines we are able to define decidability, prove the undecidability of the halting problem, carefully resolve fundamental questions about the limitations of computing, and introduce computational complexity theory and the P vs NP problem. Prerequisite: CMSC B151 or CMSC H106 or CMSC H107, and CMSC B231 or CMSC H231 or MATH B231 or MATH H231.
Course does not meet an Approach
Counts Toward: Data Science.
CMSC B355 Operating Systems
Spring 2026
A practical introduction to modern operating systems, using case studies from UNIX, MSDOS and the Macintosh. Topics include computer and OS structures, process and thread management, process synchronization and communication, resource allocations, memory management, file systems, and select examples in protection and security. This This is a challenging, implementation-oriented course with a strong lab component. Prerequisite: CMSCB223 or CMSC H251
CMSC B373 Artificial Intelligence
Fall 2025
Survey of Artificial Intelligence (AI), the study of how to program computers to behave in ways normally attributed to "intelligence" when observed in humans. Topics include heuristic versus algorithmic programming; cognitive simulation versus machine intelligence; problem-solving; inference; natural language understanding; scene analysis; learning; decision-making. Topics are illustrated by programs from literature, programming projects in appropriate languages and building small robots. Prerequisites: CMSC B151 or CMSC H106 or CMSC H107, and CMSC B231, or CMSC H231 or MATH B231 or MATH H231.
Counts Toward: Neuroscience; Philosophy.
CMSC B383 Recent Advances in Computer Science
Section 001 (Spring 2026): Web3 Security
Spring 2026
This is a topics course. Course content varies.
CMSC B399 Senior Conference
Seminar in computer science with regular oral presentations, weekly written reflections, and a final written report. Class discussions of foundational Computer Science research, oral and written presentations of research results will be emphasized. Required for all computer science majors in their senior year.
CMSC B400 Senior Thesis
Seminar for seniors writing theses, supervised by a member of the Computer Science department. A senior thesis has an expectation of producing new knowledge or advancement in a specific research area, and working with oral and written exposition of advanced material, culminating in a written report. This course is optional and does not fulfill any major/minor requirement.
CMSC B403 Supervised Work/Independent Study
Students wishing to engage in in-depth study of content not typically covered in a computer science course can engage in this under the guidance of a faculty member. Students should closely consult with a faculty advisor prior to registering for this class. This class does not fulfill any major/minor requirement.