CPSC 3121. Assembly Language Programming 1 (3-0-3) Prerequisite: CPSC 2105 with a grade of "C" or better. An introduction to assembly language for mainframes or PC's. Topics include machine architecture (registers, memory, instruction formats), character data processing, decimal arithmetic, binary arithmetic, subroutine and program linkage.
CPSC 4175. Software Engineering (3-0-3) Prerequisites: CPSC 3175 with a grade of "C" or better. In this course, students are introduced to the basic principles of software engineering. The course focuses on the issues, methods and tools applied at every phase of the iterative development life cycle spanning from the conception of the actual requirements, through the analysis, design, development, testing, deployment and maintenance of the software product. Other subjects include project management and quality assurance. Students must complete a significant software project.
CPSC 4176. Senior Software Engineering Project (3-0-3) Prerequisite: CPSC 4175 with a "C" or better. The course encompasses a practical application of knowledge and skills mastered in the Computer Science curriculum through the development of a significant project. Students will apply a software engineering methodology in a team environment to develop a complex real-world application with an external customer under the guidance of instructor. Team members are involved in all phases of the software development life cycle.
CPSC 5115. Algorithm Analysis and Design (3-0-3) Prerequisites: CPSC 2108 and MATH 5125, both with grades of "C" or better. This course emphasizes the understanding of data structures and algorithms from an analytical perspective rather than from an implementation standpoint. The concepts developed allow discussion of the efficiency of an algorithm and the comparison of two or more algorithms with respect to space and run-time requirements. Analytical methods are used to describe theoretical bounds as well as practical ones. In general, this course addresses the constraints that affect problem solvability.
CPSC 5128. Theory of Computation (3-0-3) Prerequisites: CPSC 5115 and MATH 5125, both with grades of "C" or better. This course provides an introduction to the theoretical foundations of computer science and formal models of computation. Topics will include basic set theory, a review of graph theory, formal languages, finite automata, computability, and undecidability. Computational complexity will be introduced and intuitively described.
CPSC 5135. Programming Languages (3-0-3) Prerequisite: CPSC 2108 and CPSC 3175 with a grade of "C" or better. Emphasizes the run-time behavior of programs. Languages are studied from two points of view: (1) the fundamental elements of languages and their inclusion in commercially available systems; and, (2) the difference between implementations of common elements in languages.
CPSC 5155. Computer Architecture (3-0-3) Prerequisite: CPSC 3121 with a grade of "C" or better. This course introduces the fundamentals of computer architecture. It covers a wide range of computer hardware, system software and data concepts from a security perspective. The course starts with combinational and sequential logic and circuit simulations, and is then followed with FPGA, RFID, NFC, TPM and PUF technologies. The course also covers Instruction set architecture, RISC processors, pipelining, virtualization, networks, and cryptographic hardware. It is essential for computer science and security professionals to understand both hardware and software security solutions to survive in the workplace.