Academic Prerequisites
The graduate courses assume a solid general background in all areas of computer science and in mathematics and the student must obtain this background before taking classes towards graduate credit. Many students will be missing some of this background and it is expected that they will make up any deficiencies in their first semester in the program.
This background knowledge is characterized below in terms of the courses offered by the department. This does not imply that this background must be acquired through these courses taken either at UNM or elsewhere; a student may fulfill the prerequisites through self-study, industrial experience, or by auditing the recommended courses.
The department does not enforce strict prerequisites (with the exception of four senior-level classes, for which see below), but makes it the student's own responsibility to be prepared for graduate classes. Each student should consult with the department's graduate advisor to assess potential weaknesses and establish a program of study. The required background is essentially equivalent to the core undergraduate curriculum and encompasses the material taught in the following computer science and mathematics classes: CS 152, CS 261, CS 251, CS 257, CS 341, CS 351, CS 361, CS 451, CS 460, CS 481, Math 162, Math 163, Math 314, and Math 345.
- CS 152, CS 251, and CS 351 form the basic programming sequence, providing a broad background in programming and elementary data structures. The programming language used is Java. CS 241 covers data organization, and is taught using C.
- CS 341 and CS 481 form an introduction to assembly language, elementary systems architecture, and operating systems.
- CS 261 is a first course in discrete mathematics, followed up by CS 361, Data Structures and Algorithms.; together they provide the analytical tools used in CS 561 and the graduate program. CS 561 covers the design and analysis of data structures and algorithms. Math 162 and Math 163 form a one-year sequence in calculus for mathematics, engineering, and science majors; this sequence is used by the department to provide mathematical maturity rather than to convey specific material. Math 345 is a course in probability and statistics.
- CS 257 and CS 451 are courses that stress solving problems using non-imperative programming paradigms, such as functional and logic programming. The courses also cover issues of programming language implementation.
- CS 460 is a course in software engineering. It stresses issues of project and group management.
CS 451 and CS 481 are explicitly required; that is, a student must either have satisfactorily completed equivalent courses at another institution (equivalence to be established by the graduate advisor) or obtain credit with a grade of B or better in these courses at UNM (by taking the classes). In exceptional cases, where there is evidence that the material was learned in a non-academic setting, one or more of these courses may be waived by the graduate advisor.
CS 451, CS 460, and 481 are not eligible for graduate credit within the master's degree program.
CS 460 is also required. The same rules apply to this course as apply to CS 451, CS 461, and CS 481, except that the material of this course is frequently obtained in a non-academic setting, mostly on-the-job experience.
Additionally, the student must have experience with large-scale imperative programming, comparable to the material in CS 351. Students without equivalent experience will be required to meet this requirement as part of their master's degree program, either through a master's thesis (CS599) with a significant programming component, through courses where the student personally writes a large amount of code, or through a project associated with a research assistantship or outside employment.
Lastly, the student must have sufficient mathematical maturity to handle the mathematical abstraction of the common core course in theory (CS 500). This background can be obtained in a number of ways—many students will have this maturity from mathematics courses they will have taken previously. The department offers a senior-level course, CS 401, that develops the student's abstract reasoning skills. Students without background preparation in abstract reasoning are encouraged (or often required) to take this course. CS 401 is not eligible for graduate credit.
