Hope College Computer Science students at work View of VanZoeren Hall    
hope college > academic departments > computer science    

 
Current Students <
Prospective Students <
Alumni <
Courses <
Research <
Faculty <
 

COMPUTER SCIENCE
Faculty: Mr. DeJongh, Mr. Dershem, Mr. Jipping (Chairperson), Mr. McFall.


Computer science is a dynamically growing discipline. In recognition of this fact, 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 modem hardware and software technologies. The faculty and students of the department cooperatively carry out research in the areas of web technologies, algorithm animation, software engineering, networking, and handheld 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 network of 35 powerful Unix workstations for classroom and research work. 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 12 student workstations and is used for all computer science classes to incorporate hands-on laboratory experiences. The departmental network is also accessible from residence halls via direct network connection. Many personal computers are available for use by students and faculty, and are located throughout the campus in dorms and labs. All students have access to electronic mail and the Internet.


THE COMPUTER SCIENCE MAJOR --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 computer science careers involving applications programming, systems programming, systems analysis, computer design, teaching, or software engineering.


COMPUTER SCIENCE MAJOR REQUIREMENTS --The requirement for an A.B. degree in Computer Science is a plan of study approved by the department that includes at least 32 credits in Computer Science courses, not including 140. These 32 credits must include Computer Science 112 or 114, 225, 231, 241, 250, 260, and 481 and must include at least 8 credits of 300-level courses.

The requirement for the B.S. degree in Computer Science is a plan of study approved by the department that includes at least 38 credits in Computer Science courses, not including 140. These 38 credits must include Computer Science 112 or 114, 225, 231, 241, 250, 260, 470, and 481 and must include at least 12 credits of 300-level courses. Mathematics 131, 132, and one 4-credit Mathematics course for which 132 is a prerequisite are required in addition to the 38-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 total.


COMPUTER SCIENCE MINOR --A minor in Computer Science consists of a minimum of 18 credits in Computer Science, including Computer Science 225 and at least 10 credits from courses numbered higher than 225.

COURSES OFFERED


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 Both Semesters

114. Introduction to Computer Science --This course combines an exploration of the discipline of Computer Science with an introduction to programming methods and techniques. The student will explore the discipline by looking at computer science at many levels, including data representation, computer architecture, operating systems, networks, and artificial intelligence. Programming exercises will be done in the Java programming language in a collaborative laboratory environment. A student cannot receive credit for both CSCI 112 and CSCI 114.
Four Credits Staff Both Semesters

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.
Three Credits Staff Both Semesters

160. Scientific Computer Programming --An introduction to computers, FORTRAN and C++ programming, and methods of scientific problem solving and data reduction. Techniques in least squares fitting, sorting, transcendental equations solving, and the Monte Carlo method 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 and the Unix operating system on state-of-the-art workstations. This course has a laboratory component. Prerequisite: Computer Science 120 or equivalent.
Four Credits Staff Both Semesters

231. Introductory Data Structures --An introduction to the fundamental data structures of Computer Science and their accompanying algorithms. Stacks, Queues, Binary Trees, and Priority Queues will be included. Projects utilizing these data structures will be completed. The emphasis will be on choosing the best data structure for a given application. Prerequisite: Computer Science 225.
Two Credits Staff Fall Semester

241. Program Development --An introduction to the techniques and strategies used in the design and implementation of computer programs. File manipulation and recursion will be emphasized. Linked structures through pointer reference will be studied. Students will develop many extensive programs in a higher-level language. Prerequisite: Computer Science 225.
Two Credits Staff Fall Semester

250. Discrete Structures --An introduction to the discrete mathematical structures that are fundamental to the field of Computer Science. Topics include propositional logic, sets, Boolean algebra, switching circuits, functions, relations, and combinatorics. Prerequisite: Computer Science 120.
Two Credits Staff Spring Semester

260. Computer Organization --An introduction to the organization of computers at the register level. Digital logic including gates, circuits, memory organization, and microprocessors. Conventional machine architecture and assembly language programming. Prerequisite: Computer Science 250.
Two Credits Staff Spring Semester

295. Advanced Software Design -- This course will take the students beyond a knowledge of programming language components and give them the ability to apply those components to
the solution of complex problems. Included will be application of Object-Oriented design principles including inheritance and polymorphism. Students will learn and apply the principles of event-driven problem solving. Special emphasis will be placed on code reading, walkthroughs,
debugging and testing strategies, and performance evaluation.
Four Credits Staff Both Semesters

321. Applications Programming -- A first course in state-of-the-practice programming applications. This will include a study of logical structures, graphical user interfaces, forms, menus, files, and event processing. It will also include a study of object-oriented programming, classes, objects, and class modules. Prerequisite: Computer Science 140 or 225. Alternate years, 2003-04.
Four Credits Staff Fall Semester

335. Introduction to Computer Architecture --This course introduces the basics of the design and implementation of computer architecture. Topics include machine modelling, design issues, the design of processors, buses, and memory. Prerequisite: Computer Science 260. Alternate years, 2004-05.
Four Credits Jipping 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: Computer Science 241. Alternate years, 2004-05.
Four Credits McFall Spring 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: Computer Science 241 and 260. Alternate years, 2003-04.
Four Credits Staff Fall Semester

361. Programming Language Design and Implementation --This course introduces the basic concepts of imperative and object-oriented programming languages including control structures, data aggregates, and procedural abstraction. Scripting languages will be examined as examples of these principles. Prerequisites: Computer Science 231 and 241. Alternate years. 2004-05.
Four Credits Dershem Fall Semester

363. Programming Language Paradigms --An in-depth study of programming language paradigms including the functions and the logic-oriented paradigms. Students will program in languages that belong to these paradigms. Prerequisite: Computer Science 361. Alternate years, 2004-05.
Two Credits Dershem Fall Semester

376. Network Design and Implementation --This course introduces the basics of computer net- working. We will study application-level protocols such as electronic mail, remote login, and file transfer. We will learn about network file systems, information systems, and network management. Students will gain experience writing client- server applications. Prerequisite: Computer Science 231. Alternate years, 2004-05.
Two Credits Jipping Spring Semester

378. Network Architecture --This course will look at the functions of higher layer protocols, using the TCP/IP protocol suite as our primary example. We will also study the issues involved with interconnecting heterogeneous networks. We will study different types of transmission media, methods of encoding and transmitting analog and digital data, and media access protocol. Prerequisite: Computer Science 376. Alternate years, 2004-05.
Two 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: 231 and 241. Alternate years, 2003-04.
Four Credits Dershem Spring Semester

392. Database System Design and Implementation --This course introduces the fundamentals of database application design and implementation through 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, and the design and implementation of front-ends. Prerequisite: Computer Science 225. Alternate years, 2003-04.
Two Credits McFall Spring Semester

394. Database Architecture --The architecture of a database system through the external, conceptual, and internal levels. Topics include 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: Computer Science 231,241,250 and 392. Alternate years, 2003-04.
Two Credits McFall Spring 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 250.
Two Credits Dershem 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 225 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