Computer Science Department
Below is a list of courses offered by the CS department. The number in parenthesis is the credit hours followed by the semester(s) when the course is offered. Any prerequisites are listed at the end of the course description. A listing of these courses can also be found in the Harding Catalog.
1010. Computer Science Principles. (3) Explores the beauty and awe of computer science, teaching programming with emphasis on problem solving and logic. Also explores societal impact and tools for data analysis. Portfolio-based group work, customized to each group. Offered with sufficient enrollment.
1500. Programming I. (3) Fall, Spring. 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.
1510. Programming II. (3) Fall, Spring. A continuation of 150. Topics include multi-dimensional arrays, strings, files, classes, pointers, and dynamic memory allocation. Prerequisite: COMP 1500.
1700. Software Development. (5) Fall, Spring. 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. A math ACT score of 27 or higher is recommended to take this course. Students with less preparation should take COMP 1500/1510 rather than 1700.
2450. Data Structures. (3) Fall, Spring. 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: COMP 1700 or 1500/1510.
2680. Computer Architecture And Assembler Programming. (3) Fall, Spring. Machine and assembly language programming with emphasis on computer architecture, data representation, addressing techniques, instruction formats, and logic design. Prerequisite: COMP 1700 or 1500/1510.
3010. Software Engineering. (3) Fall, Spring. 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: COMP 1700 or 1500/1510.
3100. Operating Systems Concepts. (3) Fall. 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. Prerequisites: COMP 2450; COMP 2680 or EENG 2400.
3110. Data Communications AND Networking. (3) Spring. Network topology, local area networks, wide area networks, layered protocols, network management, and available network hardware and software. Prerequisites: COMP 2450; COMP 2680 or EENG 2400.
3280. Numerical Methods. (3) Spring of even years. Computer solutions to mathematical problems, including systems of linear equations, polynomial interpolation, fixed point algorithms, numerical integration, and numerical solutions to differential equations. Prerequisites: COMP 1500 or 1700; and MATH 2350, or consent of the instructor.
3350. File Structures and Access Methods. (3) Fall of odd years. 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: COMP 3450.
3360. Database Concepts and Applications. (3) Spring. 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: COMP 2450 and 3010.
3450. Object-Oriented Programming. (3) Fall, Spring. Object-oriented programming using the C++ and Java programming languages. Topics include 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. Prerequisites: COMP 2450.
3490. Applied Algorithms. (3) Fall. Classification of algorithms. Complexity and computing requirements, including efficiency, greedy algorithms, divide and conquer algorithms, dynamic programming, graph algorithms, probabilistic algorithms, and computability theory. Prerequisites: COMP 2450.
3670. Cooperative Education. (3) Offered by arrangement with department chair. See Cooperative Education catalog section.
4250. Parallel Programming. (3) Spring of odd years. 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: COMP 3450.
4300. Artificial Intelligence. (3) Fall of even years. 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: COMP 2450.
4390. Computing Seminar. (1) Fall, Spring. A weekly seminar required of all junior and senior computing majors. Credit may be taken only once. Enrolled students are 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: Senior status.
4400. CS Software Development Project. (3) Spring. 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: All other courses required by the major or consent of instructor.
4450. Graphical User Interface Programming. (3) Fall. 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: COMP 3450.
4500. Independent Study. (1-3) Offered on sufficient enrollment.
4750. Selected Topics. (1-3) Offered on rotation and based on faculty scheduling.
4750A. Game Programming. (3) Offered on rotation. Programming games with Unity. Topics include 2D and 3D computer graphics, animation, collision detection, game design, and game artificial intelligence. Prerequisites: COMP 2450 and 3450.
4750B. Compilers. (3) Offered on rotation. An introduction to the ideas and techniques involved in constructing compilers. Topics include formal grammars and languages, lexical analysis, parsing, syntax trees, instruction selection, register allocation, and scheduling. Prerequisites: COMP 2450, COMP 2680, and either COMP 3450 or approval of the instructor.
4750C. Introduction to Web Science. (3) Offered on rotation. Topics include web architecture, web characterization and analysis, web archiving, social networks, collective intelligence, search engines, web mining, and information diffusion on the web. Prerequisites: COMP 2450 and 2500.
4750D. Mobile Application Development. (3) Offered on rotation. Development of native and web applications for mobile devices running iOS and Android operating systems. Prerequisites: COMP 2450 and 3450.
4750E. Computer Security. (3) Offered on rotation. This course provides an overview of the computer security landscape. Topics include authentication, intrusion detection, access control, and uses of cryptographic algorithms. Emphasis is placed on encouraging the programmer to practice security-aware programming practices. Recommended: COMP 3110. Prerequisites: COMP 2450 and 2680.
4750F. Functional and Generic Programming. (3) Offered on rotation. A study of functional and generic programming techniques in both the Haskell and C++ languages. Topics include closures, higher-order functions, algebraic data types, I/O monads, parametric polymorphism, type classes / concepts, class and function templates, template specialization, variadic templates, polymorphic value types, and compile-time expressions. Prerequisite: COMP 3450.