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

Fall 2017

COURSE TITLE SCHEDULE/
UNITS
MEETING TYPE TIMES/DAYS LOCATION INSTR(S)
CMSC B110-001Introduction to ComputingSemester / 1LEC: 12:55 PM- 2:15 PM TTHPark 338Blank,D.
CMSC B110-00AIntroduction to ComputingSemester / 1Lab: 2:25 PM- 3:15 PM TPark 230
CMSC B110-00BIntroduction to ComputingSemester / 1Lab: 11:55 AM-12:45 PM THPark 230
CMSC B113-001Computer Science ISemester / 1LEC: 1:10 PM- 2:30 PM MWPark 338Eisenberg,R.
CMSC B113-00AComputer Science ISemester / 1Lab: 2:40 PM- 3:30 PM MPark 231Eisenberg,R.
CMSC B113-00BComputer Science ISemester / 1Lab: 12:10 PM- 1:00 PM WPark 231Eisenberg,R.
CMSC B113-00ZComputer Science ISemester / 1
CMSC B206-001Introduction to Data StructuresSemester / 1Lecture: 9:55 AM-11:15 AM TTHPark 336Kumar,D.
lab: 11:25 AM-12:45 PM THPark 231
CMSC B231-001Discrete MathematicsSemester / 1Lecture: 10:10 AM-11:30 AM MWPark 229Eisenberg,R.
CMSC B240-001Principles of Computer OrganizationSemester / 1LEC: 1:10 PM- 2:30 PM MWPark 336Blank,D.
lab: 2:40 PM- 4:00 PM WPark 231
CMSC B340-001Analysis of AlgorithmsSemester / 1Lecture: 11:25 AM-12:45 PM TTHPark 337Xu,D.
lab: 12:55 PM- 2:15 PM THPark 231
CMSC B372-001Artificial IntelligenceSemester / 1Lecture: 10:10 AM-11:30 AM MWPark 278Kumar,D.
Laboratory: 10:10 AM-11:30 AM FPark 231
CMSC B403-001Supervised Work/Independent StudySemester / 1Dept. staff, TBA
CMSC B403-001Supervised Work/Independent StudySemester / 1Dept. staff, TBA

Spring 2018

COURSE TITLE SCHEDULE/
UNITS
MEETING TYPE TIMES/DAYS LOCATION INSTR(S)
CMSC B113-001Computer Science ISemester / 1Lecture: 12:55 PM- 2:15 PM TTHPark 338Eisenberg,R.
CMSC B113-00AComputer Science ISemester / 1Laboratory: 2:25 PM- 3:15 PM TPark 231Eisenberg,R.
CMSC B113-00BComputer Science ISemester / 1Laboratory: 11:55 AM-12:45 PM THPark 231Eisenberg,R.
CMSC B206-001Introduction to Data StructuresSemester / 1Lecture: 9:55 AM-11:15 AM TTHPark 336Eisenberg,R., Eisenberg,R.
Laboratory: 2:40 PM- 4:00 PM WPark 231
CMSC B246-001Systems ProgrammingSemester / 1Lecture: 1:10 PM- 2:30 PM MWPark 336Kumar,D., Kumar,D.
Laboratory: 2:40 PM- 4:00 PM MPark 231
CMSC B330-001Algorithms: Design and PracticeSemester / 1Lecture: 9:55 AM-11:15 AM TTHPark 337Kumar,D., Kumar,D.
Laboratory: 11:25 AM-12:45 PM THPark 231
CMSC B355-001Operating SystemsSemester / 1Lecture: 12:55 PM- 2:15 PM TTHPark 336Xu,D., Xu,D.
Laboratory: 2:15 PM- 3:45 PM TPark 232
CMSC B399-001Senior ConferenceSemester / 1Lecture: 10:10 AM-12:00 PM WDept. staff, TBA
BIOL B115-001Computing Through Biology: An IntroductionSemester / 1Lecture: 11:10 AM-12:00 PM MWFPark 349Shapiro,J., Shapiro,J.
Laboratory: 1:10 PM- 3:00 PM WCanaday Computer Lab

Fall 2018

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

2017-18 Catalog Data

CMSC B110 Introduction to Computing
Fall 2017
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 2017, Spring 2018
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 B115 Computing Through Biology: An Introduction
Not offered 2017-18
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. Additional Meeting Time: (Lab) 2 hours.
Quantitative Methods (QM)
Scientific Investigation (SI)

Back to top

CMSC B206 Introduction to Data Structures
Fall 2017, Spring 2018
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 the shell, commandline scripting and a debugger without any IDE. Required: 2 hour lab. Prerequisites: CMSC B110 or H105, or permission of instructor.
Quantitative Methods (QM)
Scientific Investigation (SI)

Back to top

CMSC B231 Discrete Mathematics
Fall 2017
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 2017
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 2017-18
An introduction to a wide range of topics relating to programming languages with an emphasis on abstraction and design. Design issues relevant to the implementation of programming languages are discussed, including a review and in-depth treatment of mechanisms for sequence control, the run-time structure of programming languages, and programming in the large. The course has a strong lab component where students explore a variety of programming languages and concepts. Prerequisite: CMSC B206 or H106 and CMSC B231
Course does not meet an Approach

Back to top

CMSC B246 Systems Programming
Section 001 (Spring 2017): Unix and C Programming
Spring 2018
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 B271 Cognitive Science: Introduction to Cognitive Modeling
Not offered 2017-18
Cognitive Science is the study of mind and mental phenomenon, both natural and artificial. It is an interdisciplinary field of study encompassing psychology, philosophy, computer science, neuroscience, and linguistics. Specific topics to be explored in this course include the nature and definition of mind, memory, perception, emotions, morality, intelligence, and consciousness. No prior knowledge or experience with any of the subfields is assumed or necessary. This course does not count towards any CS major/minor credit

Back to top

CMSC B310 Computational Geometry
Not offered 2017-18
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 B231/ MATH B231.
Quantitative Readiness Required (QR)

Back to top

CMSC B312 Computer Graphics
Not offered 2017-18
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 B330 Algorithms: Design and Practice
Spring 2018
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 2017
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 B355 Operating Systems
Spring 2018
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. Prerequisite: CMSC B246 or permission of instructor.

Back to top

CMSC B371 Cognitive Science
Not offered 2017-18
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
Fall 2017
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 (Spring 2017): Modern Functional Programming
Not offered 2017-18
Simplify your language and free your mind. This course will cover an alternative style of programming: typed functional programming. Typed functional programming languages are quickly gaining currency in industry, including at Google, Facebook, a variety of financial services companies, and across a range of startups. They are particularly good at maintaining security guarantees and for writing concurrent programs. This course will explore the ease and wonder of typed functional programming through one such language: Haskell. We will cover higher-order functions, purity, generalized algebraic datatypes, type inference, laziness, monads, and more. Once you have used these techniques, programming will never feel the same again. Prerequisites: CMSC B206 or H106 or H107, and MATH/CMSC 231.

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

BIOL B115 Computing Through Biology: An Introduction
Spring 2018
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. Additional Meeting Time: (Lab) 2 hours.
Quantitative Methods (QM)
Scientific Investigation (SI)

Back to top