CSCI Core Curriculum

Computer Science Core

Flow chart of CSCI prerequisites (information contained in the flowchart follows)
  • For entry into the computer science program, students must first take CSCI 141, then CSCI 145.
  • They must then take CSCI 301, 241, and 247 in any order.
  • After completing CSCI 241 alone, students can take CSCI 330 and/or 345.
  • After completing CSCI 301 and 241, students are able to take CSCI 305, and then 405.
  • After completing CSCI 241 and 247, students are able to take CSCI 347, and then 447 and/or 367.
  • A separate set of courses all students must complete are the senior project series, CSCI 491, 492, then 493 and 495.

Computer Science Electives

16 credits of electives from this list, with no more than 4 coming from independent study or research

  • CISS 346 Secure Software Development (CISS 247 or CSCI 247)
  • CISS 421 Computer Forensics (CISS 461 or CSCI 461)
  • CSCI 321 Game Programming (CSCI 241)
  • CSCI 342 Web Scripting (CSCI 330)
  • CSCI 351 Windows Software Development (CSCI 345)
  • CSCI 372 Robotics: Applications of Artificial Intelligence (Permission of Instructor)
  • CSCI 380 Numerical Computations (CSCI 241, MATH 204)
  • CSCI 400 Independent Study (Permission of Instructor)
  • CSCI 401 Automata and Formal Language Theory (CSCI 301)
  • CSCI 402 Artifical Intelligence (CSCI 301)
  • CSCI 404 Natural Language Processing (CSCI 301)
  • CSCI 410 Programming Languages (CSCI 301)
  • CSCI 412 Mobile Device Programming (CSCI 330, CSCI 367)
  • CSCI 415 Parallel Computation (CSCI 305, CSCI 347, CSCI 367)
  • CSCI 424 Social Network Analysis (CSCI 241, MATH 204, MATH 341)
  • CSCI 426 Principles of Human-Centered Technology Design (CSCI major status or permission of instructor)
  • CSCI 430 Database Theory (CSCI 301, CSCI 330)
  • CSCI 436 Technology for Social Good (CSCI major status or permission of instructor)
  • CSCI 442 Advanced Web Programming in Java (CSCI 342, CSCI 351 recommended)
  • CSCI 450 Compilers (CSCI 301)
  • CSCI 461 Computer Security (CSCI 301, CSCI 367 recommended)
  • CSCI 462 OS Device Drivers (CSCI 460)
  • CSCI 463 Cyber Defense (Permission of Instructor)
  • CSCI 467 Computer Networks II (CSCI 367)
  • CSCI 471 Machine Learning Algorithms (CSCI 241, MATH 341, MATH 204 recommended, MATH 224 recommended)
  • CSCI 474 Bioinformatics (Permission of Instructor)
  • CSCI 477 Data Mining (CSCI 241, MATH 204, MATH 341)
  • CSCI 479 Spoken Language Processing (CSCI 301, CSCI 305 and CSCI 341) (or Permission of instructor)
  • CSCI 480 Computer Graphics (CSCI 241, MATH 204)
  • CSCI 496 Research (Permission of Instructor)
  • CSCI 497 This course number is reserved for new topics. It will always have a single letter suffix such as 497D. (Prereqs TBA)
  • M/CS 335 Linear Optimization (MATH 204, CSCI 141)
  • M/CS 375 Numerical Computation (MATH 204, CSCI 141)
  • M/CS 435 Nonlinear Optimization (MATH 204,224, CSCI 141)
  • M/CS 475 Numerical Analysis (MATH 224, M/CS 375)
  • M/CS 478 Fundamentals of Cryptography (MATH 204, MATH 341 and one of: CSCI 140, CSCI 141, MATH 307)

Math Requirements

Math 124, 125, 204, 341

Science Requirements

A three-course science sequence chosen from:

  • CHEM 161, 162, 163
  • PHYS 161, 162, 163
  • BIOL 204, 205, 206
  • GEOL 211, 212, and one of 303, 308, 309, 314, 315, 340

Notes

  • Students can apply to the CSCI major in the quarter they are completing CSCI 241, 247, 301. At most two attempts at one of these three classes is allowed.
  • Math prerequisites are listed underneath the CSCI core courses for which they are required. These are minimum prerequisites and may not be taken concurrently.
  • CSCI 491, 492, 493 (the senior project series) should be taken in your last three quarters. Requires departmental permission to register.
  • You must fulfill the requirements of the year in which you declared the major.
  • You must pass all required courses with a C-or better.
  • Please refer to the catalog for the complete list of requirements for the BS in Computer Science