Bachelors Curriculum - Admitted 2014, 2015 & 2016 Students pursuing a B.S. in Computer Science must take a minimum of 360 units in the following categories: Computer Science, Mathematics/Probability, Engineering and Natural Sciences, Humanities and Arts, Required Minor, Computing @ Carnegie Mellon and Free Electives.Curriculum Requirements Revised November, 2018(requirements below are binding on students admitted Fall 2014, 2015 & 2016, students admitted prior to Fall 2014 should refer to curriculum information under Current Students)Computer ScienceThe following computer science courses are required:15-128: Freshman Immigration Course*15-122: Principles of Imperative Computation**15-150: Principles of Functional Programming15-210: Parallel and Sequential Data Structures and Algorithms15-213: Introduction to Computer Systems15-251: Great Theoretical Ideas in Computer Science15-451: Algorithm Design and Analysis*Students with no prior experience with software tools (editors, scripting, code management, etc.) are encouraged to take 15-131: Great Practical Ideas in Computer Science concurrently with this course.**Students with no prior programming experience take 15-112: Fundamentals of Programming before 15-122.Communications Course (choose one)15-221 Technical Communication for Computer Scientists (retired)15-300 Research and Innovation in Computer Science76-270 Writing for the Professions17-200 Ethics and Policy Issues in Computing (approved, old number 08-200)Algorithms & Complexity Elective (choose one)15-354: Computational Discrete Mathematics15-355: Modern Computer Algebra15-453: Formal Languages, Automata, and Computability15-455: Undergraduate Complexity Theory15-456: Computational Geometry15-458: Discrete Differential Geometry (approved as a substitute)21-301: Combinatorics21-484: Graph TheoryOthers as designated by the CS Undergraduate ProgramApplications Elective (choose one)02-510: Computational Genomics05-391: Designing Human-Centered Software10-401: Introduction to Machine Learning (or 10-315)11-411: Natural Language Processing15-322: Introduction to Computer Music or 15-323 Computer Music Systems & Information Processing15-381: Artificial Intelligence: Representation and Problem Solving15-415: Database Applications15-462: Computer Graphics16-384: Robot Kinematics and Dynamics16-385: Computer Vision17-313: Foundations of Software Engineering (new course number)Others as designated by the CS Undergraduate ProgramLogics & Languages Elective (choose one)15-312: Foundations of Programming Languages'15-314: Programming Language Semantics (approved as a substitute)15-316: Software Foundations of Security and Privacy (approved as a substitute)15-317: Constructive Logic15-414: Bug Catching: Automated Program Verification and Testing15-424: Foundations of Cyber-Physical Systems17-355: Program Analysis (approved as a substitute)21-300: Basic Logic80-310: Formal Logic80-311: Undecidability and Incompleteness80-413: Category Theory (approved as a substitute)Others as designated by the CS Undergraduate ProgramSoftware Systems Elective (choose one)15-410: Operating System Design and Implementation15-411: Compiler Design15-418: Parallel Computer Architecture and Programming15-440: Distributed Systems15-441: Computer Networks15-445: Database Systems (approved as a substitute)Others as designated by the CS Undergraduate ProgramComputer Science Electives (choose two)Choose two courses from any SCS department, usually at the 200-level or above. Departments include 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 the Robotics Institute (16-).NOTE: The following courses do NOT count as Computer Science electives: 02-223, 02-250, 02-261, 05-341, 08-200, 08-532, 08-533, 15-351 (or any equivalent cross-listed courses to these courses). Check with your academic advisor before taking any new SCS courses to determine eligibility.Mathematics & ProbabilityFive mathematics courses are required.21-120: Differential and Integral Calculus21-122: Integration and Approximation21-127: Concepts of MathematicsOne of the following Linear Algebra courses: 21-241: Matrices and Linear Transformations; 21-242: Matrix Theory; 21-341: Linear AlgebraOne of the following Probability courses: 15-359: Probability and Computing; 21-325: Probability; 36-217: Probability Theory and Random Processes; 36-225: Introduction to Probability TheoryEngineering & 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. Courses with a primary focus on programming, computation or mathematics are not acceptable for science or engineering courses.Courses meeting the lab requirement include: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 Psychology85-314: Cognitive Neuroscience Research MethodsThe 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: Personalized Medicine: Understanding 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-215 Introduction to Professional Writing in CEE12-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 EngineeringHumanities and ArtsAll candidates for a bachelor's degree must complete a minimum of 63 units offered by the Dietrich 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 MinorAll CS undergraduates must complete a minor. 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 MellonAll CMU students must take 99-10x Computing @ Carnegie Mellon.Free 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.