Software Engineering (SE) Prerequisite Course Descriptions

MATH 142 - (Q) Discrete Structures
Prerequisites:MATH 005 or MATH 102 or MATH 103 or MATH 106 or Math Placement DAT score of 13 or higher
Corequisites:None
Credits:4cr
Course Description:A study of symbolic logic, sets, combinatorics, mathematical induction, recursion, graph theory, and trees. Intended for Engineering, Computer Science, and Computer Information Systems majors, but open to other qualified students.

CMPS 134 - Computer Science I
Prerequisites:None
Corequisites:CMPS 134L
Credits:3cr
Course Description:An introduction to programming concepts and methodology using an object-oriented programming language (currently Java). Topics include problem analysis, abstraction, modularization, the development and use of algorithms, reuse, and the use of programming constructs including data types, classes, control structures, and methods.

CMPS 134L - Computer Science I Lab
Prerequisites:CMPS 134 (with departmental permission)
Corequisites:CMPS 134
Credits:1cr
Course Description:Programming-related activities are undertaken that apply essential concepts from CMPS 134, including problem decomposition, modularization, flow of control, scoping, object-orientation, and algorithm development.

CMPS 144 - Computer Science II
Prerequisites:CMPS 134, CMPS 134L, and either MATH 114 or MATH 142
Corequisites:CMPS 144L
Credits:3cr
Course Description:This course emphasizes object-oriented software development, addressing both software engineering and programming. Topics include modularization, abstraction, encapsulation/information hiding, software reuse, software testing, classic data abstractions (e.g., lists, trees) and algorithms (e.g., sorting, searching), recursion, program correctness, and basic algorithm analysis.

CMPS 144L - Computer Science II Lab
Prerequisites:CMPS 134 and CMPS 134L
Corequisites:CMPS 144 is required as a co-requisite, or as a prerequisite with departmental permission.
Credits:1cr
Course Description:Activities are undertaken that apply programming concepts form CMPS 144, including object-orientation, inheritance, polymorphism, iterators, generics, algorithms involving various container structures (e.g., stacks, queues, lists, trees, graphs), analysis of algorithms, and concurrency.

CMPS 240 - Data Structures and Algorithms
Prerequisites:CMPS 144
Corequisites:None
Credits:3cr
Course Description:An examination of the issues of data representation, algorithm structure, and encapsulation as they pertain to the development of object-oriented software. Abstract data types studied include stacks, queues, binary trees, n-ary trees, and graphs. Various representation alternatives are analyzed and compared, trade-offs frequently encountered by software developers are discussed.

CMPS 340 - Introduction to Database
Prerequisites:CMPS 144 required, CMPS 240 recommended
Corequisites:None
Credits:3cr
Course Description:File structures concepts and file processing applications. Topics include file maintenance and storage management; file searching, sorting, and merging; consequential processing; index structures; B-trees; hash tables; indexed sequential files; database concepts.

CMPS 352 - Operating Systems
Prerequisites:CMPS 240, CMPS 250
Corequisites:None
Credits:3cr
Course Description:An introduction to the principles of operating systems. Topics include operating system structure, process management, scheduling and dispatching, process synchronization and interprocess communication, memory management, virtual memory, device management, I/O, and file systems.