The Computer Science Major
Before undertaking an Upper College concentration and Senior Project in computer science, a student must moderate into computer science. By the time of moderation, a student in the program should have completed or should be enrolled in:
- This course introduces studentsto object-oriented design and programming through the design and implementation of mobile robot programs. The programs will enable the robot to move around the world, reacting to sensors such as obstacle detectors and a color camera. Students will learn how to move from an informal problem statement, through increasingly precise problem specifications, to design and implementation of a solution. Good programming habits will be emphasized. Prerequisite: any Introduction to Computing course, or permission of the instructor.
- Discrete mathematics includes those areas of mathematics that are essential to computer science, information theory, combinatorics, and genetics. This course emphasizes creative problem solving, linking language to logic, and learning to read and write proofs. The topics covered include propositional logic, predicate logic, inductive proof, sets, relations, functions, introductory combinatorics and discrete probability. Applications drawn from computation will motivate most topics.
- Prerequisites: Math 141 or programming experience.
- MATH 141: Calculus I
- CMSC 141: Introduction to Object-Oriented Programming or CMSC 143: Introduction to Object-Oriented Programming with Robots
- CMSC 145: Discrete Mathematics
- CMSC 201: Data Structures
By graduation, a student in the program must take:
- CMSC 275, Statistics for Computing or BIO 244: BioStatistics or PSY 203: Statistics for Psychology or ECON 229: Introduction to Econometrics
- CMSC 301: Algorithms
This course covers design and analysis of correct and efficient computer algorithms. Topics include sorting, greedy algorithms, divide-and-conquer algorithms, dynamic programming algorithms, and graph algorithms. Advanced topics in algorithms may be selected from specialized areas of the mathematical and empirical sciences.
Prerequisites: Computer Science 201 and Mathematics 231 or 235.
- CMSC 305: Design of Programming Languages
- CMSC 225 Computer Architecture, CMSC 226: Principles of Computing Systems (IN ADDITION TO) CMSC 325 Multiprocessor Architecture, CMSC 326 Operating Systems, CMSC 328 Embedded Operating Systems, or CMSC 335: Computer Networks
- Two or more computer science electives, at least one numbered 300 or above
- A Senior Project
Students in the Computer Science Program are expected to follow the standard divisional procedure for
Moderation, and to fulfill the collegewide distribution and
First-Year Seminar requirements.