Computer Science (CSCI)
Introductory course in computer science and the study of algorithms appropriate for students in data-intensive disciplines. Topics include how computers work, simple algorithms and their efficiency, problem solving methods, networking, databases, security and the social impact of computing. Students will be introduced to an object-oriented programming language: Python.
Terms Typically Offered: Fall and Spring.
This course will provide a basic introduction to of all aspects of cybersecurity including business, policy and procedures, communications security, network security, security management, legal issues, political issues, and technical issues. This serves as the introduction to the cyber security track in the computer science program."
Prerequisite: CSCI-110C
Terms Typically Offered: Spring, odd years.
This course is designed to familiarize the student with programming as an activity and coding in the Java language in particular. It will also serve as an introduction to object-oriented programming in general. Topics covered will include: data types and operators; flow control statements; classes, objects, and methods; inheritance; packages and interfaces; exception handling; and input/output.
Prerequisite: CSCI-110C
Terms Typically Offered: Spring.
Explores front-end web development technologies and techniques with a focus on HTML, CSS, JavaScript and supporting libraries and frameworks. Students should be familiar with basic programming and database concepts prior to taking this course. Topics include database design, scalability, security, and user experience. Through hands-on projects, you'll learn to write and use APIs, create interactive UIs, and leverage cloud services. By course's end, students will emerge with knowledge and experience in principles, languages, and tools that empower them to design and deploy applications on the Internet.
Prerequisite: CSCI-110C
Terms Typically Offered: Spring, odd years.
This course covers the fundamental concepts of database systems. Topics include data models (ER, relational, and others); query languages (relational algebra, SQL, and others); implementation techniques of database management systems (index structures, concurrency control, recovery, and query processing); management of semistructured and complex data; distributed and noSQL databases.
Introduction to programming basics (what it is and how it works), binary computation, problem-solving methods and algorithm development. Includes procedural and data abstractions, program design, debugging, testing, and documentation. Covers data types, control structures, functions, parameter passing, library functions, arrays, inheritance and object oriented design. Lecture Lab Combination. Laboratory exercises in Python.
Prerequisite: CSCI-110C
Terms Typically Offered: Fall, odd years.
Terms Typically Offered: On Demand.
This is an intermediate algorithms course with an emphasis on teaching techniques for the design and analysis of efficient algorithms, emphasizing methods of application. Topics include divide-and-conquer, randomization, dynamic programming, greedy algorithms, incremental improvement, complexity, and cryptography.
Prerequisite: MATH-375
Terms Typically Offered: Fall, even years.
This course covers the basic concepts and design tradeoffs of programming languages. Examine different languages and compare their properties as well as the cost-benefits of different implementations. The first half of the course focuses on functions, types, scope, storage management, exceptions, and continuations. The second half covers object-oriented features and concurrency.
Prerequisite: CSCI-208 or CSCI-340
Terms Typically Offered: Fall, odd years.
This course provides an introduction to the methodology and procedures associated with digital forensic analysis in a network environment. Students will develop an understanding of the fundamentals associated with the topologies, protocols, and applications required to conduct forensic analysis in a network environment. Students will learn about the importance of network forensic principles, legal considerations, digital evidence controls, and documentation of forensic procedures. This course will incorporate demonstrations and laboratory exercises to reinforce practical applications of course instruction and will require an independent research paper related to the course topic.
Prerequisite: CSCI-205
Terms Typically Offered: Spring, even years.
This course investigates abstract data types (ADTs), recursion, algorithms for searching and sorting, and basic algorithm analysis. ADTs to be covered include lists, stacks, queues, priority queues, trees, sets, and dictionaries. The emphasis is on the trade-offs associated with implementing alternative data structures for these ADTs.
This course is an overview of the principles and practices of digital investigation. Fundamentals and the importance of digital forensics is emphasized. Students learn different techniques and procedures that enable them to perform a digital investigation with a primary focus on the analysis of physical storage media and volume analysis. It covers the major phases of digital investigation such as preservation, analysis and acquisition of artifacts that reside in hard disks and random-access memory. Upon completion of the course, students will be able to apply open-source forensics tools to perform digital investigations and understand the underlying theory behind these tools.
Prerequisite: CSCI-110C
Terms Typically Offered: Spring, even years.
An introduction to the design and analysis of computer communication networks. Topics include application layer protocols, Internet protocols, network interfaces, local and wide area networks, wireless networks, bridging and routing, and current topics. Lecture.
This course will introduce modern operating systems. The course will begin with an overview of the structure of modern operating systems. And then will analyze in detail each of the major components of an operating system (from processes to threads), and explore more advanced topics in the field, including memory management and file input/output. Covers the classical internal algorithms and structures of operating systems, including CPU scheduling, memory management, and device management. Considers the unifying concept of the operating system as a collection of cooperating sequential processes. Covers topics including file systems, virtual memory, disk request scheduling, concurrent processes, deadlocks, security, and integrity. The focus is on UNIX-based operating systems, though learning will also cover alternative operating systems, including Windows. Lecture, 3 hours. A complementary lab course allows students to practice and implement topics from lecture.
Prerequisite: CSCI-208
Terms Typically Offered: Fall, even years.
This course covers the fundamental concepts of database systems. Topics include data models (ER, relational, and others); query languages (relational algebra, SQL, and others); implementation techniques of database management systems (index structures, concurrency control, recovery, and query processing); management of semistructured and complex data; distributed and noSQL databases.
Learn how to apply an engineering approach to computer software design and development by focusing on topics like life cycle models, software requirements, specification, conceptual model design, detailed design, validation and verification, design quality assurance, software design/development environments, and project management.
Modern computer technology requires an understanding of both hardware and software, since the interaction between the two offers a framework for mastering the fundamentals of computing. The purpose of this course is to cultivate an understanding of modern computing technology through an in-depth study of the interface between hardware and software. An overview of computer architecture, which stresses the underlying design principles and the impact of these principles on computer performance will be surveyed. General topics include design methodology, processor design, control design, memory organization, system organization, and parallel processing. Lecture, 3 hours. A complementary lab course allows students to practice and implement topics from lecture.
The goal of this course is to understand the fundamental limits on what can be efficiently computed in our universe and other possible universes. These limits reveal deep and mysterious properties about information, knowledge, and processing, as well as practical issues about what can and cannot be computed. The course introduces the foundations of automata theory, computability theory, and complexity theory. Shows relationship between automata and formal languages. Addresses the issue of which problems can be solved by computational means (decidability vs undecidability), and introduces concepts related to computational complexity of problems. Lecture, 3 hours.
This course may be taken for a maximum of four (4) units in one semester. A maximum of six (6) combined unit credits for CSCI-450 or CSCI-485 apply to graduation. This course is designed with the purpose of providing students the opportunity to conduct research off-campus at universities or companies in the community. This course promotes early entry into the workplace for the student through part-time employment. This course requires actual work experience be sought in an appropriate business firm providing an opportunity to integrate classroom teaching in practical application under the direct supervision of the assigned instructor. Students are responsible for completing a project report and presenting their research results in CSCI-499C. Registration is limited to juniors or seniors.
Terms Typically Offered: On Demand.
Terms Typically Offered: On Demand.
This course provides the student with an empirically-based research experience in the computer sciences. Emphasis will be placed on project management, software development, and research documentation skills. This course is a variable credit course. Two units are recommended for all computer science majors. It is expected that a research report be completed at the conclusion of the research project and an oral presentation of the results be given in CSCI-499C. This course may be repeated for credit. Lab fee.
Terms Typically Offered: Summer.
This course includes analysis and evaluation of current research in computer sciences and the integration of faith and learning in the computer sciences. A senior project and an oral presentation of this project is required. In-class presentations by faculty and guests are a part of the course. This course fulfills the Core Curriculum Capstone requirement for Computer Science majors.
Prerequisite: CSCI-411
Terms Typically Offered: Spring.
Modern computer technology requires an understanding of both hardware and software, since the interaction between the two offers a framework for mastering the fundamentals of computing. The purpose of this course is to cultivate an understanding of modern computing technology through an in-depth study of the interface between hardware and software. An overview of computer architecture, which stresses the underlying design principles and the impact of these principles on computer performance will be surveyed. General topics include design methodology, processor design, control design, memory organization, system organization, and parallel processing. Lecture, 3 hours. A complementary lab course allows students to practice and implement topics from lecture.
Terms Typically Offered: Fall, even years.
Learn how to apply an engineering approach to computer software design and development by focusing on topics like life cycle models, software requirements, specification, conceptual model design, detailed design, validation and verification, design quality assurance, software design/development environments, and project management.
Terms Typically Offered: Spring, odd years.