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 2019

COURSE TITLE SCHEDULE/
UNITS
MEETING TYPE TIMES/DAYS LOCATION INSTR(S)
CMSC B110-001Introduction to ComputingSemester / 1Lecture: 12:55 PM- 2:15 PM TTHPark 245Kumar,D.
CMSC B110-00AIntroduction to ComputingSemester / 1Laboratory: 2:25 PM- 3:15 PM TPark 231Kumar,D.
CMSC B110-00BIntroduction to ComputingSemester / 1Laboratory: 11:55 AM-12:45 PM THPark 231Kumar,D.
CMSC B110-00ZIntroduction to ComputingSemester / 1
CMSC B113-001Computer Science ISemester / 1Lecture: 12:55 PM- 2:15 PM TTHPark 338Riley,K.
CMSC B113-00AComputer Science ISemester / 1Laboratory: 2:25 PM- 3:15 PM TPark 231Riley,K.
CMSC B113-00BComputer Science ISemester / 1Laboratory: 11:55 AM-12:55 PM THPark 231Riley,K.
CMSC B113-00ZComputer Science ISemester / 1
CMSC B206-001Introduction to Data StructuresSemester / 1Lecture: 12:55 PM- 2:15 PM TTHPark 336Department staff,T., Towell,G.
Laboratory: 2:25 PM- 3:45 PM THPark 231
CMSC B231-001Discrete MathematicsSemester / 1Lecture: 8:40 AM-10:00 AM MWPark 338Shende,S.
CMSC B240-001Principles of Computer OrganizationSemester / 1Lecture: 8:40 AM-10:00 AM MWPark 336Riley,K., Riley,K.
Laboratory: 8:40 AM-10:00 AM FPark 231
CMSC B246-001Systems ProgrammingSemester / 1Lecture: 10:10 AM-11:30 AM MWPark 336Department staff,T., Towell,G., Towell,G.
Laboratory: 1:10 PM- 2:30 PM M
CMSC B340-001Analysis of AlgorithmsSemester / 1Lecture: 12:55 PM- 2:15 PM TTHXu,D., Xu,D.
Laboratory: 2:25 PM- 3:45 PM TH
CMSC B355-001Operating SystemsSemester / 1Lecture: 11:25 AM-12:45 PM TTHPark 336Xu,D., Xu,D.
Laboratory: 2:25 PM- 3:45 PM TPark 337
CMSC B380-001Recent Advances in Computer Science: Science of InformationSemester / 1LEC: 11:40 AM- 1:00 PM MWPark 159Kumar,D.

Spring 2020

COURSE TITLE SCHEDULE/
UNITS
MEETING TYPE TIMES/DAYS LOCATION INSTR(S)
CMSC B113-001Computer Science ISemester / 1Lecture: 12:55 PM- 2:15 PM TTHPark 338Riley,K.
CMSC B113-00AComputer Science ISemester / 1Laboratory: 2:25 PM- 3:15 PM TDept. staff, TBA
CMSC B113-00BComputer Science ISemester / 1Laboratory: 11:55 AM-12:45 PM THDept. staff, TBA
CMSC B113-00ZComputer Science ISemester / 1
CMSC B206-001Introduction to Data StructuresSemester / 1Lecture: 12:55 PM- 2:15 PM TTHKumar,D., Kumar,D.
Laboratory: 2:25 PM- 3:15 PM TH
CMSC B246-001Systems ProgrammingSemester / 1Lecture: 10:10 AM-11:30 AM MWRiley,K., Riley,K.
Laboratory: 11:40 AM- 1:00 PM W
CMSC B399-001Senior ConferenceSemester / 1Lecure: 2:00 PM- 4:00 PM FDept. staff, TBA
BIOL B115-001Computing Through Biology: An IntroductionSemester / 1LEC: 11:10 AM-12:00 PM MWFPark 349Record,S., Record,S.
Lab: 1:10 PM- 4:00 PM WCanaday Computer Lab

Fall 2020

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

2019-20 Catalog Data

CMSC B110 Introduction to Computing
Fall 2019
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)

Back to top

CMSC B113 Computer Science I
Fall 2019, Spring 2020
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)

Back to top

CMSC B206 Introduction to Data Structures
Fall 2019, Spring 2020
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)

Back to top

CMSC B231 Discrete Mathematics
Fall 2019
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
Fall 2019
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
Not offered 2019-20
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 B246 Systems Programming
Fall 2019, Spring 2020
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 B310 Computational Geometry
Not offered 2019-20
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 2019-20
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 B325 Computational Linguistics
Not offered 2019-20
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 B340 Analysis of Algorithms
Fall 2019
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 2019-20
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 B355 Operating Systems
Fall 2019
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 B371 Cognitive Science
Not offered 2019-20
Cognitive science is the interdisciplinary study of intelligence in mechanical and organic systems. In this introductory course, we examine many topics from computer science, linguistics, neuroscience, mathematics, philosophy, and psychology. Can a computer be intelligent? How do neurons give rise to thinking? What is consciousness? These are some of the questions we will examine. No prior knowledge or experience with any of the subfields is assumed or necessary. Prerequisite: CMSC B206 or H106 and CMSC B231 or permission of instructor.
Counts toward Neuroscience

Back to top

CMSC B372 Artificial Intelligence
Not offered 2019-20
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 B380 Recent Advances in Computer Science
Section 001 (Fall 2019): Science of Information
Fall 2019
This is a topics course. Course content varies.
Current topic description: Claude Shannon's foundations of information theory have paved the way for data storage, compression, encoding, and transmission for the Internet, CDs, DVDs, MP3 players, JPEGs, WiFi, iPODs, mobile phones, and a whole host of applications underlying today's information technologies. The past six decades have brought information theory to the crossroads of several traditional disciplines: mathematics, statistics, computer science, physics, neurobiology, and electrical engineering. This course introduces students to the fundamentals of Information Theory and leads them to a broader understanding of the concept of "information" that transcends boundaries between disciplines, especially between physical and life sciences, communication, and knowledge extraction from massive datasets. Students in several disciplines will be able to draw upon the latest discoveries from multiple disciplines, discuss recent research, and learn to apply the techniques and tools of information-based inquiry in their lives. The course will run in a seminar format where students will engage by participating in and leading discussions and presenting results from readings and computational experiments. The course requires a Junior or Senior standing. Students from ALL disciplines are encouraged to enroll.

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

BIOL B115 Computing Through Biology: An Introduction
Spring 2020
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)

Back to top