Bachelors Curriculum - Admitted Fall 2008 B.S. in Computer Science Curriculum Requirements (binding on students admitted Fall, 2008) Revised June, 2008The B.S. curriculum in Computer Science requires a minimum of 360 units and can be divided into the following sections:Computer ScienceMathematics/ProbabilityEngineering and Natural SciencesHumanities and ArtsRequired MinorComputing @ Carnegie MellonFree Electives Computer Science 15-111 Intermediate/Advanced Programming (students with no prior programming experience take 15-100 Introductory/Intermediate Programming and 15-111)15-123 Effective Programming in C and UNIX15-128 Freshman Immigration Course15-211 Fundamental Data Structures and Algorithms15-212 Principles of Programming15-213 Introduction to Computer Systems15-251 Great Theoretical Ideas in Computer Science15-451 Algorithm Design and Analysisone Communications course:15-221 Technical Communication for Computer Scientistsone Applications elective:15-323 Music Systems and Information Processing15-381 Artificial Intelligence: Representation and Problem Solving15-384 Robotic Manipulation15-385 Computer Vision15-413 Software Engineering15-415 Database Applications15-421 Web Commerce, Security and Privacy15-437 Web Application Development15-462 Computer Graphics15-463 Computational Photography15-482 Human Language Technologies15-490 Computational Neuroscience10-601 Artificial Intelligence: Machine Learning16-362 Mobile Robot Programming Laboratoryothers as appropriateone Programming/Logic elective:15-312 Foundations of Programming Languages15-317 Constructive Logic17-651 Models of Software Systems21-300 Basic Logic80-311 Computability and Incompletenessothers as appropriateone Systems elective:15-410 Operating System Design and Implementation15-411 Compiler Design15-418 Parallel Computer Architecture and Programming15-440 Distributed Systems15-441 Computer Networks18-447 Introduction to Computer Architectureothers as appropriateone Theory elective:15-354 Computational Discrete Mathematics15-355 Modern Computer Algebra15-414 Bug Catching: Automated Program Verification and Testing15-453 Formal Languages and Automata21-301 Combinatorics21-484 Graph Theoryothers as appropriatetwo Computer Science electives Mathematics/Probability21-120 Differential & Integral Calculus21-122 Integration, Differential Equations, and Approximation21-127 Concepts of Mathematics21-241 Matrix Algebra (or 21-341 Linear Algebra)one of the following Probability courses:15-359 Probability and Computing21-325 Probability36-217 Probability Theory and Random Processes36-225 Introduction to Probability and Statistics I36-625 Probability and Mathematical Statistics I Engineering and Natural SciencesFour engineering or science courses are required, of which at least one must have a laboratory component and at least two must be from the same department. At present, courses meeting the lab requirement are:09-101 Introduction to Experimental Chemistry (this 3 unit lab together with 09-105, Introduction to Modern Chemistry, satisfies the lab requirement)15-321 Research Methods for Experimental Computer Science27-100 Engineering the Materials of the Future33-104 Experimental Physics85-310 Research Methods in Cognitive PsychologyThe following courses cannot be used to satisfy the Engineering and Natural Sciences requirement:09-103 Atoms, Molecules, and Chemical Change09-104 Fundamental Aspects of Organic Chemistry and Biochemistry12-090 Technology and the Environment18-202 Mathematical Foundations of Electrical Engineering19-211 Ethics and Policy Issues in Computing33-100 Basic Experimental Physics33-115 Energy and Environmental Issues33-124 Introduction to Astronomy39-100 What is Engineering?39-200 Business for Engineers Humanities and ArtsAll candidates for the bachelor's degree must complete a minimum of 63 units offered by the College of Humanities & Social Sciences and/or the College of Fine Arts. The humanities and arts (or general education) courses for SCS students are to meet the distribution requirements found on the SCS Humanities and Arts page. Required MinorA sequence of courses prescribed by the requirements of the particular department. Completion of a second major (or double degree) also satisfies this requirement. If permitted by the minor or second major department, courses taken in satisfaction for the minor or second major may also count toward any category other than Computer Science. More information can be found on the minor requirement page. Computing @ Carnegie MellonThe following course is required of all students to familiarize them with the campus computing environment:99-10x Computing @ Carnegie MellonFree ElectivesA free elective is any Carnegie Mellon course. However, a maximum of nine units of Physical Education and/or Military Science (ROTC) and/or Student-Led (StuCo) courses may be used toward fulfilling graduation requirements. Maintained by Catharine Fichtner, CS Undergraduate Program Administrator.