Bachelor's Curriculum - Admitted 2018

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 updated November, 2018(requirements below are binding on students admitted Fall 2018, students admitted prior to Fall 2018 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 Programming
  • 15-151: Mathematical Foundations for Computer Science***
  • 15-210: Parallel and Sequential Data Structures and Algorithms
  • 15-213: Introduction to Computer Systems
  • 15-251: Great Ideas in Theoretical Computer Science
  • 15-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.***Transfer students may use 21-127 or 21-128, and CS students needing to repeat 15-151 may use 21-127 if 15-151 is not offered.Technical Communications Course (choose one)

  • 15-300 Research and Innovation in Computer Science
  • 17-200 Ethics and Policy Issues in Computing
  • 76-270 Writing for the Professions

Logics & Languages Elective (choose one)This category focuses on rigorous, formal reasoning about programs or systems, rooted in their logical foundations.

  • 15-312: Foundations of Programming Languages
  • 15-314: Programming Language Semantics
  • 15-316: Software Foundations of Security and Privacy
  • 15-317: Constructive Logic
  • 15-414: Bug Catching: Automated Program Verification and Testing
  • 15-424: Logical Foundations of Cyber-Physical Systems
  • 17-355: Program Analysis
  • 80-413: Category Theory
  • Others as designated by the CS Undergraduate Program

Software Systems Elective (choose one)This category addresses how properties of modern hardware influence the design and implementation of efficient, intuitive and secure systems with substantial programming project work.

  • 15-410: Operating System Design and Implementation
  • 15-411: Compiler Design
  • 15-418: Parallel Computer Architecture and Programming
  • 15-440: Distributed Systems
  • 15-441: Computer Networks
  • 15-445: Database Systems
  • Others as designated by the CS Undergraduate Program

Artificial Intelligence Elective (choose one)This category explores the multiple facets of intelligent machines focusing on perception, planning, learning, optimization and coordination algorithms, while delving into their theory and practice.

  • 10-315: Introduction to Machine Learning (10-601 is no longer allowed)
  • 11-411: Natural Language Processing
  • 15-381: Artificial Intelligence: Representation and Problem Solving
  • 15-386: Neural Computation
  • 16-384: Robot Kinematics and Dynamics
  • 16-385: Computer Vision
  • Others as designated by the CS Undergraduate Program

Domains Elective (choose one)This category represents courses that act as portals into additional important domains of computing with available coursework that can follow for additional depth.

  • 02-251: Great Ideas in Computational Biology
  • 05-391: Designing Human-Centered Software
  • 15-322: Introduction to Computer Music
  • 15-330: Introduction to Computer Security
  • 15-455: Undergraduate Computational Complexity
  • 15-462: Computer Graphics
  • 17-313: Foundations of Software Engineering
  • Others as designated by the CS Undergraduate Program

Computer Science Electives (choose two)Choose two courses from any SCS department or institute, usually at the 200-level or above. Departments and institutes include Computer Science (15-xxx), along with Computational Biology (02-xxx), Human-Computer Interaction (05-xxx), Machine Learning (10-xxx), Language Technologies (11-xxx), Robotics (16-xxx), and Software Research (17-xxx).NOTE: The following courses do NOT count as Computer Science electives: 02-201, 02-223, 02-261, 05-341, 15-351, 16-223, 17-200, 17-333, 17-354 (or any equivalent cross-listed courses to these courses). Some IDEATE courses and SCS graduate courses might not be allowed. Check with your academic advisor before taking any new SCS courses to determine eligibility.Mathematics & ProbabilityBesides 15-151 (Mathematical Foundations for Computer Science), four additional mathematics courses are required:

  • 21-120: Differential and Integral Calculus
  • 21-122: Integration and Approximation
  • One of the following Matrix Algebra courses: 21-241: Matrices and Linear Transformations, or21-242: Matrix Theory
  • One of the following Probability choices: 15-259: Probability and Computing, or21-325: Probability, or36-218: Probability Theory for Computer Scientists, or 36-225: Introduction to Probability Theory and 36-226: Introduction to Statistical Inference

Science and EngineeringFour courses in the domain of science and engineering are required, of which at least one must have a laboratory component and at least two must be from the same department. These courses typically come from the Mellon College of Science and the College of Engineering (CIT). Courses with a primary focus on programming, computation or mathematics are not acceptable for science or engineering courses.Non-lab courses that can be taken by Computer Science majors to satisfy this requirement are given below. (Consult your academic advisor for additional choices available each semester.)

  • 02-223: Personalized Medicine: Understanding Your Own Genome(can be paired with a course in Biology 03-xxx for two courses in one department)
  • 03-121: Modern Biology
  • 03-125: Evolution
  • 03-132: Basic Science to Modern Medicine
  • 06-100: Introduction to Chemical Engineering
  • 06-221: Thermodynamics
  • 09-105: Introduction to Modern Chemistry I
  • 09-106: Modern Chemistry II
  • 09-217: Organic Chemistry I
  • 09-218: Organic Chemistry II
  • 09-225: Climate Change: Chemistry, Physics and Planetary Science
  • 12-100: Introduction to Civil and Environmental Engineering
  • 12-201: Geology
  • 18-100: Introduction to Electrical and Computer Engineering
  • 18-220: Electronic Devices and Analog Circuits
  • 18-240: Structure and Design of Digital Systems
  • 24-101: Fundamentals of Mechanical Engineering
  • 24-231: Fluid Mechanics
  • 24-261: Statics
  • 24-351: Dynamics
  • 33-114: Physics of Musical Sound
  • 33-120: Science and Science Fiction
  • 33-121: Physics I for Science Students (or 33-151 Matter and Interactions I)
  • 33-142: Physics II for Engineering and Physics Students (or 33-152 Matter and Interactions II)
  • 33-224: Stars, Galaxies and the Universe
  • 42-101: Introduction to Biomedical Engineering
  • 42-341: Introduction to Biomechanics
  • 85-219: Biological Foundations of Behavior(can be paired with a course in Biology 03-xxx for two courses in one department)

At present, courses meeting the lab requirement include:

  • 02-261: Quantitative Cell and Molecular Biology Laboratory(can be paired with a course in Biology 03-xxx for two courses in one department)
  • 03-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 and one of the four required science/engineering courses, 12 units total)
  • 09-221: Laboratory I: Introduction to Chemical Analysis
  • 27-100: Engineering the Materials of the Future
  • 33-104: Experimental Physics
  • 33-228: Electronics I
  • 42-203: Biomedical Engineering Laboratory (crosslisted with 03-206)
  • 85-310: Research Methods in Cognitive Psychology
  • 85-314: Cognitive Neuroscience Research Methods

The following courses can not be used to satisfy the Science and Engineering requirement:

  • 03-511: Computational Molecular Biology and Genomics   
  • 03-512: Computational Methods for Biological Modeling and Simulation
  • 06-262: Mathematical Methods of Chemical Engineering   
  • 09-103: Atoms, Molecules and Chemical Change  
  • 09-108: The Illusion and Magic of Food
  • 09-109: Kitchen Chemistry Sessions (nor 09-209)
  • 09-231: Mathematical Methods for Chemists    
  • 12-215: Introduction to Professional Writing in CEE
  • 12-271: Introduction to Computer Application in Civil & Environmental Engineering
  • 18-090: Digital Media Interactions: Signal Processing for the Arts
  • 18-099: Mobile App Design and Development
  • 18-200: Emerging Trends in Electrical and Computer Engineering
  • 18-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 Cryptography
  • 18-540: Rapid Prototyping of Computer Systems   
  • 19-101: Introduction to Engineering and Public Policy    
  • 19-211: Ethics and Policy Issues in Computing 
  • 19-301: Decision Making Methods for Engineers and Scientists
  • 19-325: Technology and Policy Writing for Lay Audiences
  • 19-355: Special Topics: Cryptocurrencies, Blockchains and Applications
  • 19-402: Telecommunications Technology, Policy & Management    
  • 19-403: Policies of Wireless Systems and the Internet  
  • 19-411: Global Competitiveness: Firms, Nations and Technological Change
  • 19-432: Bitcoin and Cryptocurrencies
  • 27-410: Computational Techniques in Engineering 
  • 33-100: Basic Experimental Physics
  • 33-115: Physics for Future Presidents 
  • 33-124: Introduction to Astronomy
  • 33-232: Mathematical Methods of Physics 
  • 39-100: Special Topics: What Is Engineering?
  • 39-200: Business for Engineers
  • 42-201: Professional Issues in Biomedical Engineering

All Electrical and Computer Engineering graduate courses [18-6xx and above] cannot be used for the science/engineering requirements. In general, any MCS or CIT courses that are cross-listed with SCS courses or have significant mathematical or computational content cannot be used for this requirement. Consult with a CS undergraduate advisor about any course to be used for the Science and Engineering requirement before registration.Humanities 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 Minor/ConcentrationStudents entering in 2018 and completing the bachelor's degree in Computer Science must complete either a minor outside of SCS or a concentration within SCS. A minor is a sequence of (typically 5-6) courses within a particular department to give students a core of a specific discipline but not an entire major of study. An SCS concentration is a sequence of (typically 4-5) courses within an SCS department to give students further depth in specific areas of research important to SCS. SCS concentrations are available only to SCS students and assume that these students have a significant core knowledge in Computer Science including 15-210, 15-213 and 15-251. Additional SCS Concentrations are being approved during the 2018-2019 academic year. Watch for announcements from your academic advisor or the Assistant Dean for Undergraduate Education when SCS concentrations are approved. Completion of an additional major (or dual degree) also satisfies this requirement.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.