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.
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:
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 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 taking a software development course.
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: