Computer Science (CSCI)
The course introduces computer hardware and software within a focus on microcomputers. Emphasizing hands-on experience with commonly used software packages, the student learns the basics of word processing, spreadsheets and databases.
This course will teach students the introductory skills of programming, problem solving and algorithmic thinking. It has a liberal arts focus, rather than a vocational one. Topics include variables, input/output, conditional statements/logic, Boolean expressions, flow control, loops and functions.
This course will teach students the introductory skills of programming, problem solving and algorithmic thinking in Python. Topics include variables, input/output, conditional statements/logic, Boolean expressions, flow control, loops and functions.
An introduction to computer programming using the Java language. The course will teach the concepts of problem solving and procedural design, and will introduce object-oriented programming through the use of Java. Students will learn to design, code, test, debug and document computer programs.
This course is a continuation of CSCI 200 with a focus on objects, classes, and data structures in Java. Students will learn the implementation and use of Java objects to represent mathematical objects, as well as abstract data types in Java programs.
This course is an overview of contemporary computer issues as it applies to current business procedures. The course emphasizes hands-on experience with common desktop and internet-based software for creating technology- enhanced projects. Using advanced internet search techniques and evaluation of sources will also be a component. An important theme of this course also considers the ethical implications of technology's usage, and how technology relates to a Christian worldview.
This course covers database design, database management systems, and database models, particularly relational databases. Student will learn query languages including SQL and postgreSQL, as well as database implementation and management.
The theory and practice behind computer networking design and implementation, particularly related to the internet. Topics include: structure and components of computer networks; routing, addressing, packet switching; network protocols; flow and error control; local area networks; network security.
A study of the techniques and algorithms of operating systems, and implementation of these algorithms. Topics include computer organization; processes, synchronization, scheduling; I/O; memory management; file systems.
An introduction to the theory, design, and implementation of programming languages - the course covers the general concepts common to all programming languages. Language types (functional, procedural, object-oriented, scripting) are compared and implementation strategies are discussed.
This course highlights various technological updates of recent years and provides students with highly relevant and current information as it pertains to the practice of software development. The topics addressed within course include the areas of Software Engineering best practices, dependability & security, advanced Software Engineering concepts, and software management. The course strives to set students on the journey to becoming the innovators of tomorrow and to create software that will make our world a better, safer, and more advanced place to live. The course is an introduction to Software Engineering covering development life cycle models, requirements analysis and specification design concepts and methods, testing, maintenance, CASE tools and management concerns. Additional topics may include reuse metrics, experimentation, reengineering, development environments, and standards.
This course highlights various technological updates of recent years and provides students with highly relevant and current information as it pertains to the practice of software development. The topics addressed within course include the areas of Software Engineering best practices, dependability & security, advanced Software Engineering concepts, and software management. The course strives to set students on the journey to becoming the innovators of tomorrow and to create software that will make our world a better, safer, and more advanced place to live. The course is an introduction to Software Engineering covering development life cycle models, requirements analysis and specification design concepts and methods, testing, maintenance, CASE tools and management concerns. Additional topics may include reuse metrics, experimentation, reengineering, development environments, and standards.
The organization and design of computer systems hardware: processor design, memory design, I/O devices, and the software/hardware interface. Includes assembly language programming, programming in C, data representation and computer arithmetic, boolean algebra.
This course examines algorithms and systems that can learn without being explicitly programmed. Topics include: clustering, classification, prediction, supervised learning, unsupervised learning, decision trees, support vector machines, random forests, and regression. The course begins with an overview of machine learning systems, then escorts students through an end-to-end machine learning project example involving regression. Classification systems are considered and the metrics used to evaluate classifiers are discussed. The training of linear models is discussed, with special attention paid to closed-form solutions and gradient descent algorithms.
This course serves as a capstone for the Computer Science Major. Students will propose and create an end-to-end custom project. Prerequisite: CSCI 405