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 enroll in and pass the final examination for the appropriate UMN class with a grade of B+ or higher. Potential applicants can be admitted to the University of Minnesota as non-degree students in order to take these prerequisite courses.
    • The relevant University of Minnesota courses are:
      • CSCI 3041 - Introduction to Discrete Structures and Algorithms OR CSCI 4041 - Theoretical Foundations - Algorithms and Data Structures
      • CSCI 4011 - Theoretical Foundations - Formal Languages and Automata Theory
      • CSCI 3061 Introduction to Computer Systems OR (CSCI 2021 - Machine Architecture and Organization AND CSCI 4061 - Operating Systems) 
      • CSCI 2081 - Introduction to Software Development OR 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 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 or CSCI 3061CSCI 2081 or 3081CSCI 4011CSCI 3041 or 4041CSCI 3061 or CSCI 4061
52045106510654035103
 5161516154215105
 5801 54615211
   5471 
   5481 
   5523 

Questions?

Goldy Gopher on a gold background

Graduate Program Coordinator

Current students: [email protected]
Prospective students: [email protected]