COS 102 - Fundamentals of Systems and Computing
An introduction to the basic concepts of “system” and “process” with particular emphasis on computing systems. Major topics include systems thinking, quality, problem solving, and design. Computing-specific topics include algorithms, networks, computer hardware, and basic relational database concepts. The learning experience features field trips and guest lectures.
COS 104 - Computing and Culture – Applications and Context
An introduction to the ideas of computational technology including the use of applications, ethical foundations and the understanding of the context of technology in our world. Analysis from a Christian perspective is emphasized. Topics discussed include algorithmic thinking, organization of data with spreadsheets and databases, internet and security, hardware, software, and the history of computers. Important skills covered in the course include web design, spreadsheet and database applications, video and photo manipulation, information literacy, and an introduction to the process of programming. Meets foundational core computation requirement
COS 105 - Ethics, Computing, and Society
As computing technology becomes more complex and less visible, we understand less about how the world functions. Our worldview is impacted by technology in ways that are not recognized and, therefore, not critically evaluated, particularly with a Christian understanding. This course is designed to introduce students to the context of computation in their world. Through writing, discussions, and class assignments, students will gain an understanding of computing technology that goes beyond its use and explores the impact of technology on our world view. The context provided includes an introduction to the issues in our society associated with ethics and technology. Main topics addressed include: applying major ethical theories, intellectual property, privacy, and putting technology into context with a Christian perspective.
COS 109 - Computer and Network Operations
A study of the concepts, principles, tools, and constraints related to computer and network operations, including the following topics: shell scripting, information technology system components, systems policy and governance, operating systems management, network devices, and virtual machines. Students will install and configure commodity operating systems, manage users, analyze system logs, write scripts to automate systems administration, review and write information technology policies, and related activities.
COS 120 - Introduction to Computational Problem Solving
Approaches to computing solutions for problems from a variety of subject areas are examined and provide motivation for the study of the development of algorithms and their implementation. Programming concepts are introduced incrementally in order to solve increasingly complex problems. Good algorithm design and program structure are emphasized. Introductory data structures and software engineering principles are stressed. An introduction to object oriented programming is included. Meets foundation core computation requirement.
COS 121 - Foundations of Computer Science
This course builds on COS 120 by emphasizing object-oriented programming and including concepts of computer science such as computational complexity simulation and recursion. The use and implementation of data structures such as lists, stacks, queues, and trees are introduced as they are needed in developing algorithms for problems studied. Additional topics include the Linux operating system and tools, source code versioning, unit testing, and code refactoring.
COS 130 - Computational Problem Solving for Engineers
This course will take a similar approach to solving problems as COS 120. The differences will be an accelerated pace and using computational tools expected to be used in the various fields of engineering (C and Matlab). Meets foundation core computation requirement.
COS 143 - Interactive Web Page Design
COS 170 - Selected Topics
A course offered on a subject of interest but not listed as a regular course offering.
COS 230 - Missions Technology
A survey and in-depth study of the range of technology applied to Christian missions. Theory and issues in sustainable application are developed. Interaction with mission agencies and a practical project are included.
COS 232 - Computer and Network Security I
A study of the fundamentals of operating system, network, and application security. Major areas of exploration include: fundamental security design principles, application vulnerability analysis, network penetration testing, basic cryptography, and defensive programming techniques.
COS 243 - Multi-tier Web Application Development
The course will explore how to develop a complete web application with implementation separating concerns between content delivery, business logic, and data storage. An emphasis on a modern MVC platform will be used to provide the separation of concerns. Additionally, core database knowledge for a functioning application will be explored including data modeling for a relational database, common SQL queries, data normalization foreign key constraints, and aggregate operations.
COS 265 - Data Structures and Algorithms
A survey of data structures and algorithms that operate on them, with an emphasis on abstract data types and analysis of computational complexity.
COS 270 - Selected Topics
A course offered on a subject of interest but not listed as a regular course offering.
COS 280 - Introduction to Artificial Intelligence
A survey of the field of artificial intelligence. Major areas of exploration include search, logic, learning, knowledge representation, problem solving, natural language processing, computer vision, robotics, expert systems, and neural networks. An introduction to Lisp is included.
COS 284 - Introduction to Computer Systems
An integrated introduction to computer hardware architecture, operating systems, and their interaction. Assembly language and operating system programming are emphasized.
COS 310 - Current Literature Survey
A survey of classical and current literature in computer science. A goal of the course is to produce a concept for a research proposal with literature survey appropriate for an undergraduate research project. Students lead discussions on papers and topics of interest
COS 311 - Ethics in Computer Science
A study of the ethical implications of computers in society and the role of Christians as computer science and engineering professionals. Foundational concepts of Western moral philosophy are presented. Major ethical issues, such as privacy, piracy, liability, equity, and whistle-blowing are explored. Professional society codes of conduct are examined and discussed. Legal and ethical issues such as piracy, copyright, and fair use related to media are also addressed. Ethical concerns of computer science and systems analysis and their relationship to one's faith are an integral part of this course.
COS 320 - Algorithm Design
Algorithms and related data structures from a variety of areas are examined and analyzed. Parallel processing paradigms and theoretical topics, such as complexity models, are introduced.
COS 321 - Ethics and Technology
A study of the ethical implications of computing technology in society and the role of Christians as users, people impacted by, and shapers of computing technology. Foundational concepts of Western moral philosophy are presented. Major ethical issues, such as privacy, piracy, liability, equity, and whistle-blowing are explored. Professional society codes of conduct are examined and discussed. Legal and ethical issues such as piracy, copyright, and fair use related to media are also addressed. Ethical concerns of computer science and systems analysis and their relationship to one's faith are an integral part of this course. This course is intended for students in the Honors Guild but will also meet the COS 311 requirement for majors in computer science and engineering.
COS 323 - Computer and Network Security II
A study of operating system, network, and application security. This course is a continuation of COS 232 (Computer and Network Security). Major areas of exploration include: software reverse engineering, static and dynamic program analysis, basic cryptanalysis, and related current topics.
COS 331 - Data Communications
A study of the nature and applications of data communications in use today. Fundamental concepts of types, modes, and media of transmission are studied. Communication protocols and their encompassing architectures are analyzed and compared. Practical applications of data communications concepts are demonstrated through networking projects and development of communications software.
COS 333 - Missions Computing
Combining computer science and service to the missions community, students travel to an international location during Interterm to undertake software development and systems analysis for a missions’ partner. Students design, construct, test, document, and deploy a non-trivial software system that meets the partner's requirements. Students experience the local culture and participate in direct ministry as opportunities arise. Meets foundational core cross-cultural requirement.
COS 340 - Software Engineering
A study of the concepts, tools, best practices, and lifecycle phases associated with developing large software systems, in groups, over prolonged durations. Using an agile software development process, students gather requirements, design, and begin construction of a non-trivial software system.
COS 343 - Database Systems
A study of the fundamental concepts of how database technologies work. An emphasis on relational databases will be explored, including normalization, advanced SQL queries, indexing, physical data storage, performance and tuning strategies, and concurrency control. Students will be introduced to other database technologies possibly including object-oriented databases, NoSQL, replication, etc.
COS 350 - Computer Graphics
An introductory course in computer graphics with an emphasis on 3D image production using a variety of approaches, including ray tracing, and raster graphics. Basic algorithms, data structures, and GUI programming are introduced.
COS 351 - Computer Vision
A study of the fundamental concepts of digital image acquisition, manipulation, enhancement, representation, analysis, and understanding.
COS 355 - Mobile Application Development
A study of the concepts, principles, tools, and constraints related to developing mobile applications, including: power-performance tradeoffs, sensor management, location acquisition, and responsive user interface design. Students will develop mobile applications within large software ecosystems (mobile operating system APIs and web services) and as a result gain significant experience using current software development tools, asynchronous programming techniques, and objectoriented design patterns.
COS 360 - Independent Study
An individualized, directed study involving a specified topic.
COS 370 - Selected Topics
A course offered on a subject of interest but not listed as a regular course offering.
COS 380 - Natural Language Processing
A study of the automation of human communication abilities, covering both textual and vocal aspects. Major topics include language parsing, understanding, representation, enhancement, generation, translation, and speaker/author recognition.
COS 381 - Computer Architecture
A study of the hardware structure of computer systems, including arithmetic/logic units, memory organization, control unit design, pipelining, and instruction set design. A brief introduction to advanced topics, such as out-of-order execution, branch prediction, multi-core systems, and parallel processing cache coherency will prepare the student for graduate level courses in architecture.
COS 382 - Language Structures
A study of the features and implementation issues of programming languages, including a survey of language paradigms. Grammars, syntax, semantics, translation, lexical analysis, and parsing are introduced.
COS 393 - Practicum
Supervised learning involving a first-hand field experience or a project. Generally, one hour of credit is awarded for a minimum of 40 hours of practicum experience. Grade only. Practicum course credit requires a minimum of 320 hours of work experience.
COS 394 - Advanced Project
Students complete an open-ended software development project or laboratory experiment project. The individual project depends on students and faculty interest. Specific learning outcomes vary depending on faculty, student, and project selected. Independent or small group projects are possible.
COS 411 - Digital Forensics
A study of the concepts, tools, methodologies, and analysis techniques used for host, media, and network forensic investigations. Students will learn how to capture, decipher, reconstruct, and analyze digital data
COS 421 - Operating Systems
A study of the design considerations of computer operating systems and their interaction with hardware features. Topics covered include process management, storage management, protection and security, file systems, and concurrency.
COS 424 - Surfaces and Modeling
An advanced graphics course with emphasis on curve and surface representation and geometric modeling. Mathematics and algorithms are studied. Topics include Bezier and B-spline curves and surfaces and geometric modeling techniques.
COS 425 - Animation
An advanced graphics course with emphasis on techniques for rendering and animation. Mathematics and algorithms are studied. Topics include light and illumination models, ray tracing, methods to enhance realism, and standard animation techniques. A professional software package will be used to create a significant animation.
COS 432 - Software Reverse Engineering and Analysis
A study of defensive programming techniques, platform security, secure software engineering, software reverse engineering, and vulnerability analysis. Students will perform static and dynamic software analysis, identify and analyze malicious software, and apply tools and techniques for identifying software vulnerabilities.
COS 433 - Missions Computing Senior Project
Combining computer science and service to the missions community, students travel to an international location during Interterm to undertake software development and systems analysis for a missions partner. Students design, construct, test, document, and deploy a non-trivial software system that meets the partner's requirements. Students experience the local culture and participate in direct ministry as opportunities arise. Students share their experience on campus in a formal paper, presentation, and poster. Satisfies the senior project requirement. Meets foundational core cross-cultural requirement
COS 435 - Theory of Computation
A theoretical treatment of what can be computed and how efficiently computation can be done. Topics include models of computation and automata, deterministic and non-deterministic computations, and formal language theory.
COS 436 - Parallel and Distributed Computation
A study of concepts and models of distributed and parallel computing, including concurrency, synchronization, algorithms, hardware organization, and common programming environments. Implementation of parallel algorithms on multicore CPUs and many-core GPUs.
COS 450 - Directed Research
Investigative learning involving closely directed research and the use of such facilities as the library or laboratory. Independent or small group projects.
COS 452 - Research I
Participation in a research project under faculty direction.
COS 453 - Research II
Participation in a research project under faculty direction. A formal presentation of results is required.
COS 480 - Seminar
A limited-enrollment course designed especially for upper-class majors with emphasis on directed readings and discussion.
COS 490 - Honors
Individualized study or research of an advanced topic within a student’s major.
COS 491 - Senior Engineering Project I
The first of a three course culminating experience preparing students for engineering practice through a major design and implementation project.
COS 492 - Senior Project
Designed to exercise each senior’s technical analysis, design, and development skills and showcase his/her documentation and presentation skills. The student develops a project through multiple phases of the software lifecycle frequently beginning at the design stage. The project is typically chosen to reflect the student’s area of concentration.
COS 493 - Computer Science Senior Capstone
A survey of topics useful for graduates of the department, but not covered by other courses. The emphasis is on non-technical issues such as making a budget, finding a church, balancing career and family, etc. The course is conducted as a trip off-campus to further strengthen relationships with the department.
COS 494 - Senior Engineering Project II
The second in a three course culminating experience preparing students for engineering practice through a major design and implementation project.
COS 495 - Senior Engineering Project III
The third of a three course culminating experience preparing students for engineering practice through a major design and implementation project. It includes the Engineering poster session for assessment of the project