Bachelors Curriculum - Admitted 2017

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, 2017

(requirements below are binding on students admitted Fall 2017, students admitted prior to Fall 2017 should refer to curriculum information under Current Students)

Computer Science
The 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.

Communications Course (choose one)

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

Algorithms & Complexity Elective (choose one)
This category explores the modeling and rigorous analysis of computational and mathematical algorithms and their inherent complexity in greater depth.

  • 15-354: Computational Discrete Mathematics
  • 15-355: Modern Computer Algebra
  • 15-455: Undergraduate Complexity Theory
  • 15-456: Computational Geometry
  • 21-301: Combinatorics
  • 21-484: Graph Theory
  • Others as designated by the CS Undergraduate Program

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: Foundations of Cyber-Physical Systems
  • 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
  • Others as designated by the CS Undergraduate Program

Applications Elective (choose one)
This category represents important branches of computer science represented in the School of Computer Science.

  • 02-250: Introduction to Computational Biology
  • 05-391: Designing Human-Centered Software
  • 10-401: Introduction to Machine Learning (or 10-601 Introduction to Machine Learning)
  • 11-411: Natural Language Processing
  • 15-322: Introduction to Computer Music (or 15-323 Computer Music Systems & Information Processing)
  • 15-381: Artificial Intelligence: Representation and Problem Solving
  • 15-415: Database Applications
  • 15-462: Computer Graphics
  • 16-384: Robot Kinematics and Dynamics
  • 16-385: Computer Vision
  • 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, 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-201, 02-223, 02-261, 05-341, 08-200, 08-532, 08-533, 15-351, 16-223 (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 & Probability
Besides 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
    21-242: Matrix Theory
  • One of the following Probability courses:
    15-359: Probability and Computing;
    21-325: Probability;
    36-3xx: Probability and Mathematical Statistics (to be offered starting in the 2018-19 academic year; students entering in 2017 may take 36-217 through Spring 2018)

Science and Engineering
Four 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-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 Arts
All 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/Concentration
A sequence of courses proscribed by the requirements of the particular department or program. Completion of an additional major (or dual degree) also satisfies this requirement. In general, courses taken in satisfaction of the minor or additional major may also count toward any general education category in the CS major (i.e. courses outside of the Computer Science and Mathematics requirements). Double counting toward Computer Science and Mathematics courses in the CS major is strictly limited and depends on the chosen minor (or additional major) Consult with a CS undergraduate advisor and an advisor from the department of the minor (or additional major) for specific restrictions on double counting. 

Computing @ Carnegie Mellon
All CMU students must take 99-10x Computing @ Carnegie Mellon.

Free Electives
A 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.