CS Background Requirement
The primary objective of the Background Knowledge Requirement in Computer Science M.S. program is to maintain the expectation of a minimal core body of knowledge with which all Computer Science students at the University of Minnesota should be familiar. These concepts are considered prerequisite 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/O, state machines, exception handling, testing, coding standards, software life cycle models, requirements analysis.
Satisfying the Background Knowledge Requirement
Background requirement courses can be fulfilled in one of four ways:
A student may pass the final examination for the appropriate class with a grade of B or higher.
The relevant courses are:
|Machine Architecture and Organization||CSCI 2021|
|Theoretical Foundations: Algorithms and Data Structures||CSCI 4041|
|Theoretical Foundations: Formal Languages and Automata Theory||CSCI 4011|
|Operating Systems||CSCI 4061|
|Programming & Software Development||CSCI 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 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. This experience will be verified with the student's place of employment.
- 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|