Software Engineering
SE 2340 Computer Architecture (3 semester credit hours) This course introduces the concepts of computer architecture by going through multiple levels of abstraction, and the numbering systems and their basic computations. It focuses on the instruction-set architecture of the MIPS machine, including MIPS assembly programming, translation between MIPS and C, and between MIPS and machine code. General topics include performance calculation, processor datapath, pipelining, and memory hierarchy. Credit cannot be received for both courses, (CS 2340 or SE 2340) and (CE 4304 or EE 4304). Prerequisites: (CE 1337 or CS 1337) with a grade of C or better or equivalent and (CE 2305 or CS 2305) with a grade of C or better. (Same as CS 2340) (3-0) S
SE 2V95 Individual Instruction in Software Engineering (1-6 semester credit hours) Individual study under a faculty member's direction. May be repeated for credit as topics vary (6 semester credit hours maximum). Additional prerequisites may be required depending on the specific course topic. Instructor consent required. ([1-6]-0) R
SE 3162 Professional Responsibility in Computer Science and Software Engineering (1 semester credit hour) Professional and ethical responsibilities of computer scientists and software engineers as influenced by growth in computer use and networks. Costs and benefits of computer technology. Risks and liabilities of safety-critical systems. Social implications of the Internet. Interaction between human values and technical decisions involving computing. Intellectual Property. Global impact of computing. Prerequisites or Corequisites: CS 3345 and CS 3354. (Same as CS 3162) (1-0) S
SE 3306 Mathematical Foundations of Software Engineering (3 semester credit hours) Boolean logic, first-order logic, models of first-order logic. Introduction to program verification, applications in software engineering. Completeness Theorem. Regular expressions, regular sets, finite-state machines, and applications in software engineering. Graph Theory, graph algorithms. Statecharts, Petri Nets and their role in software engineering. Credit cannot be received for both courses, CS 3305 and SE 3306. Double majors are required to take CS 3305. Prerequisite: (CE 2305 or CS 2305) with a grade of C or better or equivalent. (3-0) S
SE 3341 Probability and Statistics in Computer Science and Software Engineering (3 semester credit hours) Axiomatic probability theory, independence, conditional probability. Discrete and continuous random variables, special distributions of importance to CS/SE, and expectation. Simulation of random variables and Monte Carlo methods. Central limit theorem. Basic statistical inference, parameter estimation, hypothesis testing, and linear regression. Introduction to stochastic processes. Illustrative examples and simulation exercises from queuing, reliability, and other CS/SE applications. Credit cannot be received for both courses, (CS 3341 or SE 3341 or STAT 3341) and ENGR 3341. Prerequisites: (MATH 1326 or MATH 2414 or MATH 2419), and (CE 2305 or CS 2305) with a grade of C or better. (Same as CS 3341 and STAT 3341) (3-0) S
SE 3345 Data Structures and Introduction to Algorithmic Analysis (3 semester credit hours) Analysis of algorithms including time complexity and Big-O notation. Analysis of stacks, queues, and trees, including B-trees. Heaps, hashing, and advanced sorting techniques. Disjoint sets and graphs. Course emphasizes design and implementation. Prerequisites: ((CE 2305 or CS 2305) with a grade of C or better or (Data Science major and MATH 3315)) and (CE 2336 or CS 2336 or CS 2337) with a grade of C or better. Prerequisite or Corequisite: (CS 3341 or SE 3341 or ENGR 3341) or (Data Science major and STAT 3355). (Same as CE 3345 and CS 3345) (3-0) S
SE 3354 Software Engineering (3 semester credit hours) Introduction to software life cycle models. Software requirements engineering, formal specification and validation. Techniques for software design and testing. Cost estimation models. Issues in software quality assurance and software maintenance. Prerequisites: ((CE 2336 or CS 2336 or CS 2337) with a grade of C or better or CS 3333) and (CE 2305 or CS 2305) with a grade of C or better or equivalent. Prerequisite or Corequisite: ECS 3390. (Same as CE 3354 and CS 3354) (3-0) S
SE 3377 Systems Programming in UNIX and Other Environments (3 semester credit hours) Basic UNIX concepts, commands and utilities, organization of UNIX file system including links and access control, creating and managing UNIX processes and threads, implementing algorithms using shell scripts, basic networking concepts including socket and client-server programming, inter-process communication using pipes and signals, using a version control system to manage work, and introduction to cloud computing. Design and implementation of a comprehensive programming project is required. Prerequisite: (CE 2336 or CS 2336 or CS 2337) with a grade of C or better or equivalent. (Same as CS 3377) (3-0) S
SE 3V95 Undergraduate Topics in Software Engineering (1-9 semester credit hours) May be repeated for credit as topics vary (9 semester credit hours maximum). Additional prerequisites may be required depending on the specific course topic. Instructor consent required. ([1-9]-0) S
SE 4347 Database Systems (3 semester credit hours) This course emphasizes the concepts and structures necessary for the design and implementation of database management systems. Topics include data models, data normalization, data description languages, query facilities, file organization, index organization, file security, data integrity, and reliability. Prerequisite: CE 3345 or CS 3345 or SE 3345. (Same as CS 4347) (3-0) Y
SE 4348 Operating Systems Concepts (3 semester credit hours) An introduction to fundamental concepts in operating systems: their design, implementation, and usage. Topics include process management, main memory management, virtual memory, I/O and device drivers, file systems, secondary storage management, and an introduction to critical sections and deadlocks. Prerequisites: (CS 2340 or SE 2340) or equivalent and (CS 3377 or SE 3377) and (CE 3345 or CS 3345 or SE 3345). (Same as CS 4348) (3-0) S
SE 4351 Requirements Engineering (3 semester credit hours) Introduction to system and software requirements engineering. The requirements engineering process, including requirements elicitation, specification, and validation. Essential words and types of requirements. Structural, informational, and behavioral requirements. Non-functional requirements. Scenario analysis. Conventional, object-oriented and goal-oriented methodologies. Prerequisites: SE 3306 and (CE 3354 or CS 3354 or SE 3354) or instructor consent required. (3-0) S
SE 4352 Software Architecture and Design (3 semester credit hours) Introduction to software design with emphasis on architectural design. Models of software architecture. Architecture styles and patterns, including explicit, event-driven, client-server, and middleware architectures. Decomposition and composition of architectural components and interactions. Use of non-functional requirements for tradeoff analysis. Component based software development, deployment and management. Prerequisites: SE 3306 and (CE 3354 or CS 3354 or SE 3354) or instructor consent required. (3-0) S
SE 4367 Software Testing, Verification, Validation and Quality Assurance (3 semester credit hours) Methods for evaluating software for correctness and reliability, including code inspections, program proofs and testing methodologies. Formal and informal proofs of correctness. Code inspections and their role in software verification. Unit and system testing techniques, testing tools and limitations of testing. Statistical testing, reliability models. Prerequisites: SE 3306 and (CE 3354 or CS 3354 or SE 3354) or instructor consent required. (3-0) S
SE 4376 Object-Oriented Design (3 semester credit hours) In-depth study of the features/advantages of object-oriented approach to problem solving. Special emphasis on issues of object-oriented analysis, design, implementation, and testing. Review of basic concepts of object-oriented technology (abstraction, inheritance, and polymorphism). Object-oriented programming languages, databases, and productivity tools. Prerequisites: (CE 2336 or CS 2336 or CS 2337) with a grade of C or better or equivalent and (CE 3354 or CS 3354 or SE 3354). (Same as CS 4376) (3-0) S
SE 4381 Software Project Planning and Management (3 semester credit hours) Planning and managing of software development projects. Software process models, ISO 9000, SEI's Capability Maturity Model, continuous process improvement. Planning, scheduling, tracking, cost estimation, risk management, configuration management. Prerequisite: CE 3354 or CS 3354 or SE 3354. (3-0) Y
SE 4399 Senior Honors in Software Engineering (3 semester credit hours) For students conducting independent research for honors theses or projects. Topics may vary. Additional prerequisites may be required depending on the specific course topic. Instructor consent required. (3-0) R
SE 4485 Software Engineering Project (4 semester credit hours) This course is intended to complement the theory and to provide an in-depth, hands-on experience in all aspects of software engineering. The students will work in teams on projects of interest to industry and will be involved in analysis of requirements, architecture and design, implementation, testing and validation, project management, software process, software maintenance, and software re-engineering. Students will also explore the potential impact of software systems on society. Additionally, this course will cover topics related to the software engineering profession including ethics and professional responsibility, entrepreneurship, and leadership. Lab fee of $30 required. Prerequisites: At least two of the following: SE 4351 or SE 4352 or SE 4367 or SE 4381. (4-1) S
SE 4V95 Undergraduate Topics in Software Engineering (1-9 semester credit hours) May be used as SE Guided Elective on SE degree plans. Additional prerequisites may be required depending on the specific course topic. Instructor consent required. May be repeated for credit as topics vary (9 semester credit hours maximum). Prerequisite: CS 3345 or SE 3345 or CE 3345. ([1-9]-0) R
SE 4V98 Undergraduate Research in Software Engineering (1-9 semester credit hours) May be repeated for credit as topics vary (9 semester credit hours maximum). Additional prerequisites may be required depending on the specific course topic. Instructor consent required. ([1-9]-0) R