Skip to main content
Department of Computer Science

Bachelor of Arts in Computer Science

Students on Summer 2021, Fall 2021, or Spring 2022 requirements CSCIBA

The Bachelor of Arts in Computer Science teaches the principles of computation and algorithms and allows students to develop programming and computing skills. Computer scientists, software engineers, programmers, and other computing professionals are experts on how technology works and how computing can address even the most complicated and intricate problems.

Requirements

The major requires at least 30 credit hours (39 with the Addenda Requirements), including the requirements listed below.
  1. Core Courses.
    1. Introduction to Computer Science. One (1) course:
      • CSCI-C 200 Introduction to Computers and Programming
      • CSCI-C 211 Introduction to Computer Science
      • CSCI-H 211 Introduction to Computer Science, Honors
    2. Software Systems. One (1) course:
      • CSCI-C 212 Introduction to Software Systems
      • CSCI-H 212 Introduction to Software Systems, Honors
    3. Discrete Structures. One (1) course:
      • CSCI-C 241 Discrete Structures for Computer Science
      • CSCI-H 241 Discrete Structures for Computer Science, Honors
    4. Data Structures. One (1) course:
      • CSCI-C 343 Data Structures
      • CSCI-H 343 Data Structures, Honors
  2. Advanced Electives. 15 credit hours:
    • CSCI-B 351 INTRODUCTION TO ARTIFICIAL INTELLIGENCE
    • CSCI-B 355 Autonomous Robotics
    • CSCI-B 355 AUTONOMOUS ROBOTICS
    • CSCI-B 361 INTRO ARTIFCL IN & COMP SIMUL
    • CSCI-B 363 CSCI-B 363 Bioinformatics Algorithms
    • CSCI-B 363 BIOINFORMATICS ALGORITHMS
    • CSCI-B 365 Introduction to Data Analysis and Mining
    • CSCI-B 365 INTRODUCTION TO DATA ANALYSIS AND MINING
    • CSCI-B 392 Competitive Programming
    • CSCI-B 392 COMPETITIVE PROGRAMMING
    • CSCI-B 401 Fundamentals of Computing Theory
    • CSCI-B 401 FUNDAMENTALS OF COMPUTING THEORY
    • CSCI-B 403 Introduction to Algorithm Design and Analysis
    • CSCI-B 403 INTRODUCTION TO ALGORITHM DESIGN AND ANALYSIS
    • CSCI-B 430 Security for Networked Systems
    • CSCI-B 430 SECURITY FOR NETWORKED SYSTEMS
    • CSCI-B 433 Systems & Protocol Security & Information Assurance
    • CSCI-B 433 SYSTEMS & PROTOCOL SECURITY & INFORMATION ASSURANCE
    • CSCI-B 438 FUNDAMENTALS OF COMPUTER NETWORKS
    • CSCI-B 441 Digital Design
    • CSCI-B 441 DIGITAL DESIGN
    • CSCI-B 443 INTRODUCTION TO COMPUTER ARCHITECTURE
    • CSCI-B 443 Introduction to Computer Architecture
    • CSCI-B 453 GAME DEVELOPMENT
    • CSCI-B 455 Principles of Machine Learning
    • CSCI-B 455 PRINCIPLES OF MACHINE LEARNING
    • CSCI-B 456 Image Processing
    • CSCI-B 456 IMAGE PROCESSING
    • CSCI-B 457 Introduction to Computer Vision
    • CSCI-B 457 INTRODUCTION TO COMPUTER VISION
    • CSCI-B 461 DATABASE CONCEPTS
    • CSCI-B 461 Database Concepts
    • CSCI-B 471 NUMERICAL ANALYSIS I
    • CSCI-B 472 NUMERICAL ANALYSIS II
    • CSCI-B 481 INTERACTIVE GRAPHICS
    • CSCI-B 481 Interactive Graphics
    • CSCI-B 490 SEMINAR IN COMPUTER SCIENCE
    • CSCI-B 490 Seminar in Computer Science
    • CSCI-C 301 FORTRAN PROGRAMMING
    • CSCI-C 302 PASCAL PROGRAMMING
    • CSCI-C 303 COBOL PROGRAMMING
    • CSCI-C 304 C PROGRAMMING
    • CSCI-C 306 OBJECT ORIENTED PROGRAMMING
    • CSCI-C 307 APPLIED PROGRAMMING TECHNIQUES
    • CSCI-C 308 SYSTEM ANALYSIS AND DESIGN
    • CSCI-C 311 Programming Languages
    • CSCI-C 311 PROGRAMMING LANGUAGES
    • CSCI-C 322 Object-Oriented Software Methods
    • CSCI-C 322 OBJECT-ORIENTED SOFTWARE METHODS
    • CSCI-C 323 Mobile App Development
    • CSCI-C 323 MOBILE APP DEVELOPMENT
    • CSCI-C 335 Computer Structures
    • CSCI-C 335 COMPUTER STRUCTURES
    • CSCI-C 341 FUNDAMENTALS OF COMPUTING THEORY
    • CSCI-C 343 Data Structures
    • CSCI-C 343 DATA STRUCTURES
    • CSCI-C 390 INDIVIDUAL PROGRAMMING LAB
    • CSCI-C 391 PROJECT IN PROFESSIONAL PRACTICE
    • CSCI-C 422 DIGITAL HARDWARE DESIGN II
    • CSCI-C 428 COMPUTER ARCHITECTURE
    • CSCI-C 431 ASSEMBLERS AND COMPILERS 1
    • CSCI-C 432 ASSEMBLERS AND COMPILERS 2
    • CSCI-C 435 OPERATING SYSTEMS 1
    • CSCI-C 436 OPERATING SYSTEMS 2
    • CSCI-C 445 INFORMATION SYSTEMS I
    • CSCI-C 446 INFORMATION SYSTEMS II
    • CSCI-C 451 AUTOMATA AND FORMAL GRAMMARS
    • CSCI-C 452 THEORY OF COMPUTABILITY
    • CSCI-C 455 ANALYSIS OF ALGORITHMS I
    • CSCI-C 460 SENIOR PROJECT I
    • CSCI-C 463 ARTIFICIAL INTELLIGENCE I
    • CSCI-C 464 ARTIFICIAL INTELLIGENCE II
    • CSCI-C 470 SENIOR PROJECT II
    • CSCI-C 482 IMAGE SYNTHESIS
    • CSCI-C 490 SEMINAR IN COMPUTER SCIENCE
    • CSCI-H 311 Programming Languages, Honors
    • CSCI-H 311 PROGRAMMING LANGUAGES HONORS
    • CSCI-H 335 Computer Structures, Honors
    • CSCI-H 335 COMPUTER STRUCTURES HONORS
    • CSCI-H 343 Data Structures, Honors
    • CSCI-H 343 DATA STRUCTURES, HONORS
    • CSCI-H 498 Undergraduate Honors Seminar
    • CSCI-H 498 UNDERGRADUATE HONORS SEMINAR
    • CSCI-P 415 Introduction to Verification
    • CSCI-P 415 INTRODUCTION TO VERIFICATION
    • CSCI-P 423 Compilers
    • CSCI-P 423 COMPILERS
    • CSCI-P 424 Advanced Functional Programming
    • CSCI-P 424 ADVANCED FUNCTIONAL PROGRAMMING
    • CSCI-P 434 Distributed Systems
    • CSCI-P 434 DISTRIBUTED SYSTEMS
    • CSCI-P 436 Introduction to Operating Systems
    • CSCI-P 436 INTRODUCTION TO OPERATING SYSTEMS
    • CSCI-P 438 Introduction to Computer Networks
    • CSCI-P 438 INTRODUCTION TO COMPUTER NETWORKS
    • CSCI-P 442 Digital Systems
    • CSCI-P 442 DIGITAL SYSTEMS
    • CSCI-P 462 Database Application Design and Implementation
    • CSCI-P 462 DATABASE APPLICATION DESIGN AND IMPLEMENTATION
    • CSCI-P 465 Software Engineering for Information Systems I
    • CSCI-P 465 SOFTWARE ENGINEERING FOR INFORMATION SYSTEMS I
    • CSCI-P 466 Software Engineering for Information Systems II
    • CSCI-P 466 SOFTWARE ENGINEERING FOR INFORMATION SYSTEMS II
    • CSCI-Y 331 DIGITAL SYSTEMS
    • CSCI-Y 390 Undergraduate Independent Study
    • CSCI-Y 390 UNDERGRADUATE INDEPENDENT STUDY
    • CSCI-Y 391 Undergraduate Independent System Development
    • CSCI-Y 391 UNDERGRADUATE INDEPENDENT SYSTEM DEVELOPMENT
    • CSCI-Y 395 Career Development for CSCI Majors
    • CSCI-Y 395 CAREER DEVELOPMENT FOR CSCI MAJORS
    • CSCI-Y 399 Project in Professional Practice
    • CSCI-Y 399 PROJECT IN PROFESSIONAL PRACTICE
    • CSCI-Y 499 Honors Research
    • CSCI-Y 499 HONORS RESEARCH
    • INFO-H 494 DESIGN AND DEVELOPMENT OF AN INFORMATION SYSTEM
    • INFO-H 495 DESIGN AND DEVELOPMENT OF AN INFORMATION SYSTEMS
    • INFO-I 494 DESIGN AND IMPLEMENTATION OF AN INFORMATION SYSTEM (PART I)
    • INFO-I 495 DESIGN AND DEVELOPMENT OF AN INFORMATION SYSTEM
    • MATH-M 471 Numerical Analysis I
    • MATH-M 472 Numerical Analysis II
  3. Addenda Requirements*.
    1. Mathematical Foundations. One (1) course:
      • MATH-M 118 Finite Mathematics
      • MATH-M 211 Calculus I
      • MATH-S 118 Honors Finite Mathematics
      • MATH-S 211 Honors Calculus I
      • MATH-V 118 Finite Mathematics with Applications
    2. Mathematical Science Elective. One (1) course:
      • Additional course from the Mathematical Foundations list
      • MATH-M 212 Calculus II
      • MATH-M 213
      • MATH-M 301 Linear Algebra and Applications
      • MATH-M 303 Linear Algebra for Undergraduates
      • MATH-M 311 Calculus III
      • MATH-M 312 Calculus IV
      • MATH-M 343 Introduction to Differential Equations with Applications I
      • MATH-M 371 Elementary Computational Methods
      • MATH-M 384 Logic
      • MATH-M 391 Introduction to Mathematical Reasoning
      • MATH-M 405 Number Theory
      • MATH-M 409 Linear Transformations
      • MATH-S 212 Honors Calculus II
      • MATH-S 311 Honors Course in Calculus III
      • MATH-S 312 Honors Course in Calculus IV
      • MATH-S 343 Honors Course in Differential Equations
      • PHIL-P 250 Introductory Symbolic Logic
      • PHIL-P 251 Intermediate Symbolic Logic
      • PHIL-P 350 Logic of Sets
      • PHIL-P 352 Logic and Philosophy
    3. Additional Elective. One (1) course:
      • Additional course from the Mathematical Science Elective list
      • CSCI-B 401 Fundamentals of Computing Theory (Note: This course will count toward the Major Hours and Major GPA requirements)
      • CSCI-B 403 Introduction to Algorithm Design and Analysis (Note: This course will count toward the Major Hours and Major GPA requirements)
      • CSCI-P 415 Introduction to Verification (Note: This course will count toward the Major Hours and Major GPA requirements)
      • ECON-E 370 Statistical Analysis for Business and Economics
      • MATH-M 365 Introduction to Probability and Statistics
      • STAT-S 320 Introduction to Statistics
  4. Major GPA, Hours, and Minimum Grade Requirements.
    1. Major GPA. A GPA of at least 2.000 for all courses taken in the major—including those where a grade lower than C- is earned—is required.
    2. Major Minimum Grade. Except for the GPA requirement, a grade of C- or higher is required for a course to count toward a requirement in the major.
    3. Major Upper Division Credit Hours. At least 18 credit hours in the major must be completed at the 300–499 level.
    4. Major Residency. At least 18 credit hours in the major must be completed in courses taken through the Indiana University Bloomington campus or an IU-administered or IU co-sponsored Overseas Study program.
    5. College Breadth. At least 58 credit hours must be completed in courses from College of Arts and Sciences disciplines outside of the major area.

Major Area Courses

Unless otherwise noted below, the following courses are considered in the academic program and will count toward academic program requirements as appropriate:

  • Any course at the 100–499 level with the CSCI subject area prefix—as well as any other subject areas that are deemed functionally equivalent
  • Any course contained on the course lists for the academic program requirements at the time the course is taken—as well as any other courses that are deemed functionally equivalent—except for those listed only under Addenda Requirements
  • Any course directed to a non-Addenda requirement through an approved exception
Exclusions

The following courses cannot be applied toward major requirements or the College Breadth requirement:

  • CSCI-C 101
  • CSCI-C 308 SYSTEM ANALYSIS AND DESIGN
  • CSCI-C 405
  • CSCI-A 106 INTRODUCTION TO COMPUTING
  • CSCI-A 107 ADVANCED MICROCOMPUTING
  • CSCI-A 110 INTRODUCTION TO COMPUTERS AND COMPUTING
  • CSCI-A 111 A SURVEY OF COMPUTERS AND COMPUTING
  • CSCI-A 112 PROGRAMMING CONCEPTS
  • CSCI-A 113 DATA ANALYSIS USING SPREADSHEETS
  • CSCI-A 114 INTRODUCTION TO DATABASES
  • CSCI-A 116 MULTIMEDIA COMMUNICATIONS
  • CSCI-A 148 WORKING THE WORLD WIDE WEB
  • CSCI-A 200 COMPUTER LITERACY
  • CSCI-A 201 INTRODUCTION TO PROGRAMMING I
  • CSCI-A 202 INTRODUCTION TO PROGRAMMING II
  • CSCI-A 216 DIGITAL MULTIMEDIA CONCEPTS AND TECHNOLOGIES
  • CSCI-A 247 NETWORK TECHNOLOGIES AND ADMINISTRATION
  • CSCI-A 290 TOOLS FOR COMPUTING
  • CSCI-A 301 FORTRAN PROGRAMMING
  • CSCI-A 304 INTRODUCTORY C++ PROGRAMMING
  • CSCI-A 306 OBJECT-ORIENTED PROGRAMMING IN C++
  • CSCI-A 310 PROBLEM SOLVING USING DATA
  • CSCI-A 321 COMPUTING TOOLS FOR SCIENTIFIC RESEARCH
  • CSCI-A 338 NETWORK TECHNOLOGIES AND SYSTEMS ADMINISTRATION
  • CSCI-A 346 USER-INTERFACE PROGRAMMING
  • CSCI-A 348 MASTERING THE WORLD WIDE WEB
Restrictions

The following restrictions apply to the minimum credit hours required in the major:

  • No more than 1 credit hour of either of the following may be counted toward the major:
    • CSCI-H 498 Undergraduate Honors Seminar
    • CSCI-Y 395 Career Development for CSCI Majors

This program of study cannot be combined with the following:

  • [Name unavailable] (CSCIMIN)

Exceptions to and substitutions for major requirements may be made with the approval of the unit's Director of Undergraduate Studies, subject to final approval by the College of Arts and Sciences.