*CPS110 Algorithms to Machines: A Survey of Computer Science (4)
Introduces study of computer science for nonmajor. Topics include nature of algorithms, data representation, computer architecture, expression of algorithms in modern programming languages and translation of programs into machine language. Also history of computing, artifical intelligence and social impact of computing. Laboratory work introduces principles of computing through inquiry-based approach. Students complete significant programming project to control simple robot. Core lab option. Lab fee.
*CPS111 Introduction to Computer Science (4)
Introduces great ideas and recurring themes of computer science and broad survey of major topics in discipline including history of computing, human-computer interaction, representations of information, simple computer architecture, translation and interpretation of programs, basic digital logic, limits of algorithmic computation, artificial intelligence, and social issues. Weekly laboratory sessions emphasize problem solving using various kinds of software, especially html and Java. Intended both as introduction to further study in computer science and as terminal course for students desiring broad introduction to field. Core lab option. Lab fee.
CPS112 Introduction to Programming (4)
Introduces object-oriented paradigm and programming using Java. Use, extension and implementation of classes. Fundamental control structures. Encapsulation, basic data structures and utility classes. Weekly programming laboratories. Prerequisite: CPS111. Lab fee.
CPS211 Object-Oriented Software Development (4)
Introduces object-oriented analysis and design including use cases, CRC cards, and class design; UML; inheritance and polymorphism; methods for verifying, validating and testing software; concurrency; distributed systems; relational databases; continued development of design and programming skills using UML and Java through weekly laboratories. Prerequisite: CPS112. Lab fee.
CPS212 Computational Structures and Algorithms (4)
Introduces analysis of algorithms; implementation of data structures; advanced methods for organizing data in primary and secondary storage; problem-solving strategies; recursion; parallel algorithms; continued development of algorithm analysis skills. Weekly laboratories introduce C++ including use of templates and Standard Template Library. Prerequisite: CPS211. Lab fee.
CPS220 Models of Computation (2)
Introduces finite state machines, push-down automata, Turing machines, and nondeterministic automata. Regular expressions and languages; context free languages. Limits to algorithmic computation: halting problem, NP-complete problems. Prerequisites: CPS112 and MAT229.
CPS311, 312 Computer Systems I, II (4, 4)
Computer systems as hierarchy of real and virtual machines from gate level to system software; gates, combinatorial and sequential networks; CPU organization at register-transfer level; machine and assembly language programming; RISC and CISC architecture; hardwired and microprogrammed control; bus structures and organization of memory and IO subsystems; process concept and multiprogramming; atomic operations and methods for ensuring atomicity; processor, device and memory management; introduction to computer networks. Weekly laboratories, both hardware- and software-oriented, parallel lectures. Prerequisites: CPS112 and either completion of or concurrent enrollment in CPS211. Lab fee. (Alternate years. Not offered 2008-09.)
CPS323 Programming Languages (4)
Introduces formal study of programming language syntax, data types and control structures; methods of executing higher-level constructs at run-time; data structures and algorithms used in compilation and interpretation. Laboratory work emphasizes acquisition of skill in numerous programming languages. Prerequisite: CS212. (Alternate years.
Offered 2008-09.)
CPS342/MAT342 Numerical Analysis (4)
See MAT342 course description.
CPS352 Database Systems (4)
Explores database technology; various data models, query languages and applications program-DBMS interface. Prerequisites: CPS211, 212, 220 and MAT229. (Alternate years. Offered 2008-09.)
CPS382 Applications Project (2)
Interdisciplinary development of significant application useful to cosponsoring department. Prerequisites: one computer science course at 200 level, plus approval of project plan by both discipline supervisors prior to registration.
CPS403 Computers and Society (2)
Uses and impact of computers in modern society; considers ethical and moral issues in context of Christian worldview. Nontechnical; open to all students. Prerequisites: junior or senior standing plus CPS101, 102, 104 or 111 or permission of instructor. (Alternate years. Offered 2008-09.)
CPS491, 492 Senior Seminar: Software Engineering (2, 2)
State-of-the-art methods for developing large pieces of software; design techniques, scheduling, methods of program verification and correctness-proving, and human factors involved in software development by teams. Senior project reports required. Prerequisite: permission of instructor.
TOPICS IN COMPUTER SCIENCE
Study of an advanced topic of current interest to the professor and students. May be taken for credit more than once if a different topic is studied.
Topic planned for 2008-2009:
CPS372 Selected Topics: Computer Networks (4)
Surveys current topics related to transmission of data over communication lines. Includes data encoding, error detection, flow control, multiplexing and network programming. Considers data network topologies and selected protocols. Prerequisite: CPS212 or permission of instructor.
Topics frequently offered include:
CPS371 Selected Topics: Artificial Intelligence (4)
Surveys basic methods of artificial intelligence research. Exposure to AI programming using PROLOG. Considers theological and philosophical issues raised by work in AI. Prerequisite: permission of instructor.
CPS373 Selected Topics: Computer Graphics (4)
Surveys interactive graphics systems. Studies two- and three-dimensional computer graphics, color models, shading, windowing, clipping, segments, hidden-surface and line removal and animation. Exposure to industry standard computer graphics library on department's workstations. Prerequisites: CPS212, MAT232.
* Fulfills Core Curriculum requirement.
HONORS IN COMPUTER SCIENCE
Seniors who research and write an honors thesis will be eligible to graduate with honors in computer science. Under the direction of a faculty advisor, candidates will carry out research in an area not covered by existing courses culminating in a significant honors thesis, which will be defended orally to departmental faculty during the senior year. Normally this will be done in the context of a 2- to 4-credit independent study. The minimum GPA for honors candidates is 3.5 in the major and 3.0 overall.