Program Website: http://www.hiram.edu/computerscience
Overview of Program
The computer science program was established in 1974, and graduated its first minor in 1976 and its first major in 1977. Hiram's computer science alumni, who include leaders in both industry and academia, have praised the combination of rigorous education in the discipline and broad liberal arts education. Our program stresses a deep knowledge of basic principles and concepts, rather than an emphasis on just the latest hot topics. Our students have combined computer science majors with a wide variety of other majors and minors, and leave Hiram with both a rigorous education and practical experience in implementation of large projects.
As a department, we have articulated the mission of the computer science program as follows, aligned with and inspired by the mission for Hiram College:
The mission of the computer science program is:
- To develop ethical, socially responsible, analytical, and critical thinkers.
- To instill in our students a foundation for making creative contributions to society in the computing area.
- To provide challenges to our students within a supportive community.
Preparing for Life After Graduation
Through our Integrated Research Component (IRC) program, we involve each student in undergraduate research. Work produced in the IRCs yields excellent student portfolios when applying for internships, jobs after graduation, and graduate schools. The computer science program encourages our students to apply for internship opportunities to gain workplace experience, as well as to participate in summer undergraduate research programs. Our students have been successful in gaining acceptance to nationally competitive internships and research programs.
Since its inception, over 20% of graduates of the computer science program have completed graduate degrees. Our students have been singularly successful in attaining graduate school acceptances; over the last 10 years, every student who has applied to graduate school has received at least one acceptance. Many of our recent graduates received assistantships from prestigious schools.
Students who complete the bachelor's degree in computer science at Hiram have been very successful in the job market. Students' first job placements are in a wide variety of areas including programming, support, consulting, and systems administration.
Requirements for Majors and Minors
The computer science program offers majors in computer science and applied computer science and a minor in computer science. The primary difference between the majors is that the computer science major goes deeper into computer science, preparing the students for graduate study and research, while the major in applied computer science expects the student to develop connections between computer science and another field. No student can major in both computer science and applied computer science. Students interested in computer engineering can earn a B.A. in computer science or applied computer science and a B.S. in computer engineering through the Dual Degree Program.
Requirements for Program Honors
Besides meeting the college grade-point average requirements, a student must perform exemplary work in the Integrated Research Components.
Program Grade-Point Average
Computer science calculates the program grade-point average by counting all computer science courses, whether meeting the minimum requirements or not.
Reem Alshahrani, (2020) Assistant Professor of Computer Science
B.S., Imam Faisal bin Abdulrahman University;
M.S., Ph.D., Kent State University
Louis T Oliphant, (2009) Associate Professor of Computer Science
B.A., Brigham Young University;
M.S., Ph.D., University of Wisconsin, Madison
Ellen L Walker, (1996) Professor of Computer Science
Sc.B., Brown University;
M.S., Ph.D., Carnegie Mellon University
Daniel Gavazzi, (2019) Adjunct Instructor of Physics
B.A., Hiram College;
M.A., Kent State University
LISP~ An introduction to the LISP programming language. Prerequisites: CPSC 17200 or permission.
C~ An introduction to the C programming language. Prerequisite: CPSC17200 or permission.
FORTRAN~ An introduction to the FORTRAN programming language. Prerequisites: CPSC 17200 or permission.
COMPUTERS & ENTERTAINMENT W/ LAB:MM~ Since the advent of the computer age, new types of entertainment have arisen that take advantage of the new capabilities. These include animations used in games and movies, web sites that support a wide variety of social and leisure activities, and the ability to create complex simulations such as amusement park rides. This course will explore various applications of computing in entertainment as well as some of the underlying principles of computer science. No prior experience with computer science or programming is expected.
Core: Modeling Methods
JAVA SUPPLEMENT~ An intense introduction to the basic concepts in the programming language Java as preparation for CPSC 17200. All work is completed in intense sessions in the first 2-3 weeks of the semester. Only available to students who have met their laboratory science requirement, whose declared academic program requires a programming course, and who have received permission from the instructor. Pass/No Credit Only. Not open to students who have completed CPSC 17100. Prerequisite: Permission of instructor.
Corequisite: CPSC 17200
INTRODUCTION TO COMPUTER SCIENCE-W/LAB:MM~ The introduction to the computer science discipline which establishes a scientific foundation for a variety of topics, including computer programming, computer design, information processing, the algorithmic solution of problems, and the study of the algorithmic process itself. Student must also register for a lab. The breakdown between lecture and lab hours is for administrative office use only. This course may only be taken as 4 credit hours.
Core: Modeling Methods
INTRODUCTION TO PROGRAMMING-W/LAB:MM:~ An introduction to the process of program creation. Students will learn to use the principal facilities of a high-level programming language and to transform algorithms into correct programs. Abstract data types will be stressed. Student must also register for a CPSC 17200 lab. Prerequisites or permission. The breakdown between lecture and lab hours is for administrative office use only. This course may only be taken as 4 credit hours.
Core: Modeling Methods
WORKSHOP~ This workshop will provide the opportunity for students to examine a special topic in Computer Science. Through readings, discussions and written assignments there will be opportunities to evaluate the topic at issue. Workshops may be taken Pass/No Credit only. Students may take no more than nine workshops for credit toward graduation. Workshops can be used as elective credit only. (For CAS students only.)
DATA STRUCTURES AND ALGORITHMS-W/LAB:MM~ A study of a broad spectrum of data structures and algorithms and the use of advanced language facilities and programming techniques for implementing them. Student must also register for a CPSC 20100 lab. Prerequisite: CPSC 17200 with a grade of C or better or permission. The breakdown between lecture and lab hours is for administrative office use only. This course may only be taken as 4 credit hours.
Prerequisite: (CPSC 172 or CPSC 17200)
Core: Modeling Methods
PROBLEM-SOLVING AND PROGRAMMING PRACTICUM~ Successful computer problem-solving relies not only on the development of appropriate algorithms, but also on the recognition of instances of well-defined problem classes for which algorithms already exist. In addition, excellence in computer programming cannot be developed without significant practice in implementing and debugging solutions. This course will provide students with a guided programming practicum, in which they will program solutions to carefully chosen problems that exemplify common problem classes. Many problems will be chosen from recent programming contests. Prerequisite: CPSC 17200 or permission.
SYSTEMS PROGRAMMING~ Systems programming concentrates on an in-depth study of one operating system, such as Unix, and how to write system programs in that operating system. The course will concentrate on the operating system's history, file system structure, commands, utilities, multi-tasking capabilities, communication, security, and shell-type programming. Theory is presented in the context of how the operating system implements the ideas. By the end of the course, students should be able to determine how most of the commands are implemented and how to use operating system properties to create tools and applications. Prerequisite: CPSC 17100 or permission.
Prerequisite: CPSC 171 or CPSC 17100
DESIGNING AND BUILDING COMPUTER GAMES~ Computer gaming is a large and growing industry and the skills needed in the industry can be applied across the field of computer science. In this course you will work in teams to design and build a computer game using these skills. Programming topics covered in the course include threading, graphics and animation, interactivity and user interfaces, sound effects and music, and multi-player gaming over networks. In addition, you will learn skills for working on a large project in a team environment. This course is designed around group work. You will be responsible for one portion of your team’s performance.
Prerequisite: (CPSC 172 or CPSC 17200)
COMPUTER ETHICS:ES~ A consideration of some of the major controversies, key value conflicts, ethical dilemmas, and social choices that drive and shape the computerization of our society. Representative areas of concern will include personal information and privacy, the effect of introducing the computer into the work place, computer crime and fraud, relationships in electronic communities, security and reliability issues, and the use of the information highway. May not be used to satisfy a distribution requirement in the sciences.
Core: Meaning/Ethics/Soc Responsibil
COMPUTER ORGANIZATION~ An introduction to the design, functioning, and control of the subsystems of a computer system: processors, memory, storage, and input/output. Topics include digital logic, combinatorial, sequential, and register-transfer circuits, control unit, interrupt processing, microprogramming, and assembly language. Prerequisites or permission.
COMPUTER VISION~ An introduction to the theory and algorithms needed for automatic interpretation of images. Topics include: image formation, segmentation, stereo, motion and other geometric reasoning techniques, object recognition, and applications. Sources of uncertainty and techniques for recognition in the presence of uncertainty will also be discussed. Students will implement significant parts of a complete object recognition system. Prerequisites or permission.
USER INTERFACE DESIGN~ In order to develop systems that are usable and useful, the interactions between user and system must be considered. This class will focus on designing the user interfaces of computer systems. Students will learn and practice the entire life cycle of a user interface design from modeling the user through designing, developing, and formally evaluating the interface. This course will include a significant group system development project. Prerequisites or permission.
VLSI DESIGN~ Virtually every electronic device includes one or more VLSI (Very Large Scale Integration) "chips." This course will look at how such VLSI chips are designed, concentrating on field-programmable logic devices (FPLDs), which are the chips most commonly used for small-volume consumer devices. The course will cover logic design, schematic capture, and design, using a hardware description language. Students will design and implement projects on actual FPLDs. Prerequisites: CPSC 17100 and CPSC 17200 or permission; CPSC 25200 is recommended.
OPERATING SYSTEMS~ An introduction to operating systems that explores the design principles, internal algorithms, and the abstract data types of operating systems. Topics include concurrent programming principles, storage management techniques, scheduling algorithms, and file management schemes. Prerequisites or permission.
PROGRAMMING LANGUAGES~ A study the concepts underlying programming languages. Students will learn to describe the syntax and semantics of programming languages in a formal manner, to analyze a programming language with respect to its capabilities and limitations for the solution of particular classes of problems, to approach the task of learning a new programming language in an effective manner, and to specify desirable characteristics in a language. Prerequisites or permission.
COMPUTER SECURITY~ An introduction to secure computer systems and a study of their most important responsibilities, including authenticating users, protecting user privacy, and ensuring the privacy, integrity, and availability of the system's data. The student will gain an understanding of techniques and procedures that are being used as well as the challenges that still remain to attain secure computer systems, networks, and the Internet. Prerequisites or permission.
DATABASE DESIGN~ A study of the principles and concepts relevant to the management of complex data systems, especially the relational database model. Students design and implement a complete database system, from requirements analysis through documentation, using a generic database engine. Counts toward e-minor. Prerequisites or permission.
INTRODUCTION TO THE DESIGN AND ANALYSIS OF ALGORITHMS~ Algorithms play the central role in the field of Computer Science. This course will primarily focus on the techniques used for designing algorithms to solve common problems in the field of computer science as well as methods for evaluating an algorithm’s performance. In designing algorithms, the course will look at such methods as brute force, divide-and-conquer, transformation of the problem, and dynamic programming. Analysis techniques will include important concepts such as space-time tradeoffs. Efficiency classes, and mathematical analysis techniques. Mathematical sophistication will be developed. Prerequisite: CPSC 20100 or permission.
Prerequisite: (CPSC 201 or CPSC 20100)
COMPUTER MODELING AND SIMULATION:SM~ An introduction to modeling and simulation to solve real-world system problems. The emphasis will be on gathering data and modeling natural systems. Topics covered will include discrete event simulation, parameter optimization, Markov models, and other system modeling techniques, simulation languages, techniques for running simulation models, and the analysis of the simulation output to gathered data. Prerequisites or permission.
Core: Experimental Scientific Method
COMPUTER NETWORKS~ A study of the fundamentals of the field of data and computer communication. Key topics include the layered architecture, network protocols, and algorithms for accurate and reliable message delivery in both local-area and wide-area networks. Current networking standards will be studied. Prerequisites or permission.
PARALLEL COMPUTING~ An introduction to parallel and distributed architectures, programming languages, operating systems, and algorithms. Students will design and program parallel and distributed algorithms. Prerequisites or permission.
SOFTWARE ENGINEERING~ Students will study both the theoretical and practical aspects of designing and developing large, complex software systems. Readings will emphasize research results and case studies of all phases of the software lifecycle - requirements, specification, design, resource allocation, implementation, integration, and testing. Principles will be applied by the class to various projects. Prerequisites or permission.
SPECIAL TOPICS IN COMPUTER SCIENCE~ Various advanced topics are offered when need and sufficient interest are demonstrated. Credit hours and prerequisites are established for each offering. May be taken more than once with program faculty consent.
ARTIFICIAL INTELLIGENCE~ The goals, problems, concepts, and methods of artificial intelligence are explored. The emphasis is on computer problem-solving paradigms and knowledge representations. Examples of techniques and systems are chosen from the areas of image recognition, human-machine interfacing, game playing, natural-language understanding, robotics, expert systems, and automatic reasoning. Students will design and implement relevant algorithms. Prerequisites: CPSC 20100 or permission.
Prerequisite: CPSC 201 or CPSC 20100
COMPUTER GRAPHICS~ A study of the algorithms and techniques of computer graphics and animation. Topics include display devices, geometric algorithms for displays, interaction methods, hierarchical modeling, lighting color, shading models, and hidden edge and surface algorithms. Students will design and implement various three-dimensional algorithms to produce displays in an interactive environment. Prerequisites or permission.
COMPILER DESIGN AND CONSTRUCTION~ An intense treatment of the theoretical and practical considerations involved in implementing translators for high-level programming languages. Students will design and implement parts of a compiler for a high-level language. Prerequisites: CPSC 17100 and CPSC 17200, and at least one computer science course above the 20000 level, or permission.
INTEGRATED RESEARCH COMPONENT I~ The student will propose and complete a plan to investigate a research topic that is integrated with the specified course. The plan must include a substantial implementation demonstrating some aspect of the research, a journal-quality research paper, and a formal talk presented to peers and faculty. Corequisite: Specified 30000-level computer science course. Prerequisite: CPSC 20100 or permission.
Prerequisite: (CPSC 201 or CPSC 20100)
INTEGRATED RESEARCH COMPONENT II~ The student will propose and complete a plan to investigate a research topic that is integrated with the specified course. The plan must include a substantial implementation demonstrating some aspect of the research, a journal-quality research paper, and a formal talk presented to peers and faculty. Corequisite: Specified 30000-level computer science course.
Prerequisite: (CPSC 400 or CPSC 40000)
THEORY OF COMPUTATION~ An introduction to the classical and contemporary theory of computation. The topics covered are the theory of automata and formal languages, computability by Turing machines and recursive functions, unsolvability, computational complexity, and mathematical logic. Mathematical sophistication is expected. Prerequisite or permission.
APPLIED COMPUTER SCIENCE CAPSTONE I ~ First semester of capstone for Applied Computer Science. Students develop a proposal for a project that combines their knowledge of computing with knowledge of another discipline, and do preliminary research and development for their project.
Prerequisite: CPSC 20100
APPLIED COMPUTER SCIENCE CAPSTONE II ~ Second semester of capstone for Applied Computer Science. Students complete their proposed project that combines their knowledge of computing with knowledge of another discipline, and formally write up and present their results.
Prerequisite: CPSC 48500