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 2023 CMSC
Course | Title | Schedule/Units | Meeting Type Times/Days | Location / Instruction Mode | Instr(s) |
---|---|---|---|---|---|
CMSC B113-001 | Computer Science I | Semester / 1 | Lecture: 12:55 PM-2:15 PM TTH | Park 300 In Person |
Poliak,A. |
CMSC B113-00A | Computer Science I | Semester / 1 | Laboratory: 2:25 PM-3:45 PM T | Park 230 In Person |
Poliak,A. |
CMSC B151-001 | Introduction to Data Structures | Semester / 1 | Lecture: 12:55 PM-2:15 PM TTH | Park 338 In Person |
Xu,D., Xu,D. |
Laboratory: 1:10 PM-2:30 PM W | Park 230 In Person |
||||
CMSC B223-001 | Systems Programming | Semester / 1 | Lecture: 1:10 PM-2:30 PM MW | Park 245 In Person |
Normoyle,A., Normoyle,A. |
Laboratory: 2:40 PM-4:00 PM M | Park 230 In Person |
||||
CMSC B240-001 | Principles of Computer Organization | Semester / 1 | Lecture: 11:40 AM-1:00 PM MW | Park 245 In Person |
Murphy,C., Murphy,C. |
Laboratory: 10:10 AM-11:30 AM W | Park 231 In Person |
||||
CMSC B311-001 | Computational Geometry | Semester / 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 | Semester / 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 | Semester / 1 | Lecture: 9:55 AM-11:15 AM TTH | Park 336 In Person |
Towell,G., Towell,G. |
Laboratory: 11:25 AM-12:45 PM TH | Park 230 In Person |
||||
CMSC B353-001 | Software Engineering | Semester / 1 | Lecture: 1:10 PM-2:30 PM MW | Park 300 In Person |
Murphy,C., Murphy,C. |
Laboratory: 2:40 PM-4:00 PM M | Park 231 In Person |
||||
CMSC B383-001 | Recent Advances in Computer Science: Computational Text Analysis | Semester / 1 | LEC: 10:10 AM-11:30 AM MW | Park 338 In Person |
Poliak,A., Poliak,A. |
Laboratory: 11:40 AM-1:00 PM M | Park 231 In Person |
||||
CMSC B399-001 | Senior Conference | Semester / 1 | Lecure: 2:10 PM-4:00 PM F | Park 245 In Person |
Dept. staff, TBA |
CMSC B403-001 | Supervised Work/Independent Study | 1 | In Person | Dept. staff, TBA | |
CMSC B403-001 | Supervised Work/Independent Study | 1 | In Person | Dept. staff, TBA |
Fall 2023 CMSC
Course | Title | Schedule/Units | Meeting Type Times/Days | Location / Instruction Mode | Instr(s) |
---|---|---|---|---|---|
CMSC B109-001 | Introduction to Computing | Semester / 1 | Lecture: 1:10 PM-2:30 PM MW | In Person | Department staff,T., Department staff,T., Murphy,C., Murphy,C. |
Laboratory: 2:40 PM-4:00 PM W | Park 230 In Person |
||||
CMSC B113-001 | Computer Science I | Semester / 1 | Lecture: 1:10 PM-2:30 PM MW | Park 245 In Person |
Murphy,C., Murphy,C. |
Laboratory: 2:40 PM-4:00 PM W | Park 231 In Person |
||||
CMSC B113-002 | Computer Science I | Semester / 1 | Lecture: 12:55 PM-2:15 PM TTH | Park 245 In Person |
Murphy,C., Murphy,C. |
Laboratory: 2:25 PM-3:45 PM TH | Park 231 In Person |
||||
CMSC B151-001 | Introduction to Data Structures | Semester / 1 | Lecture: 1:10 PM-2:30 PM MW | In Person | Towell,G., Towell,G. |
Laboratory: 2:40 PM-4:00 PM M | Park 231 In Person |
||||
CMSC B223-001 | Systems Programming | Semester / 1 | Lecture: 1:10 PM-2:30 PM MW | In Person | Poliak,A., Poliak,A. |
Laboratory: 2:40 PM-4:00 PM M | Park 230 In Person |
||||
CMSC B231-001 | Discrete Mathematics | Semester / 1 | Lecture: 9:55 AM-11:15 AM TTH | In Person | Xu,D. |
CMSC B245-001 | Principles of Programming Languages | Semester / 1 | Lecture: 9:55 AM-11:15 AM TTH | In Person | Towell,G., Towell,G. |
Laboratory: 12:55 PM-2:15 PM T | Park 231 In Person |
||||
CMSC B340-001 | Analysis of Algorithms | Semester / 1 | Lecture: 11:25 AM-12:45 PM TTH | In Person | Xu,D., Xu,D. |
Laboratory: 11:40 AM-1:00 PM W | In Person | ||||
CMSC B353-001 | Software Engineering | Semester / 1 | Lecture: 9:55 AM-11:15 AM TTH | In Person | Murphy,C., Murphy,C. |
Laboratory: 2:25 PM-3:45 PM T | Park 231 In Person |
||||
CMSC B373-001 | Artificial Intelligence | Semester / 1 | Lecture: 10:10 AM-11:30 AM MW | In Person | Kumar,D., Kumar,D. |
Laboratory: 1:10 PM-2:30 PM M | Park 231 In Person |
||||
CMSC B383-001 | Recent Advances in Computer Science | Semester / 1 | Lecture: 12:55 PM-2:15 PM TTH | In Person | Department staff,T., Department staff,T., Murphy,C., Murphy,C. |
Laboratory: 2:25 PM-3:45 PM TH | Park 230 In Person |
||||
CMSC B383-002 | Recent Advances in Computer Science | Semester / 1 | Lecture: 9:55 AM-11:15 AM TTH | In Person | Poliak,A., Poliak,A. |
Laboratory: 2:25 PM-3:45 PM T | In Person |
Spring 2024 CMSC
Course | Title | Schedule/Units | Meeting Type Times/Days | Location / Instruction Mode | Instr(s) |
---|---|---|---|---|---|
CMSC B113-001 | Computer Science I | Semester / 1 | Lecture: 1:10 PM-2:30 PM MW | In Person | Dept. staff, TBA |
Laboratory: 2:40 PM-4:00 PM W | Park 231 In Person |
||||
CMSC B151-001 | Introduction to Data Structures | Semester / 1 | Lecture: 1:10 PM-2:30 PM MW | In Person | Towell,G., Towell,G. |
Laboratory: 2:40 PM-4:00 PM M | Park 231 In Person |
||||
CMSC B223-001 | Systems Programming | Semester / 1 | Lecture: 9:55 AM-11:15 AM TTH | In Person | Dept. staff, TBA |
Laboratory: 2:25 PM-3:45 PM TH | Park 231 In Person |
||||
CMSC B231-001 | Discrete Mathematics | Semester / 1 | Lecture: 11:25 AM-12:45 PM TTH | In Person | Xu,D. |
CMSC B240-001 | Principles of Computer Organization | Semester / 1 | Lecture: 12:55 PM-2:15 PM TTH | In Person | Kumar,D., Kumar,D. |
Laboratory: 2:25 PM-3:45 PM T | In Person | ||||
CMSC B337-001 | Algorithms: Design and Practice | Semester / 1 | Lecture: 10:10 AM-11:30 AM MW | In Person | Kumar,D., Kumar,D. |
Laboratory: 1:10 PM-2:30 PM M | In Person | ||||
CMSC B355-001 | Operating Systems | Semester / 1 | Lecture: 9:55 AM-11:15 AM TTH | In Person | Xu,D., Xu,D. |
Laboratory: 11:40 AM-1:00 PM W | Park 231 In Person |
||||
CMSC B383-001 | Recent Advances in Computer Science: Database Systems in Practice | Semester / 1 | LEC: 11:25 AM-12:45 PM TTH | In Person | Towell,G., Towell,G. |
Laboratory: 2:25 PM-3:45 PM T | Park 231 In Person |
||||
CMSC B399-001 | Senior Conference | Semester / 1 | Lecure: 10:10 AM-11:00 AM F | In Person | Dept. staff, TBA |
CMSC B109 Introduction to Computing
Fall 2023
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 Data Science
CMSC B113 Computer Science I
Fall 2023, Spring 2024
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. Prerequisites: Students must have completed AP level Calculus, Statistics, Physics, Chemistry, Economics, or Computer Science; or IB Mathematics HL; or have a SAT score of 650 or higher in Mathematics or Physics; or ACT score of 28 or higher in Mathematics.
Course does not meet an Approach
Quantitative Methods (QM)
Quantitative Readiness Required (QR)
Counts Toward Data Science
CMSC B151 Introduction to Data Structures
Fall 2023, Spring 2024
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 Data Science
CMSC B223 Systems Programming
Fall 2023, Spring 2024
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. Prerequisites: CMSC B151 or CMSC H106 or CMSC H107, and MATH/CMSC 231.
Course does not meet an Approach
CMSC B231 Discrete Mathematics
Fall 2023, Spring 2024
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 B109 or CMSC B113 or CMSC H105 or CMSC H107.
Quantitative Methods (QM)
CMSC B240 Principles of Computer Organization
Spring 2024
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.
CMSC B245 Principles of Programming Languages
Fall 2023
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 weekly lab component where students explore several programming languages with hands-on exercises. Prerequisite: CMSC B151 or CMSC H106 or CMSC H107, and CMSC B231.
Course does not meet an Approach
CMSC B283 Topics in Computer Science
Not offered 2023-24
This is an intermediate-level topics course. Course content varies. Fall 2022 offering: Computer Science in Society.
Current topic description: From Data to Knowledge is a course that explores the fundamental principles of machine learning and its applications. Students will learn the basics of data analysis, preprocessing, and modeling techniques to extract insights from large datasets. The course will also cover common machine learning algorithms, including supervised and unsupervised learning, regression, classification, and clustering. Emphasis will be placed on understanding the strengths and limitations of different machine learning models and how to implement them in Python code and apply them to real-world problems.
Course does not meet an Approach
Counts Toward Data Science
CMSC B311 Computational Geometry
Not offered 2023-24
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 B151 or CMSC/MATH B/H231 and CMSC H106 or CMSC/MATH B/H231 and CMSC H107.
Quantitative Readiness Required (QR)
CMSC B313 Computer Graphics
Not offered 2023-24
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 MATH H215, or permission of instructor.
CMSC B317 Computer Animation
Not offered 2023-24
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. Pre-requisites: permission of instructor.
Writing Intensive
CMSC B325 Computational Linguistics
Not offered 2023-24
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 B151 , or CMSC H106/H107, and CMSC 231, or permission of instructor.
Counts Toward Neuroscience
CMSC B337 Algorithms: Design and Practice
Spring 2024
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 searching, sorting, search engine indexing, Page Rank, pattern recognition algorithms, decision trees, neural nets, graph algorithms, error correcting codes, data compression, public key cryptography, digital signatures, cryptographic hash functions, etc. Also includes measuring program performance, programing pitfalls, code optimization, etc. This writing intensive course also focuses on student-led class discussions and formal presentations. Prerequisites: CMSC B151 or H106 and B231.
Writing Intensive
CMSC B340 Analysis of Algorithms
Fall 2023
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/107, and CMSC B231; or permission of instructor.
Writing Intensive
Quantitative Readiness Required (QR)
CMSC B353 Software Engineering
Fall 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 B151 or CMSC H106/H107.
CMSC B355 Operating Systems
Spring 2024
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.
CMSC B373 Artificial Intelligence
Fall 2023
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/107, and CMSC B231.
Counts Toward Neuroscience
CMSC B383 Recent Advances in Computer Science
Section 001 (Spring 2023): Computational Text Analysis
Section 001 (Spring 2024): Database Systems in Practice
Fall 2023, Spring 2024
This is a topics course. Course content varies.
Current topic description: This course covers foundational concepts in computational text analysis. The course is designed for students interested in using text analysis methods to discover and measure concepts and phenomena in large amounts of text. Topics include core computational text analysis concepts, text-based machine learning, deep learning, basic statistical methods, and data collection. The course will culminate around research projects where groups of students will formulate and iteratively refine an empirical question; collect relevant textual data; implement appropriate methods of analysis; and interpret and present their results.
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 Data Science
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.
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.
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.
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 field site 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. This course does not fulfill any major/minor requirement.
Writing Intensive