Bachelors Curriculum - Admitted Fall 2012 and 2013 B.S. in Computer Science Curriculum Curriculum Requirements (binding on students admitted Fall, 2012 & Fall, 2013) Revised April, 2016The 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-128 Freshman Immigration Course15-122 Principles of Imperative Computation (students with no prior programming experience take 15-112 Fundamentals of Programming before 15-122)15-150 Principles of Functional Programming15-151 Mathematical Foundations of Computer Science (non-majors take 21-127 Concepts of Mathematics)15-210 Parallel and Sequential Data Structures and Algorithms15-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 Scientists15-300 Research and Innovation in Computer Science76-270 Writing for the Professionsone Algorithms & Complexity elective:15-354 Computational Discrete Mathematics15-355 Modern Computer Algebra15-453 Formal Languages, Automata, and Computability15-455 Undergraduate Complexity Theory15-456 Computational Geometry21-301 Combinatorics21-484 Graph Theoryothers as designatedone Applications elective:02-450 Automation of Biological Research05-391 Designing Human-Centered Software05-431 Software Structures for User Interfaces (must be taken with 05-433 - counts as one course)10-601 Machine Learning11-411 Natural Language Processing15-313 Foundations of Software Engineering15-322/15-323 Intro to Computer Music/Computer Music Systems & Info Processing15-381 Artificial Intelligence: Representation and Problem Solving15-415 Database Applications15-462 Computer Graphics16-384 Robot Kinematics and Dynamics16-385 Computer Visionothers as designatedone Logics & Languages elective:15-312 Foundations of Programming Languages15-317 Constructive Logic15-414 Bug Catching: Automated Program Verification and Testing15-424 Foundations of Cyber-Physical Systems21-300 Basic Logic80-310 Formal Logic80-311 Computability and Incompletenessothers as designatedone Software Systems elective:15-410 Operating System Design and Implementation15-411 Compiler Design15-418 Parallel Computer Architecture and Programming15-440 Distributed Systems15-441 Computer Networksothers as designatedtwo Computer Science electives (can be from any SCS department; usually 200-level or above): Computer Science [15-xxx], Lane Center for Computational Biology [02-], Human Computer Interaction Institute [05-], Institute for Software Research [08-,17-], Machine Learning [10-], Language Technologies Institute [11-], and Robotics Institute [16-])(NOTE: The following Lane Center courses do NOT count as Computer Science electives: 02-223, 02-250, 02-261. These courses can count toward the Science and Engineering requirements described below.) Mathematics21-120 Differential & Integral Calculus21-122 Integration, Differential Equations, and Approximationone of the following Linear Algebra courses:21-241 Matrices and Linear Transformations21-242 Matrix Theory21-341 Linear Algebraone of the following Probability courses:15-359 Probability and Computing21-325 Probability36-217 Probability Theory and Random Processes36-225 Introduction to Probability and Statistics I Science and EngineeringFour 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. Courses with a primary focus on programming, computation or mathematics are not acceptable for science or engineering courses.At present, courses meeting the lab requirement are:02-261 Quantitative Cell and Molecular Biology Laboratory03-124 Modern Biology Laboratory (coreq 03-121)09-101 Introduction to Experimental Chemistry (this 3 unit lab together with 09-105, Introduction to Modern Chemistry, satisfies the lab requirement)09-221 Laboratory I: Introduction to Chemical Analysis15-321 Research Methods for Experimental Computer Science27-100 Engineering the Materials of the Future33-104 Experimental Physics33-228 Electronics I42-203 Biomedical Engineering Laboratory (crosslisted with 03-206)85-310 Research Methods in Cognitive PsychologyThe following courses from the Lane Center can be used to satisfy the Science and Engineering requirement and can be paired with a Biology [03-] course for two courses from one department:02-223 How To Analyze Your Own Genome02-250 Introduction to Computational Biology (or 02-251 + 02-252)02-261 Quantitative Cell and Molecular Biology Laboratory (also meets the lab requirement)The following courses cannot be used to satisfy the Science and Engineering requirement:03-511 Computational Molecular Biology and Genomics 03-512 Computational Methods for Biological Modeling and Simulation06-262 Mathematical Methods of Chemical Engineering 09-103 Atoms, Molecules and Chemical Change 09-104 Fundamental Aspects of Organic Chemistry and Biochemistry09-108 The Illusion and Magic of Food09-109 Kitchen Chemistry Sessions (nor 09-209)09-231 Mathematical Methods for Chemists 12-271 Introduction to Computer Application in Civil & Environmental Engineering18-090 Digital Media Interactions: Signal Processing for the Arts18-099 Mobile App Design and Development18-200 Emerging Trends in Electrical and Computer Engineering18-202 Mathematical Foundations of Electrical Engineering 18-213 Introduction to Computer Systems 18-345 Introduction to Telecommunication Networks 18-411 Computational Techniques in Engineering 18-482 Telecommunications, Technology Policy & Management 18-487 Introduction to Computer & Network Security & Applied Cryptography18-540 Rapid Prototyping of Computer Systems 19-101 Introduction to Engineering and Public Policy 19-211 Ethics and Policy Issues in Computing 19-350 SP TP: Research Methods & Statistics for Engineering & Public Policy Analysis 19-402 Telecommunications Technology, Policy & Management 19-403 Policies of Wireless Systems and the Internet 19-411 Global Competitiveness: Firms, Nations and Technological Change19-448 Science, Technology & Ethics27-410 Computational Techniques in Engineering 33-100 Basic Experimental Physics33-115 Physics for Future Presidents 33-124 Introduction to Astronomy33-232 Mathematical Methods of Physics 39-100 Special Topics: What Is Engineering?39-200 Business for Engineers42-201 Professional Issues in Biomedical Engineering 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 required courses in 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.