Computer Science
The field of Computer Science encompasses the hardware, software and theory that underlie digital technology, along with applications built upon it. Study of Computer Science prepares students for careers in Software Engineering, Data Science, Cybersecurity and Information Technology, as well as for Master's and Ph.D programs.
The Department of Computer Science is committed to providing students with a program that includes the basic fundamentals of the field and allows students the flexibility to pursue in depth many of the diverse areas into which computer science is expanding. This is accomplished by providing both instruction in the theoretical principles and experience with a diverse collection of modern hardware and software technologies. The faculty and students of the department cooperatively carry out research in the areas of web technologies, bioinformatics, networking, educational technology, combinatorial algorithms and mobile computing.
COMPUTER RESOURCES
The computing facilities at Hope College give the student an opportunity to obtain a rich variety of experiences. The Department of Computer Science supports a laboratory with a network of workstations, which facilitate work with Microsoft Windows, Linux and Mac OSX. These systems provide a window-based user interface, high-resolution graphics, a parallel processing environment and high-speed computation. They are located in a general student laboratory, a research laboratory and a unique laboratory-classroom combination. This laboratory-classroom contains 25 professional-grade laptops and is used for all computer science classes to incorporate hands-on laboratory experiences. In addition, the departmental facilities provide access to many other types of computing: tablet PCs, handheld computers and mobile phones. The departmental network is also accessible from residence halls via direct network connection and throughout campus via wireless access. Many personal computers are available for use by students and faculty and are located throughout the campus in dorms and labs.
COMPUTER ENGINEERING
Please consult the Department of Engineering about the Computer Engineering Emphasis.
PREREQUISITE POLICY
Many courses in the department have prerequisites listed. A grade of C- or better is required in such courses for the prerequisite to be fulfilled. If a grade below C- has been received, the course requiring the prerequisite may not be taken without the written permission of the instructor and the chairperson of the department.
Majors
The department offers major programs that emphasize problem solving and communication skills and allow students the flexibility to design programs suitable for their interests and goals. Each student's major program, designed by the student and a departmental advisor, includes a core of computer science courses, a strong component of courses in some field to which computer science can be applied and a senior capstone project involving research or software development under the supervision of a member of the Hope College faculty. By following an appropriate major program, students may prepare themselves for graduate study in computer science or careers involving applications programming, systems programming, systems and network analysis, computer graphics, web technology, bioinformatics, mobile computing, teaching, software engineering, data science and cybersecurity.
- Computer Science
-
The 300-level courses are divided into three different groups:
- CSCI 361, 385 – Computing Foundations
- CSCI 321, 342, 392 – Applications
- CSCI 336, 354, 376 – Systems
In order to ensure a breadth of student experience, both the B.A. and B.S. degrees require courses taken from multiple groups.
The requirement for a B.A. degree in computer science is a plan of study approved by the department that includes at least 36 credits in computer science courses, not including 140. These 36 credits must include CSCI 112 or equivalent, 125, 235, 245, 255, 265, 481, and 482, and must include at least 8 credits of 300-level courses. At least one 300-level course must be taken from two of the three groups listed above. CSCI 481 and 482 must be taken in the same academic year. ENGS 210 can count toward the major as 2 credit hours at the equivalent level of the CSCI 195, Python class. ENGS 322 and 326 can count toward the major as a total of 6 credit hours of hardware content, equivalent to CSCI 265 plus 2 credits.
The requirement for the B.S. degree in computer science is a plan of study approved by the department that includes at least 42 credits in computer science courses, not including 140. These 42 credits must include CSCI 112 or equivalent, 125, 235, 245, 255, 265, 470, 481, and 482, and must include at least 12 credits of 300-level courses. At least one 300-level course must be taken from each of the three groups listed above. CSCI 481 and 482 must be taken in the same academic year. MATH 131, 132 and EITHER one 3-credit or 4-credit mathematics course for which 132 is a pre-requisite OR Both MATH 311/312 are required in addition to the 42-credit computer science requirement. A total of 60 credits in the natural sciences must be completed. Mathematics and computer science courses count toward this 60-credit requirement.
Minors
- Computer Science
-
A minor in computer science consists of a minimum of 20 credits in computer science, including CSCI 112, 125 and at least 10 credits from courses numbered higher than 225. CSCI 140 does not count towards a computer science minor.
ENGS 210 can count toward the minor as 2 credit hours at the equivalent level of the CSCI 195, Python class. ENGS 322 and 326 can count toward the minor as a total of 6 credit hours of hardware content, equivalent to CSCI 265 plus 2 credits.
Computer Science
112. Exploring Computer Science — This course explores the discipline of computer science by looking at computer science
at many levels, from how the computer represents information digitally to how programs
are constructed to take advantage of the capabilities of the machine. Students will
be introduced to a variety of topics within the field of computer science, including
data representation, computer architecture, operating systems and networks.
2 Credits | Fall, Spring
125. Software Design and Implementation — An introduction to the techniques and practices of software design and implementation,
including top-down design, object-oriented principles, advanced programming concepts,
and the use of software development tools. Students will gain substantial experience
with the Java programming language.
4 Credits | Fall, Spring | Natural Science I with lab (NSL)
140. Business Computing — This course introduces students to the computing skills needed in the completion of
the Management and Accounting majors at Hope College and to become a successful computer
user in a business career. Students learn the fundamentals of operating systems, spreadsheet
processing in Microsoft Excel, and querying relational databases using Microsoft Access.
This course may not be counted toward a computer science major or minor.
4 Credits | Fall, Spring | Natural Science II (NS2)
150. Web Design & Implementation — Students in this course will learn about the processes used to design and implement
web sites that are both functional and aesthetically pleasing. This includes an overview
of the user centered development process, including task analysis, user analysis prototyping
and usability testing. Several aspects of how to make a site visually attractive will
be covered as well. Students will learn the fundamental technologies and tools needed
to build a significant web site. A large number of interrelated technologies make
up the web, including the Hypertext Transport Protocol, the Hypertext Markup Language,
and Cascading Stylesheets. Students will gain a significant amount of experience using
these technologies.
4 Credits | Spring | Natural Science I with lab (NSL)
195. Studies in Computer Science — A course offered in response to student and instructor interest. Topics are not generally
covered in the regular course listings. Course may be taken multiple times if topics
are different.
0-4 Credits | As Needed
235. Data Structures and Software Design — An introduction to the fundamental data structures of computer science, the design
methodologies of software and the basic algorithms for these. Data structures such
as stacks, queues, binary trees and priority queues will be included. Software design
and development methods such as object oriented design, design patterns and basic
algorithm analysis will also be covered. Projects utilizing these data structures
and design methods will be completed. Emphasis will be placed on the partnership between
algorithms and data structures.
Prerequisites: CSCI 125 with a grade of C- or better
4 Credits | Fall, Spring
245. Programming Language Paradigms — This course provides an introduction to several different programming language paradigms
and their approaches to problem solving. This includes a system level language utilizing
memory allocation and pointers, a scripting language and a functional language. Students
will develop programs in these languages.
Prerequisites: CSCI 125 with a grade of C- or better
2 Credits | Fall
255. Introduction to Algorithms & Discrete Structures — An introduction to the design and analysis of algorithms along with some of the discrete
mathematical structures that are fundamental to the field of Computer Science. This
course builds on the data structures topics from CSCI 235 by exploring efficient ways
of using them to solve problems. Algorithm analysis topics include best, worst, and
average case analysis of iterative and recursive algorithms; asymptotic notation;
and solving recurrence relations. Algorithm design techniques include brute force,
greedy, divide-and-conquer, dynamic programming, and space/time tradeoff. Discrete
structures topics include propositional logic, proof techniques (especially induction),
sets, matrices, sequences and summations, and basic combinatorics.
Prerequisites: CSCI 235 with a grade of C- or better
4 Credits | Fall
265. Introduction to Computer Organization and Architecture — This course provides an introduction to the organization of computer hardware and
the architecture of a computer’s various hardware components. The course will examine
hardware from the bottom up, examining gates, circuits, memory and arithmetic/logic
unit organization and microprocessor architecture. The course covers the Boolean algebra
needed for digital logic design. It also covers assembly language programming.
Prerequisites: CSCI 112 or equivalent with a grade of C- or better, CSCI 235 with a grade of C- or
better
4 Credits | Spring
295. Studies in Computer Science — A course offered in response to student interest and need. Deals with topics in computer
science that are not included in regular courses.
1-4 Credits | As Needed
321. Applications Programming — A course in state-of-the-art programming practices. This will include a study of design
patterns, and current development tools and techniques. Students work together in
teams to design, implement and test substantial applications. Best practices in the
development process will be emphasized.
Prerequisites: CSCI 112 or equivalent with a grade of C- or better, CSCI 235 with a grade of C- or
better
4 Credits | Fall, Even Years
336. Computer & Network Security — This course provides an introduction to computer and network security by examining
security issues, policies, and preventative measures. Topics include threats to networks
and operating systems, system software vulnerability, network intrusion, and various
types of malware, including viruses and worms. Each vulnerability is accompanied by
practices to prevent attack.
Prerequisites: CSCI 112 or equivalent with a grade of C- or better, CSCI 235 with a grade of C- or
better, CSCI 245 with a grade of C- or better
4 Credits | Fall, Odd Years
342. Computer Graphics — An introduction to the concepts, techniques, algorithms, and data structures used
in 2D and 3D computer graphics. Topics include transformations, clipping, windowing,
perspective, hidden lines and surfaces, color, shading, and ray tracing.
Prerequisites: CSCI 112 or equivalent with a grade of C- or better, CSCI 235 with a grade of C- or
better
4 Credits | Fall, Even Years
354. Operating Systems — This course provides an overview of operating systems, including operating system
functions and support functions for operating systems. Students will gain hands-on
experience with the Unix operating system. Students may take Csci 265 either prior
to enrollment in or concurrently with the course.
Prerequisites: CSCI 112 with a grade of C- or better or equivalent, CSCI 235 with a grade of C- or
better, CSCI 245 with a grade of C- or better, CSCI 265 with a grade of C- or better
Corequisites: CSCI 265
4 Credits | Spring, Even Years
361. Programming Language Design & Implementation — This course provides a study of design and implementation considerations for imperative,
object-oriented, functional and declarative programming languages. Students will learn
these concepts through hands-on projects building interpreters and compilers for representative
languages. Topics include representation of objects and classes, implementation of
variable bindings and function calls, pattern matching of arguments, and virtual machines.
Prerequisites: CSCI 112 or equivalent with a grade of C- or better, CSCI 235 with a grade of C- or
better, CSCI 245 with a grade of C- or better
4 Credits | Spring, Even Years
376. Computer Networking — This course provides a study of computer networking architecture and protocols, using
the TCP/IP protocol suite as our primary example. We will study application-level
protocols such as electronic mail, remote login, and file transfer. We will learn
about network management and interconnecting heterogeneous networks. We will study
different types of transmission media and media access protocols. Students will gain
experience writing client-server applications and network analysis programs.
Prerequisites: CSCI 112 or equivalent with a grade of C- or better, CSCI 235 with a grade of C- or
better, CSCI 245 with a grade of C- or better
4 Credits | Spring, Odd Years
385. Advanced Data Structures and Algorithms — This course presents some of the classical algorithm design and analysis techniques.
These include an in-depth study of brute force, divide-and-conquer, dynamic programming,
and greedy algorithms, as well as an introduction to more advanced techniques such
as backtracking, branch-and-bound, iterative improvement, and approximation algorithms.
Techniques for parallel algorithms will also be discussed, including divide-and-conquer
parallelism, maps, and reductions.
Prerequisites: CSCI 112 or equivalent with a grade of C- or better, CSCI 255 with a grade of C- or
better
4 Credits | Spring, Odd Years
392. Database Systems — This course examines database architecture by examining application design and looking
at external, conceptual, and internal levels of databases. Topics include the development
of queries through query languages; the design and layout of a database; the design
and implementation of front-ends; the relational model; protection issues including
recovery, concurrency, security, and integrity; distributed database concepts; optimization
strategies; and storage structures and access methods.
Prerequisites: CSCI 112 or equivalent with a grade of C- or better, CSCI 235 with a grade of C- or
better
4 Credits | Fall. Odd Years
395. Studies in Computer Science — A course offered in response to student interest and need. Deals with topics in computer
science that are not included in regular courses.
1-4 Credits | As Needed
470. Languages and Machines — This course examines the theoretical foundations of computer science. It studies the
relationship between finite-state machines and various language models. Computability
theory is also studied.
Prerequisites: CSCI 112 or equivalent with a grade of C- or better, CSCI 255 with a grade of C- or
better
2 Credits | Spring, Odd Years
481. Senior Capstone Project I — Each student will complete a major software or research project, either individually
or as a part of a team. Ethical aspects of computer science will be discussed. This
course is required of all computer science majors.
Prerequisites: Senior standing, CSCI 112 or equivalent with a grade of C- or better, CSCI 235 with
a grade of C- or better
2 Credits | Fall
482. Senior Capstone Project II — Each student will complete a major software or research project, either individually
or as a part of a team. Ethical aspects of computer science will be discussed. This
course is required of all computer science majors.
Prerequisites: CSCI 481 with a grade of C- or better
2 Credits | Spring
490. Research in Computer Science — Independent study or research project carried out in some area of advanced computer
science or in the application of the computer to another discipline. This project
will be carried out under the supervision of one or more designated staff members.
Prerequisites: Permission of instructor
0-3 Credits | Fall, Spring
491. Internship in Computer Science — This program offers the student an opportunity to work on a project or an experience
approved by the department as being of significance in computer science. This is usually
done off campus and the student will have a qualified supervisor at the site of this
experience in addition to a faculty advisor. This course is normally open only to
senior computer science majors.
Prerequisites: Permission of department internship coordinator
1-4 Credits | Fall, Spring, Summer
495. Advanced Studies in Computer Science — A course designated for junior and senior computer science majors which covers an
advanced topic in computer science. This course may be repeated for additional credit
with a different topic.
Prerequisites: Permission of instructor
1-4 Credits | As Needed
- Anderson, ShawnComputer Science Department
VanderWerf Hall 27 Graves Place Room 220 Holland, MI 49423
616.395.7510
smanderson@hope.edu - Bassett, BruceComputer Science DepartmentEngineering Department
VanderWerf Hall Room 220 27 Graves Place Holland, MI 49423
616.395.7510
bassettb@hope.edu - Cusack, Dr. CharlesComputer Science DepartmentMathematics and Statistics Department
VanderWerf Hall Room 223 27 Graves Place Holland, MI 49423-3617
616.395.7271
cusack@hope.eduMore Information - DeJongh, Dr. MattComputer Science DepartmentGeneral EducationInterdisciplinary Studies
VanderWerf Hall Room 229 27 Graves Place Holland, MI 49423-3617
616.395.7429
dejongh@hope.eduMore Information - Doolittle, StephanieMathematics and Statistics DepartmentComputer Science DepartmentEngineering DepartmentPhysics Department
VanderWerf-Room 204 27 Graves Place Holland, MI 49423-3617
616.395.7530
doolittle@hope.eduMore Information - Hilldore, AmandaEngineering DepartmentComputer Science DepartmentPhysics Department
VanderWerf 108 27 Graves Place Holland, MI 49423-3698
616.395.7510
hilldore@hope.eduMore Information - Jipping, Dr. MichaelComputer Science Department
VanderWerf-Room 231 27 Graves Place Holland, MI 49422-9000
616.395.7509
jipping@hope.eduMore Information - McFall, Dr. RyanComputer Science Department
VanderWerf Hall Room 220 27 Graves Place Holland, MI 49423-3617
616.395.7952
mcfall@hope.eduMore Information - Olagbemi, Dr. Omofolakunmi (Fola)Computer Science Department
VanderWerf Hall Room 232 27 Graves Place Holland, MI 49423
616.395.7146
olagbemi@hope.eduMore Information - Stoel, CathyGeological and Environmental Science DepartmentComputer Science DepartmentEngineering DepartmentMathematics and Statistics DepartmentPhysics DepartmentEnvironmental Science
Schaap Science Center 2107 & VanderWerf 204 35 East 12th Street & 27 Graves Place Holland, MI 49423-3605
616.395.7510/7540
stoel@hope.eduMore Information