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 2022 CMSC

Course Title Schedule/Units Meeting Type Times/Days Location / Instruction Mode Instr(s)
CMSC B113-001 Computer Science I 1Semester / 1 Lecture: 12:55 PM- 2:15 PM TTH Park 338
In Person
Kumar,D.
CMSC B113-00A Computer Science I 1Semester / 1 Laboratory: 2:25 PM- 3:15 PM T Park 230
In Person
Kumar,D.
CMSC B113-00B Computer Science I 1Semester / 1 Laboratory: 11:55 AM-12:45 PM TH Park 230
In Person
Kumar,D.
CMSC B113-00Z Computer Science I 1Semester / 1 In Person Kumar,D.
CMSC B151-001 Introduction to Data Structures 1Semester / 1 Lecture: 12:55 PM- 2:15 PM TTH Park 300
In Person
Towell,G., Towell,G.
Laboratory: 2:25 PM- 3:45 PM TH Park 230
In Person
CMSC B223-001 Systems Programming 1Semester / 1 Lecture: 12:55 PM- 2:15 PM TTH Park 245
In Person
Normoyle,A., Normoyle,A.
Laboratory: 2:25 PM- 3:45 PM TH Park 231
In Person
CMSC B240-001 Principles of Computer Organization 1Semester / 1 Lecture: 11:25 AM-12:45 PM TTH Park 336
In Person
Murphy,C., Murphy,C.
Laboratory: 2:25 PM- 3:45 PM T Park 231
In Person
CMSC B337-001 Algorithms: Design and Practice 1Semester / 1 Lecture: 10:10 AM-11:30 AM MW Park 336
In Person
Kumar,D., Kumar,D.
Laboratory: 10:10 AM-11:30 AM F Park 230
In Person
CMSC B353-001 Software Engineering 1Semester / 1 Lecture: 1:10 PM- 2:30 PM MW Park 245
In Person
Murphy,C., Murphy,C.
Laboratory: 2:40 PM- 4:00 PM M Park 230
In Person
CMSC B383-001 Recent Advances in Computer Science: Database Systems in Practice 1Semester / 1 LEC: 11:40 AM- 1:00 PM MW Park 245
In Person
Towell,G., Towell,G.
Laboratory: 2:40 PM- 4:00 PM W Park 231
In Person
CMSC B399-001 Senior Conference 1Semester / 1 Lecure: 2:10 PM- 4:00 PM F Park 337
In Person
Dept. staff, TBA
CMSC B403-001 Supervised Work/Independent Study 1Semester / 1 Dept. staff, TBA
CMSC B403-001 Supervised Work/Independent Study 1Semester / 1 Dept. staff, TBA

Fall 2022 CMSC

Course Title Schedule/Units Meeting Type Times/Days Location / Instruction Mode Instr(s)
CMSC B109-001 Introduction to Computing 1Semester / 1 Lecture: 1:10 PM- 2:30 PM MW Park 300
In Person
Kumar,D.
CMSC B109-00A Introduction to Computing 1Semester / 1 Laboratory: 2:40 PM- 4:00 PM M Park 231
In Person
Kumar,D.
CMSC B113-001 Computer Science I 1Semester / 1 Lecture: 1:10 PM- 2:30 PM MW Park 338
In Person
Kumar,D., Normoyle,A.
CMSC B113-002 Computer Science I 1Semester / 1 Lecture: 12:55 PM- 2:15 PM TTH Park 338
In Person
Kumar,D., Poliak,A.
CMSC B113-00A Computer Science I 1Semester / 1 Laboratory: 2:25 PM- 3:15 PM T Park 230
In Person
Poliak,A.
CMSC B113-00B Computer Science I 1Semester / 1 Laboratory: 11:55 AM-12:45 PM TH Park 230
In Person
Poliak,A.
CMSC B113-00C Computer Science I 1Semester / 1 Laboratory: 2:40 PM- 4:00 PM W Park 231
In Person
Normoyle,A.
CMSC B151-001 Introduction to Data Structures 1Semester / 1 Lecture: 9:55 AM-11:15 AM TTH Park 336
In Person
Towell,G.
CMSC B151-00A Introduction to Data Structures 1Semester / 1 Laboratory: 11:25 AM-12:45 PM TH Park 230
In Person
Towell,G.
CMSC B223-001 Systems Programming 1Semester / 1 Lecture: 12:55 PM- 2:15 PM TTH In Person Normoyle,A., Normoyle,A.
Laboratory: 2:25 PM- 3:45 PM T Park 231
In Person
CMSC B231-001 Discrete Mathematics 1Semester / 1 Lecture: 12:55 PM- 2:15 PM TTH Park 338
In Person
Xu,D.
CMSC B245-001 Principles of Programming Languages 1Semester / 1 Lecture: 1:10 PM- 2:30 PM MW Park 336
In Person
Towell,G.
CMSC B245-00A Principles of Programming Languages 1Semester / 1 Laboratory: 11:40 AM- 1:00 PM W Park 231
In Person
Towell,G.
CMSC B283-001 Topics in Computer Science 1Semester / 1 Lecture: 12:55 PM- 2:15 PM TTH Park 245
In Person
Murphy,C.
CMSC B283-00A Topics in Computer Science 1Semester / 1 Laboratory: 2:25 PM- 3:45 PM TH Park 230
In Person
Murphy,C.
CMSC B325-001 Computational Linguistics 1Semester / 1 Lecture: 10:10 AM-11:30 AM MW Park 245
In Person
Kumar,D., Kumar,D.
Laboratory: 11:40 AM- 1:00 PM M Park 231
In Person
CMSC B340-001 Analysis of Algorithms 1Semester / 1 Lecture: 11:25 AM-12:45 PM TTH Park 336
In Person
Xu,D., Xu,D.
Laboratory: 1:10 PM- 2:30 PM W Park 231
In Person
CMSC B403-001 Supervised Work/Independent Study 1Semester / 1 Dept. staff, TBA
CMSC B403-001 Supervised Work/Independent Study 1Semester / 1 Dept. staff, TBA

Spring 2023 CMSC

Course Title Schedule/Units Meeting Type Times/Days Location / Instruction Mode Instr(s)
CMSC B113-001 Computer Science I 1Semester / 1 Lecture: 12:55 PM- 2:15 PM TTH Park 338
In Person
Poliak,A.
CMSC B113-00A Computer Science I 1Semester / 1 Laboratory: 2:25 PM- 3:15 PM T Park 230
In Person
Poliak,A.
CMSC B113-00B Computer Science I 1Semester / 1 Laboratory: 11:55 AM-12:45 PM TH Park 230
In Person
Poliak,A.
CMSC B113-00Z Computer Science I 1Semester / 1 In Person Poliak,A.
CMSC B151-001 Introduction to Data Structures 1Semester / 1 Lecture: 12:55 PM- 2:15 PM TTH Park 245
In Person
Towell,G., Xu,D.
Laboratory: 2:25 PM- 3:45 PM TH In Person
CMSC B223-001 Systems Programming 1Semester / 1 Lecture: 1:10 PM- 2:30 PM MW Park 338
In Person
Normoyle,A., Normoyle,A.
Laboratory: 2:40 PM- 4:00 PM M Park 231
In Person
CMSC B240-001 Principles of Computer Organization 1Semester / 1 Lecture: 11:25 AM-12:45 PM TTH Park 245
In Person
Murphy,C., Murphy,C.
Laboratory: 12:55 PM- 2:15 PM T In Person
CMSC B311-001 Computational Geometry 1Semester / 1 Lecture: 11:25 AM-12:45 PM TTH Park 337
In Person
Xu,D., Xu,D.
Laboratory: 11:40 AM- 1:00 PM W Park 230
In Person
CMSC B313-001 Computer Graphics 1Semester / 1 Lecture: 12:55 PM- 2:15 PM TTH Park 245
In Person
Normoyle,A., Normoyle,A.
Laboratory: 2:25 PM- 3:45 PM TH Park 231
In Person
CMSC B337-001 Algorithms: Design and Practice 1Semester / 1 Lecture: 9:55 AM-11:15 AM TTH Park 336
In Person
Kumar,D., Towell,G.
Laboratory: 10:10 AM-11:30 AM F In Person
CMSC B353-001 Software Engineering 1Semester / 1 Lecture: 1:10 PM- 2:30 PM MW Park 300
In Person
Murphy,C., Murphy,C.
Laboratory: 2:40 PM- 4:30 PM M In Person
CMSC B383-001 Recent Advances in Computer Science: Applications of Natural Language Processing 1Semester / 1 Lecture: 10:10 AM-11:30 AM MW Park 338
In Person
Poliak,A., Poliak,A.
Lecture: 11:40 AM- 1:00 PM W In Person
CMSC B399-001 Senior Conference 1Semester / 1 Lecure: 2:10 PM- 4:00 PM F In Person Dept. staff, TBA

2022-23 Catalog Data: CMSC

CMSC B109 Introduction to Computing

Fall 2022

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

Quantitative Methods (QM)

Quantitative Readiness Required (QR)

Scientific Investigation (SI)

Counts Toward Data Science

Back to top

CMSC B113 Computer Science I

Fall 2022, Spring 2023

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 and problem decomposition. 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 basic communications programs (such as a chat client). No computer programming experience is necessary or expected. Prerequisite: Must pass either the Quantitative Readiness Assessment or the Quantitative Seminar (QUAN B001)

Course does not meet an Approach

Quantitative Methods (QM)

Quantitative Readiness Required (QR)

Counts Toward Data Science

Back to top

CMSC B151 Introduction to Data Structures

Fall 2022, Spring 2023

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. Required: 2 hour lab. Prerequisites: CMSC B110 or CMSC B113 or H105, or permission of instructor.

Quantitative Methods (QM)

Scientific Investigation (SI)

Counts Toward Data Science

Back to top

CMSC B223 Systems Programming

Fall 2022, Spring 2023

A more advanced programming course using C/C++. Topics include memory management, design and implementation of additional data structures and algorithms, including priority queues, graphs and advanced trees. In addition, students will be introduced to C++'s STL. There will be emphasis on more significant programming assignments, program design, and other fundamental software engineering principles. Makefiles, interactive debugging, version control, and command-line shell interaction round out the technical skills developed in this course. Prerequisites: CMSC B206 or H106 or H107, and MATH/CMSC 231.

Course does not meet an Approach

Back to top

CMSC B231 Discrete Mathematics

Fall 2022

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. Co-requisites: BIOL B115 or CMSC B110 or CMSC B113 or H105 or H107.

Quantitative Methods (QM)

Back to top

CMSC B240 Principles of Computer Organization

Spring 2023

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 laboratory, designs discussed in lecture are constructed in software. Prerequisite: CMSC B206 or H106 and CMSC B231

Back to top

CMSC B245 Principles of Programming Languages

Fall 2022

An introduction to the study of programming languages. Where do programming languages come from and how do they evolve? And why should a programmer choose one over another? This course explores these topics by covering several different programming language features and paradigms, including object-oriented, functional, and dynamic. It also looks at the history and future of programming languages by studying the active development of several real-world languages. The course has a strong lab component where students explore several programming languages both by writing code in those languages and by implementing interpreters. Prerequisite: CMSC B151 or B206 or H106 or H107 and CMSC B231

Course does not meet an Approach

Back to top

CMSC B283 Topics in Computer Science

Fall 2022

This is an intermediate-level topics course. Course content varies.

Current topic description: Software is prevalent in all aspects of modern life, and has tremendous impact not just on society, but also on the world in which we live. This sophomore/junior-level course explores the relationship between computer software, society, and our world through investigation of the ethical, legal, and policy concerns that must be considered by computing professionals and organizations. Topics may include: privacy, anonymity, and freedom of speech in online spaces; hacking and computer security; viruses, worms, spyware, and spamming; licensing and intellectual property; effects on wellness and mental health; accessibility; ethics and bias in ML and AI; and environmental concerns. In addition to reading assignments, in-class discussions, and reflective writing, this course will include weekly programming labs in Python and a group project to investigate a selected topic in greater depth.

Course does not meet an Approach

Back to top

CMSC B311 Computational Geometry

Spring 2023

A study of algorithms and mathematical theories that focus on solving geometric problems in computing, which arise naturally from a variety of disciplines such as Computer Graphics, Computer Aided Geometric Design, Computer Vision, Robotics and Visualization. The materials covered sit at the intersection of pure Mathematics and application-driven Computer Science and efforts will be made to accommodate Math majors and Computer Science majors of varying math/computational backgrounds. Topics include: graph theory, triangulation, convex hulls, geometric structures such as Voronoi diagrams and Delaunay triangulations, as well as curves and polyhedra surface topology. Prerequisite: CMSC/MATH B/H231 and CMSC B206 or CMSC/MATH B/H231 and CMSC H106 or CMSC/MATH B/H231 and CMSC H107.

Quantitative Readiness Required (QR)

Back to top

CMSC B313 Computer Graphics

Spring 2023

An introduction to the fundamental principles of computer graphics, including 3D modeling, rendering, and animation. Topics cover: 2D and 3D transformations; rendering techniques; geometric algorithms; 3D object models (surface and volume); visible surface algorithms; shading and mapping; ray tracing; and select others. Prerequisites: CMSC/MATH B231, CMSC B246 and MATH B203 or H215, or permission of instructor.

Back to top

CMSC B317 Computer Animation

Not offered 2022-23

The goal of this course is to give students a foundation for programming animated and interactive graphics. In particular, we will "look under the hood" at the algorithms used by game engines and modeling tools to create authorable, interactive characters and special effects. Labs will give students hands on experience implementing algorithms in C++ as well as opportunities to derive their own unique animations. Topics will include mathematical foundations (coordinate systems, transformations, quaternions), interpolation techniques, keyframing, motion capture and procedural animation, and physically-based systems.

Quantitative Readiness Required (QR)

Back to top

CMSC B325 Computational Linguistics

Fall 2022

Introduction to computational models of understanding and processing human languages. How elements of linguistics, computer science, and artificial intelligence can be combined to help computers process human language and to help linguists understand language through computer models. Topics covered: syntax, semantics, pragmatics, generation and knowledge representation techniques. Prerequisite: CMSC 206 , or H106 and CMSC 231 or permission of instructor.

Counts Toward Neuroscience

Back to top

CMSC B337 Algorithms: Design and Practice

Spring 2023

This course examines the applications of algorithms to the accomplishments of various programming tasks. The focus will be on understanding of problem-solving methods, along with the construction of algorithms, rather than emphasizing formal proving methodologies. Topics include divide and conquer, approximations for NP-Complete problems, data mining and parallel algorithms. Prerequisites: CMSC B206 or H106 and B231.

Back to top

CMSC B340 Analysis of Algorithms

Fall 2022

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.

Quantitative Readiness Required (QR)

Back to top

CMSC B353 Software Engineering

Spring 2023

Software engineering is the process of designing and implementing a software system in a way that it is efficient and reliable, and can easily be understood and modified by other developers. This course will introduce students to the various tools, processes, and techniques that are used by professional software engineers to create high quality software. Topics will include software development lifecycle, requirements, design, implementation, testing, and maintenance. Students will engage in the development of mobile and web applications. Prerequisites: CMSC B206 or H106 or H107.

Back to top

CMSC B355 Operating Systems

Not offered 2022-23

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: CMSC B246 or permission of instructor.

Back to top

CMSC B373 Artificial Intelligence

Not offered 2022-23

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 B206 or H106 and CMSC B231.

Counts Toward Neuroscience

Back to top

CMSC B383 Recent Advances in Computer Science

Section 001 (Spring 2023): Applications of Natural Language Processing
Section 001 (Spring 2022): Database Systems in Practice

Spring 2023

This is a topics course. Course content varies.

Counts Toward Data Science

Back to top

CMSC B399 Senior Conference

An independent project in computer science culminating in a written report/thesis and oral presentation. Class discussions of work in progress and oral and written presentations of research results will be emphasized. Required for all computer science majors in the spring semester of their senior year.

Back to top

CMSC B403 Supervised Work/Independent Study

Back to top

CMSC B403 Supervised Work/Independent Study

Back to top

CMSC B425 Praxis III: Independent Study

Praxis III courses are Independent Study courses and are developed by individual students, in collaboration with faculty and field supervisors. A Praxis courses is distinguished by genuine collaboration with fieldsite organizations and by a dynamic process of reflection that incorporates lessons learned in the field into the classroom setting and applies theoretical understanding gained through classroom study to work done in the broader community.

Counts Toward Praxis Program

Back to top

BIOL B115 Computing Through Biology: An Introduction

Not offered 2022-23

This course is an introduction to biology through computer science, or an introduction to computer science through biology. The course will This course is an introduction to biology through computer science, or an introduction to computer science through biology. The course will examine biological systems through the use of computer science, exploring concepts and solving problems from bioinformatics, evolution, ecology, and molecular biology through the practice of writing and modifying code in the Python programming language. The course will introduce students to the subject matter and branches of computer science as an academic discipline, and the nature, development, coding, testing, documenting and analysis of the efficiency and limitations of algorithms. Three hours of lecture, three hours of lab per week.

Quantitative Methods (QM)

Scientific Investigation (SI)

Counts Toward Counts toward Data Science

Back to top