Information about

112. Introduction to 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, networks, and artificial intelligence. A student cannot receive credit for both CSCI 112 and CSCI 114.
Two Credits Staff Fall Semester

140. Business Computing --This course introduces students to the computing skills needed in the completion of the Business Administration major 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, data communications, statistical packages and database processing. This course may not be counted toward a computer science major.
Four Credits Staff Both Semesters

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 the operating system, utility processors, and file management will be included. Corequisite: Mathematics 131.
Three Credits Staff Spring Semester

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. This course has a laboratory component.
Four Credits Staff Both Semesters

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. Prerequisite: Computer Science 225.
Four Credits Staff Spring Semester

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 several extensive programs in these languages. Prerequisite: Computer Science 225.
Two Credits Staff Fall Semester

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, divideand-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. Prerequisite: CSCI 235.
Four Credits Staff Fall Semester

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.Prerequisite: CSCI 225.
4 Credits Spring Semester

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.
One, Two, Three, or Four Credits Staff

321. Applications Programming A first course in state-of-the-practice programming applications. This will include a study of design patterns, and current development tools and technologies. Students work together in teams to design, implement and test substantial applications. Best practices in the development process will be emphasized. Prerequisite: CSCI 112 and 235. Offered even years.
Four Credits Staff Fall Semester

342. Computer Graphics --An introduction to the concepts, techniques, algorithms, and data structures used in computer graphics and image processing. Topics include transformations, clipping, windowing, perspective, hidden lines and surfaces, color, shading, ray tracing, edge detection, and compression.Prerequisite: CSCI 112 or 114 and 235. Offered even years.
Four Credits McFall Fall Semester

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. Prerequisite: CSCI 112, 245; corequisite CSCI 265. Offered even years.
Four Credits Staff Spring Semester

361. Programming Language Paradigms --This course offers an in-depth study of programming language paradigms including concepts of imperative, object-oriented, functional, and logic-oriented languages. These concepts include control structures, data aggregates, and procedural abstraction. Scripting languages will be examined as examples of these principles. Students will program in languages that belong to these paradigms. Prerequisite: CSCI 112, 235, and 245. Offered even years.
Four Credits Staff Spring Semester

376. Computer Networking --This course provides a study of computer networking architecture and protocols, using the TCP/IP 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, 235 and 245. Offered odd years.
Four Credits Jipping Spring Semester

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, 255; corequisite CSCI 245. Offered odd years.
Four Credits Staff Fall Semester

392. Database Systems -- This course examines database architecture by examining application design and looking at external, conceptual, and internal levels of databases. We also study the use of database software tools. 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. Prerequisite: CSCI 112 or 114 and 235. Offered odd years.
Four Credits McFall Fall Semester

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. Prerequisite: Computer Science 112 or 114, and 250.
Two Credits Staff Spring Semester

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: Computer Science 112 or 114 and 235 and senior standing.
Two Credits Staff Fall Semester

490. Independent Study and 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. Prerequisite: permission of the chairperson of the department.
One, Two, Three, or Four Credits Staff

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. Prerequisite: permission of the chairperson of the department or the director of internships.
One, Two, Three, or Four Credits Staff

495. Advanced Studies in Computer Science --A course designated for junior and senior computer science majors which covers an advanced topic in computer science. Recent offerings have been compiler construction, web technologies, Java technologies, human-computer interface and artificial intelligence. This course is offered at least once each year and may be repeated for additional credit with a different topic. Prerequisite: permission of the chairperson of the department.
One, Two, Three, or Four Credits Staff