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.

Fall 2021

COURSE TITLE SCHEDULE/
UNITS
MEETING TYPE TIMES/DAYS LOCATION / INSTRUCTION MODE INSTR(S)
CMSC B113-001Computer Science ISemester / 1Lecture: 12:55 PM- 2:15 PM TTHPark 338
In Person
Murphy,C.
CMSC B113-002Computer Science ISemester / 1Lecture: 1:10 PM- 2:30 PM MWPark 245
In Person
Murphy,C.
CMSC B113-00AComputer Science ISemester / 1Laboratory: 2:25 PM- 3:15 PM TPark 231
In Person
Murphy,C.
CMSC B113-00BComputer Science ISemester / 1Laboratory: 11:55 AM-12:45 PM THPark 231
In Person
Murphy,C.
CMSC B113-00CComputer Science ISemester / 1Laboratory: 2:40 PM- 4:00 PM WPark 231
In Person
Murphy,C.
CMSC B151-002Introduction to Data StructuresSemester / 1Lecture: 12:55 PM- 2:15 PM TTHPark 245
In Person
Towell,G., Towell,G.
Laboratory: 2:25 PM- 4:15 PM TPark 230
In Person
CMSC B231-001Discrete MathematicsSemester / 1Lecture: 9:55 AM-11:15 AM TTHPark 338
In Person
Normoyle,A.
CMSC B245-001Principles of Programming LanguagesSemester / 1Lecture: 1:10 PM- 2:30 PM MWPark 336
In Person
Towell,G.
CMSC B245-00APrinciples of Programming LanguagesSemester / 1Laboratory: 2:40 PM- 4:00 PM MPark 230
In Person
Towell,G.
CMSC B317-001Computer AnimationSemester / 1Lecture: 12:55 PM- 2:15 PM TTHPark 336
In Person
Normoyle,A., Normoyle,A.
Lecture: 2:25 PM- 3:45 PM THPark 230
In Person
CMSC B340-001Analysis of AlgorithmsSemester / 1Lecture: 9:55 AM-11:15 AM TTHPark 336
In Person
Xu,D., Xu,D.
Laboratory: 11:40 AM- 1:00 PM WPark 230
In Person
CMSC B355-001Operating SystemsSemester / 1Lecture: 11:25 AM-12:45 PM TTHPark 338
In Person
Xu,D., Xu,D.
Laboratory: 1:10 PM- 2:30 PM WPark 230
In Person
CMSC B373-001Artificial IntelligenceSemester / 1LEC: 10:10 AM-11:30 AM MWPark 245
In Person
Kumar,D., Kumar,D.
Laboratory: 11:40 AM- 1:00 PM MPark 230
In Person

Spring 2022

COURSE TITLE SCHEDULE/
UNITS
MEETING TYPE TIMES/DAYS LOCATION / INSTRUCTION MODE INSTR(S)
CMSC B113-001Computer Science ISemester / 1Lecture: 12:55 PM- 2:15 PM TTHIn PersonKumar,D.
CMSC B113-00AComputer Science ISemester / 1Laboratory: 2:25 PM- 3:15 PM TIn PersonKumar,D.
CMSC B113-00BComputer Science ISemester / 1Laboratory: 11:55 AM-12:45 PM THIn PersonKumar,D.
CMSC B113-00ZComputer Science ISemester / 1In Person
CMSC B151-001Introduction to Data StructuresSemester / 1Lecture: 12:55 PM- 2:15 PM TTHIn PersonTowell,G., Towell,G.
Laboratory: 2:25 PM- 3:45 PM THIn Person
CMSC B223-001Systems ProgrammingSemester / 1Lecture: 12:55 PM- 2:15 PM TTHIn PersonNormoyle,A., Normoyle,A.
Laboratory: 2:25 PM- 3:45 PM THIn Person
CMSC B240-001Principles of Computer OrganizationSemester / 1Lecture: 11:25 AM-12:45 PM TTHIn PersonMurphy,C., Murphy,C.
Laboratory: 2:25 PM- 3:45 PM TIn Person
CMSC B337-001Algorithms: Design and PracticeSemester / 1Lecture: 10:10 AM-11:30 AM MWIn PersonKumar,D., Kumar,D.
Laboratory: 10:10 AM-11:30 AM FIn Person
CMSC B353-001Software EngineeringSemester / 1Lecture: 1:10 PM- 2:30 PM MWIn PersonMurphy,C., Murphy,C.
Laboratory: 2:40 PM- 4:00 PM MIn Person
CMSC B383-001Recent Advances in Computer Science: Database Systems in PracticeSemester / 1LEC: 11:40 AM- 1:00 PM MWIn PersonTowell,G., Towell,G.
Laboratory: 2:40 PM- 4:00 PM WIn Person
CMSC B399-001Senior ConferenceSemester / 1Lecure: 2:10 PM- 4:00 PM FIn PersonDept. staff, TBA

Fall 2022

(Class schedules for this semester will be posted at a later date.)

2021-22 Catalog Data

CMSC B109 Introduction to Computing
Not offered 2021-22
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 Introduction to Data Science

Back to top

CMSC B113 Computer Science I
Fall 2021, Spring 2022
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 Introduction to Data Science

Back to top

CMSC B151 Introduction to Data Structures
Fall 2021, Spring 2022
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 Introduction to Data Science

Back to top

CMSC B223 Systems Programming
Spring 2022
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 2021
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 2022
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 2021
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 B206 or H106 or H107 and CMSC B231
Course does not meet an Approach

Back to top

CMSC B310 Computational Geometry
Not offered 2021-22
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 B312 Computer Graphics
Not offered 2021-22
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
Fall 2021
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
Not offered 2021-22
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 2022
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 2021
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 B350 Compiler Design: Theory and Practice
Not offered 2021-22
A compiler is a computer program that translates code written in a programming language to machine code that a computer can directly execute. Students in this course will learn how to build a compiler, and assignments will all be about incrementally building a compiler. Topics covered include: lexical analysis, grammars and parsing, intermediate representations, syntax-directed translation, code generation, type checking, simple dataflow and control-flow analyses, and optimizations. This is a challenging, implementation-oriented course.

Back to top

CMSC B353 Software Engineering
Spring 2022
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
Fall 2021
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
Fall 2021
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 2022): Database Systems in Practice
Spring 2022
This is a topics course. Course content varies.

Current topic description: This course will focus on the how to employ and deploy databases for use in real-world systems. The course will focus on the practical aspects of using existing database management systems (DBMS) rather than the task of designing and creating a new DBMS. Implementation tasks will focus on examining structures that exist within databases and how those structures impact use. There will be extensive discussion and use of relational DBMS like MySQL and Postgres as well as NoSQL databases like MongoDB.

Counts toward Introduction to 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 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 2021-22
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 Introduction to Data Science

Back to top