Computer Science Department

Courses Offered

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, files, classes, pointers, and dynamic memory allocation. 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.

250. WEB DEVELOPMENT. (3) Fall, Spring. Introductory Internet development with HTML5, cascading style sheets, JavaScript, PHP and MySQL. 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 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 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) 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 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.

431. WEB DEVELOPMENT II. (3) Spring. Advanced Internet programming including advanced JavaScript, jQuery, Node.js, AngularJS, Java servlets and JSPs, and RESTful web APIs. Prerequisite: COMP 250. Corequisite: COMP 345.

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 in a graphical user interface environment using the .NET Framework. Event-driven programming, stock and custom controls, multi-threading, integration with data sources, Windows Presentation Foundation, Windows Phone development, and usability issues. Prerequisite: COMP 345.

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 with XNA and Unity. 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 running iOS and Android operating systems. 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.