Computer science 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:
    • 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).
    • 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 University of Minnesota courses are:
      • CSCI 2021 - Machine Architecture and Organization
      • CSCI 4041 - Theoretical Foundations - Algorithms and Data Structures
      • CSCI 4011 - Theoretical Foundations - Formal Languages and Automata Theory
      • CSCI 4061 - Operating Systems
      • CSCI 3081 - Programming & Software Development
  • 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 2021 CSCI 3081 CSCI 4011 CSCI 4041 CSCI 4061
5204 5106 5106 5403 5103
  5161 5161 5421 5105
  5801   5461 5211
      5471  
      5481  
      5523