COMP 1500. Programming I. (3) A course for those with little or no experience in programming. Algorithmic solutions to basic programming problems using the C++ programming language. Topics include data types, condition and looping control structures, functions, and vectors.
And COMP 1510. Programming II. (3) A continuation of COMP 1500. Topics include multi-dimensional arrays, strings, files, classes, pointers, and dynamic memory allocation.
Or COMP 1700. Software Development. (5) Intended primarily for computing and engineering majors. Designing and writing modular program solutions using the C++ programming language. Advanced programming concepts such as multi-dimensional arrays, classes, pointers, and files.
COMP 2450. Data Structures. (3) Major structures used for storing data on computer systems. Strings, stacks, queues, recursion, linked lists, trees, and graphs. Major searching and sorting algorithms. Analysis of algorithms. Prerequisite(s): COMP 1700 or COMP 1500/COMP 1510
COMP 2500. Web Development. (3) Introductory web development with HTML5, cascading style sheets, JavaScript, PHP and MySQL. Prerequisite(s): COMP 1700 or COMP 1500/COMP 1510
COMP 2680. Computer Architecture and Assembler Programming. (3) Machine and assembly language programming with emphasis on computer architecture, data representation, addressing techniques, instruction formats, and logic design. Prerequisite(s): COMP 1700 or COMP 1500/COMP 1510
COMP 3010. Software Engineering. (3) Tools and techniques used in all phases of the systems development lifecycle. Enterprise modeling, data modeling, structured modeling tools, structured design, CASE tools, and prototyping. Development of interpersonal communication skills in group exercises. Prerequisite(s): COMP 1700 or COMP 1500/COMP 1510
COMP 3100. Operating Systems Concepts. (3) The historical development and current functions of operating systems. Hardware and software requirements for operating systems which support uniprogramming, multiprogramming, and multiprocessing. Process management, memory management, disk scheduling, performance evaluation, security, and case studies. Prerequisite(s): COMP 2450; COMP 2680 or EENG 2400 and EENG 2400L
COMP 3110. Data Communication and Networking. (3) Network topology, local area networks, wide area networks, layered protocols, network management, and available network hardware and software. Prerequisite(s): COMP 2450; COMP 2680 or EENG 2400 and EENG 2400L
COMP 3150. Ethical Hacking. (3) This course prepares students to work as a computer security professional by teaching the fundamentals of ethical hacking. It follows the guidelines specified by the EC-Council (the owner of the Certified Ethical Hacker exam) concerning the material that needs to be covered to be certified as a professional Ethical Hacker. Prerequisite(s): COMP 3110 or IS 3120
COMP 3280. Numerical Methods. (3) Computer solutions to mathematical problems, including systems of linear equations, polynomial interpolation, fixed point algorithms, numerical integration, and numerical solutions to differential equations. Prerequisite(s): COMP 1500 or COMP 1700; and MATH 2350, or consent of the instructor.
COMP 3350. File Structure and Access Methods. (3) Data structures used for the storage of files and methods of access. Sequential files, direct access files, indexed sequential files, hashing, data compaction, data encryption, tree-structured indices, file-processing subroutine libraries, and file support for database systems. Prerequisite(s): COMP 3450
COMP 3360. Database Concepts and Applications. (3) Applications, requirements, structure, administrator functions, utilities, programming interfaces, data security, data integrity, hierarchical models, network models, relational models, normalization of relations, comparisons of available systems, and future directions. Individual and group projects using a database system. Prerequisite(s): COMP 2450
COMP 3450. Object Oriented Programming. (3) Object-oriented programming using C++ and/or Java programming language(s). The object paradigm, classes and methods, data abstraction and encapsulation, polymorphism, single and multiple inheritance, memory management, operator and function overloading, templates, and exception handling. Prerequisite(s): COMP 2450
COMP 3490. Applied Algorithms. (3) Classification of algorithms. Complexity and computing requirements, including efficiency, greedy algorithms, divide and conquer algorithms, dynamic programming, graph algorithms, probabilistic algorithms, and computability theory. Prerequisite(s): COMP 2450
COMP 3670. Cooperative Education. (3) Students desiring on-the-job experience while helping finance their education should investigate cooperative education. The student may pursue an alternating plan of full-time work and full-time classes; a parallel plan of half-time work and part-time classes; a one semester internship; or a summer program. Many departments have a cooperative education course (internship) offered as 3670 or 5670. Additionally, the Academic Resource Center offers UNIV 3670-3676 for other departments.
COMP 4250. Parallel Programming. (3) Developing multi-tier and peer-to-peer software for large-scale and high-performance environments. Dynamic Link Libraries, component-based programming, sockets, remote procedure calls, client-server architectures, transaction monitors, object request brokers, multi-threading and current industry tools. Prerequisite(s): COMP 2450
COMP 4299. Machine Learning. (3) This course is an introduction to the concepts necessary to understand Machine Learning and build simple models. The topics include classical machine learning algorithms, best practices for developing and evaluating machine learning models, neural networks, and using industry standard software to accomplish machine learning tasks. Prerequisite(s): COMP 2450 or (COMP 1500 and MATH 3300)
COMP 4300. Artificial Intelligence. (3) Concepts and techniques used in the development of intelligent systems. Knowledge representation, game playing, search techniques, heuristics, deduction, learning, natural language processing, rule-based expert systems, constraint exploitation, and an appropriate programming language such as LISP or PROLOG. Prerequisite(s): COMP 2450
COMP 4310. Web Development II. (3) Advanced internet programming including advanced JavaScript, Node.js, JavaScript frameworks like AngularJS or React, NoSQL databases, RESTful web APIs. Prerequisite(s): COMP 2500, COMP 3450 (COMP 3450 may be taken concurrently)
COMP 4390. Computing Seminar. (1) A weekly seminar required of all junior and senior computing majors. Credit may be taken only once. Enrolled students will be required to research and present a paper on a topic approved by the instructor. Includes presentations by faculty and invited speakers relative to ethics and current issues in computing. Prerequisite(s): Senior standing and at least a 2.0 GPA in all major courses.
COMP 4400. CS Software Development Project. (3) The capstone course for Computer Science majors. Development of a computer application in a simulated on-the-job environment through the analysis, design, programming and testing phases of the software life cycle. Prerequisite(s): Senior standing and at least a 2.0 GPA in all major courses, or consent of the instructor
COMP 4450. Graphical User Interface Programming. (3) Software development in a graphical user interface environment. Topics include: event-driven programming, .NET Framework, C#, widgets, MVC and MVVM, multi-threading, Windows Forms, Windows Presentation Foundation (WPF), Universal Windows Platform (UWP), and Human Computer Interaction (HCI). Prerequisite(s): COMP 3450
COMP 4500. Independent Study. (3) Designed as advanced study for qualified undergraduate students. May be repeated for credit with permission from the department chair.
COMP 4750. Selected Topics. (3) Designed as advanced study for qualified undergraduate students. May be taken 6 times for a maximum of 18 credit hours, with permission from the department chair.