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.
150. PROGRAMMING I. (3) Fall, Spring. A course for those with little or no experience in programming. Algorithmic solutions to basic programming problems. Writing of these solutions in C++.
151. PROGRAMMING II. (3) Fall, Spring. A continuation of 150. Concepts covered include multi-dimensional arrays, strings, classes, pointers, and files. Prerequisite: COMP 150.
170. 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 150/151 rather than 170.
245. 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 170 or 150/151.
268. 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 170 or 150/151.
301. 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 170 or 150/151.
310. 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 245; COMP 268 or EENG 321.
311. 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 245; COMP 268 or EENG 321.
328. 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 150 or 170; and MATH 201, or consent of the instructor.
335. FILE STRUCTURES AND ACCESSMETHODS. (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 345.
336. 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 245 and 301.
345. 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 245.
349. 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 245.
367. COOPERATIVE EDUCATION. (3) Offered on rotation. See Cooperative Education catalog section.
425. PARALLEL PROGRAMMING. (3) Fall of even 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 345.
430. 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 245.
439. COMPUTING SEMINAR. (1) Fall, Spring. 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: Senior status.
440. 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.
445. GRAPHICAL USER INTERFACE PROGRAMMING. (3) Fall. Software development under event-driven, graphical user interface environments using the Windows API and .NET Framework. Messaging, event-driven programming, window procedures, graphical resources, dialog boxes, multiple document interfaces, object-based class libraries, and usability issues. Prerequisite: COMP 345.
446. COMPUTER GRAPHICS. (3) Spring of odd years. Mathematical and programming techniques central to computer graphics, including scaling, transformations, translations, rotations, reflections, projections, windowing, rendering, generated surfaces and hidden surface removal. Prerequisites: COMP 345 and MATH 313.
450. INDEPENDENT STUDY. (1-3) Offered on sufficient enrollment.
475. SELECTED TOPICS. (1-3) Offered on rotation based on faculty scheduling.
475A. GAME PROGRAMMING. (3) Offered on rotation. Programming games on the XNA (Xbox) platform. Topics include 2D and 3D computer graphics, animation, collision detection, game design, and artificial intelligence. Prerequisites: COMP 245 and 345.
475B. 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 245, COMP 268, and either COMP 345 or approval of the instructor.
475C. WEB INFORMATION RETRIEVAL. (3) Offered on rotation. Study how the Web is organized, understand the characteristics and limitations of web search, explore IR techniques, and develop a web search engine. Prerequisites: COMP 245, 250 and 345.
475D. MOBILE APPLICATION DEVELOPMENT. (3) Offered on rotation. Development of native and web applications for mobile devices. Specific devices and platforms include Apple's iPhone/iPod Touch and Google Android. Prerequisites: COMP 245 and 345.
475E. 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 311. Prerequisites: COMP 245 and 268.