Computer Science

Computer science is a dynamically growing discipline.

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 Tablet PCs 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 project seminar 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, or software engineering.

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 34 credits in computer science courses, not including 140. These 34 credits must include CSCI 112 or equivalent, 225, 235, 245, 255, 265 and 481, 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.

The requirement for the B.S. degree in computer science is a plan of study approved by the department that includes at least 40 credits in computer science courses, not including 140. These 40 credits must include CSCI 112 or equivalent, 225, 235, 245, 255, 265, 470 and 481, 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. 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 40-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, 225 and at least 10 credits from courses numbered higher than 225. CSCI 140 does not count towards a computer science minor.

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. A student may not receive credit for both CSCI 112 and GEMS 163.
2 Credits | Fall | Natural Science II (NS2)

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)

160. Scientific Computer Programming — An introduction to computers, programming, and methods of scientific problem solving and data reduction. Numerical methods tuned to scientific needs will be introduced. Features of operating systems and file management will be included. Students who have received credit for CSCI 235 may not enroll in CSCI 160 without permission of the department chairperson. Students may take Math 131 either prior to enrollment in or concurrently with the class.
Prerequisites: Math 131
Corequisites: Math 131
3 Credits | Spring

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

225. 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)

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 225 with a grade of C- or better
4 Credits | Spring

245. Programming Language Paradigms — This course provides an introduction to several different programming language paradigms and their approaches to problem solving. This will include a system level language utilizing memory allocation and pointers, a scripting language, a functional language and a declarative language. Students will develop programs in these languages.
Prerequisites: Csci 225 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 225 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 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 and image processing. 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, 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, lazy evaluation and pattern matching of arguments, and query evaluation.
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 — Study of classical algorithms of computer science, techniques for algorithm design, and analysis of algorithms. Topics include search tree construction, tree balancing techniques, algorithms from graph theory and computational geometry, string matching algorithms, skip lists and hash tables, and techniques for parallel algorithms.
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 of forms and reports; 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; storage structures and access methods; and object-oriented databases.
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

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 Project Seminar — 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 112 or equivalent with a grade of C- or better, Csci 235 with a grade of C- or better, Senior standing
2 Credits | Fall

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

  • Cusack, Dr. CharlesHope CollegeComputer Science Department

    VanderWerf-Room 233 27 Graves Place Holland, MI 49423-3617

    Work616.395.7271

    More Information
  • DeJongh, Dr. MatthewHope CollegeComputer Science Department

    VanderWerf Hall - Room 229 27 Graves Place Holland, MI 49423-3617

    Work616.395.7429

  • Hilldore, AmandaHope CollegeComputer Science Department

    VanderWerf 108 27 Graves Place Holland, MI 49423-3698

    Work616.395.7510

  • Jipping, Dr. MichaelHope CollegeComputer Science Department

    VanderWerf-Room 231 27 Graves Place Holland, MI 49422-9000

    Work616.395.7509

    More Information
  • Johnson, ChrisHope CollegeComputer Science Department

    VanderWerf Hall 27 Graves Place Holland, MI 49423

    Work616.395.7510

  • McFall, Dr. RyanHope CollegeComputer Science Department

    VanderWerf-Room 220 27 Graves Place Holland, MI 49423-3617

    Work616.395.7952

    More Information