This course provides an overview of the current state of computing and its social implications. This is intended to be used as a breadth-first introductory course for majors and non-majors. Topics include organization of a computer system, discussion of a broad range of software systems, problem solving, database systems, networking, computer security, ethical issues, and emerging areas in computer science. PR: MATH 1100 or Math ACT score of 19.
This course will provide an introduction to the BASIC programming language and familiarity with microcomputer hardware and operating system commands. Several short programming projects will be assigned. The emphasis of the projects will be technological applications. This course may not be substituted for either COMP 1100 or 1102. PR: MATH 1101.
A study of the foundations of software development. Students are introduced to computer organization, data representation, the software development cycle, and programming concepts including control structures, functions, elementary data structures and text file processing. Programming projects in the language C++ are assigned to provide students with experience in software development. PR: MATH ACT score of 21 or MATH SAT score of 500 or Compass score of 49 or MATH 1100.
This course is a continuation of COMP 1102 and covers storage classes, structures, pointers, dynamically allocated lists, non-text files, and concepts of OOP (Object Oriented Programming), including objects and classes, encapsulation, inheritance, and polymorphism. Projects in C++ are assigned to provide students with experience implementing larger multi-part applications using these concepts. PR: COMP 1102.
Studies in special selected topics, to be determined by the instructor and approved by the department chair. Credits earned will be applicable as free electives in degree and certificate programs.
This course covers concepts of object-oriented programming using the Java programming language. Topics include objects and classes, encapsulation, inheritance, polymorphism, generic programming, exception handling, graphical user interface, and event-handling. PR: COMP 1108.
Offers the student a better understanding of how programs are executed by the hardware. Topics include assembly language instructions, data representation, subroutine calling conventions, BIOS and DOS service routines, interrupt handling, and communication between hardware devices. Programming projects are assigned to exemplify the topics covered in class. PR: COMP 1108.
Topics to be covered in this course include access control, physical security, hacking, malicious code, intrusion detection, vulnerability assessment, countermeasures, network architectures, firewalls, network security, cryptography, forensics, certification and accreditation and legal and ethical issues. The course consists of three hours of lecture per week. PR: COMP 1100 or 1101 or 1102.
This course covers the design and implementation of software applications in a networked environment. Topics include a broad overview of network technology, the OSI model, socket programming, multithreading, and web programming. PR: COMP 2200.
This course covers linear and non-linear data structures and their associated algorithms. Topics include analysis of algorithms using Big-O notation, linear data structures (linked lists, stacks, and queues), nonlinear data structures (trees and graphs), and hash tables. PR: COMP 1108.
This course provides an overview of interactive graphics programming. Topics include the design of a simple graphics package, interactive devices and techniques, geometrical transformations and viewing in three dimensions. Representation of three-dimensional shapes is also developed. PR: COMP 2270 and MATH 1190.
An introduction to AI techniques, using a symbolic or logic-based programming language. Topics covered include knowledge representation, heuristic search, natural language processing, game playing, theorem proving and expert systems. Programming projects are assigned to illustrate these concepts. This course meets three hours per week for lecture. PR: COMP 2270 and MATH 2200.
This course covers complexity of algorithms and algorithm design techniques. Topics include analysis of algorithm correctness, analysis of algorithm efficiency using asymptotic notations, algorithm design techniques including brute-force, divide-and-conquer, greedy, and dynamic programming approaches. PR: COMP 2270 and MATH 2216.
This is an introduction to historical and current operating systems' principles and operation. Topics include the function and operation of the major areas of the operating system such as user interfaces, process control, synchronization, primary and secondary memory management, I/O, controls, concurrent processes and security issues. PR: COMP 2270 and COMP 2201.
This course provides an introduction to cryptography. Major topics to be covered include the history of cryptography and secret and public key encryption. A cryptography laboratory will be provided to demonstrate various applications of cryptography, such as digital certificates, digital signatures, IPSec, Kerberos, PGP, PKI, Rijndael, secure e-mail, SSL and TLS. The course consists of three hours of lecture and two hours of lab per week. PR: COMP 2270 and MATH 2216.
This course combines classroom and laboratory work to explore network security attacks and solutions. Commercial-Off-The-Shelf (COTS) network devices such as servers, routers, bridges, switches, hubs, firewalls, scanners and intrusion detection systems will be configured to demonstrate network security solutions for selected real-world scenarios. The course consists of three hours of lecture and two hours of lab per week. PR: COMP 3340, and INFO 2250.
This course provides an introduction to various legal and ethical issues in computing. Topics to be covered include privacy rights, intellectual property rights, electronic transactions and liabilities, hacking, computer crime, encryption policies, offensive speech, anonymity, employee monitoring and e-mail policies, censorship, AI/expert systems, codes of ethics (ACM, IEEE, ISC(2) and NSPE) and political freedom. PR: COMP 1100 and ENGL 1108.
This course covers the theoretical foundations of computer science and the abstractions of computational processes in programming languages. Topics include formal languages, grammars, automata, Turing machines, programming language paradigms, data types, expressions, control structures, binding strategies, run-time environments, compilers, and interpreters. PR: COMP 2270 and MATH 2216.
Students will develop familiarity with database terminology and will study database design and implementation. The primary focus will be on the relational model, relational algebra and SQL. Issues of dependencies, normal forms, data integrity and query optimization will also be discussed. PR: COMP 2270.
This course provides theoretical and practical instruction for assessing computer vulnerabilities and countermeasures. Topics to be covered include firewalls, hacking, intrusion detection, incident response, penetration testing and security policies. The laboratory portion of the course will provide hands-on experiments connected with various vulnerability assessment and countermeasures topics. The course consists of three hours of lecture and two hours of lab per week. PR: COMP 3390.
This course will address current topics of interest in computer science, to be determined by the instructor and approved by the department chair. PR: COMP 3330.
Each student enrolled in this course will develop an independent project under supervision of the instructor. The project will be a practical application of computer science. The student and instructor will agree on the nature of the project necessary to satisfy the course requirement. PR: Instructor's consent.
Three hours lecture and two hours laboratory. This course covers the key aspects of software engineering principles and practice. Topics include software life cycle/process models, software requirements, software design, software testing, team management, and project management. This course also provides a capstone experience, integrating the knowledge students have acquired in previous courses, as they work on a team-based software development project. PR: COMP 2200 and COMP 2270.
This course allows students to obtain real-world computer security work experience through an internship with either a government agency or local high technology company. PR: COMP 3395 and COMP 3390.
Undergraduate research is an experiential learning activity that provides an opportunity for a student to engage in the scholarly activities of their major discipline under the guidance of a faculty mentor who will work in close partnership with each student in his or her formulation of a project, the development of a research strategy, and the assessment of a student's progress. The primary goal is for each student scholar to conduct an inquiry or investigation that makes an original, intellectual or creative contribution to their discipline and which is shared in an appropriate venue. Sophomore-Senior Level, Repeatable. Instructor approval required.