CS Background Requirement

The primary objective of the Background Knowledge Requirement in the Computer Science graduate programs is to maintain the expectation of a minimal core body of knowledge with which all Computer Science graduate students at the University of Minnesota should be familiar. These concepts are considered prerequisites for many graduate level classes and are mandatory for students to succeed in the program. 

Core Background  concepts 

  • Machine Architecture and Organization. Covers basic hardware/software components of a computer system, including data representation, machine-level programs, instruction set architecture, processor organization, memory hierarchy, virtual memory, compiling, and linking.
  • Theoretical Foundations. Must cover one of the following two bodies of knowledge:
  1.  Algorithms and Data Structures. Analysis, data structures, and algorithms, e.g.: basic algorithm analysis (recurrences, asymptotic notation), basic data structures (lists, stacks, queues, heaps, hash tables, (balanced) binary search trees), basic algorithms (sorting, searching, graph traversal, shortest paths, minimum spanning trees).
  2. Formal Languages and Automata Theory. Logical/mathematical foundations of computer science. Specific topics include formal languages, their correspondence to machine models, lexical analysis, string matching, parsing, decidability, undecidability, limits of computability, and computational complexity.
  • Operating Systems. Topics include processes/threads, process coordination, interprocess communication, asynchronous events, memory management/file systems.
  • Programming & Software Development. Topics include: design and analysis of programs, software development tools and methods, debugging, I/0, state machines, exception handling, testing, coding standards, software lifecycle models, requirements analysis

Satisfying the Background Knowledge Requirement

Background requirement courses can be fulfilled in different ways:

  • A student may pass the final examination for the appropriate LIMN class with a grade of B+ or higher.

The relevant UMN courses are:

Machine Architecture and OrganizationCSCI 2021
Theoretical  Foundations-Algorithms and Data StructuresCSCI 4041
Theoretical  Foundations-Formal Languages and Automata TheoryCSCI 4011
Operating SystemsCSCI 4061
Programming & Software DevelopmentCSCI 3081
  • A student may pass a graduate course with a grade of B or higher for which an appropriate undergraduate course is a clearly defined prerequisite. For example, at the University of Minnesota, CSCI 5421 "Advanced Algorithms and Data Structures" has CSCI 4041 "Algorithms and Data Structures" as a prerequisite. Thus, getting a B in 5421 is evidence that a student has an adequate background in Algorithms and Data Structures. Students must check with the Director of Graduate Studies to verify that a specific graduate course demonstrates knowledge of a particular background area.

  • A student may petition the Director of Graduate Studies to accept some other experience as evidence of adequate background. For example, a student could have extensive industrial software development experience without having taken a course on software development.

  • A student may pass an appropriate undergraduate course with a grade of B+ or higher. The appropriate courses at The University of Minnesota are noted below. A student may take these courses anywhere as long as they are listed on the transcript from an accredited university

Graduate courses for which background undergraduate courses are substantial prerequisites:

CSCI 2021CSCI 3081CSCI 4011CSCI 4041CSCI 4061