Skip to main content

Computer Science

Major
Minor
still of back of computer display in back-lit room

Computers may be the most versatile tool in human history

If you're a problem-solver and you like solving problems with computers, consider studying Computer Science at Gettysburg College.

Majors & Minors

Program Name Program Type

Computer Science

Major Bachelor of Arts

Computer Science

Major Bachelor of Science

Computer Science

Minor

Why study Computer Science?

Our program emphasizes systematic approaches to problem-solving and soft skills within a computing environment. You will build a strong foundation in both the theory and application of computer science, as well as clear thinking, logical reasoning and the ability to adapt to the fast-changing computing environment.

As a graduate, you will be prepared for a career or graduate study in computer science.  Through your capstone experience you will learn business or research skills appropriate for your chosen path.

Why study Computer Science at Gettysburg

Opportunities

AI, virtual reality, medical devices, and hacking contests are just a few of the projects focused on by Gettysburg College Computer Science majors.

group of students pose together, smiling for camera

Academics

As a student, your studies may involve ongoing research in collaboration with faculty in addition to wide range of advanced topics in Computer Science.

reflection of student working at laptop

Community of Experts and Professors

Award-winning faculty and access to innovators in technical spaces bring Computer Science studies alive for students at Gettysburg College.

prof and visiting speaker talk at front of classroom

Department Honors

Department Honors in computer science require participation in the co-curricular activities of the department, an overall grade point average of at least 3.0, and a computer science grade point average of at least 3.5.

In addition to Department Honors, the department also recognizes student excellence with two awards.

Superior Scholarship in Computer Science

The faculty may, at their discretion, elect a senior computer science major for this honor who exhibits extracurricular
scholarly activity or superior academic performance.

Outstanding Computer Science Student

The faculty may, at their discretion, elect an outstanding senior computer science major for this honor.

For each honor, a certificate and cash award are presented to the student and his/her name appears on a plaque located outside of Glatfelter 207.

Featured Courses

Visit Curriculum tab for a comprehensive list of all available courses

200 Level

Introduction to the emerging field of bioinformatics, where biology and computer science intersect to interpret and use the rapidly expanding volume of biological information produced by genome sequencing and proteomic exploration of life processes. Application of bioinformatic software tools to the analysis of gene sequences and protein structures is emphasized. Students undertake a laboratory project combining in silico and in vitro approaches to isolate and then analyze a segment of their own DNA. An introduction to computer algorithms used in bioinformatic software is provided. Three class hours and laboratory.

Study of the mathematics needed for an understanding of the theoretical foundations of computation. Topics include mathematical logic, set theory, mathematical induction, mathematical definitions and proofs, graph theory, and an introduction to finite-state automata. Applications and illustrative examples are drawn from computer science topics such as digital circuits, analysis and correctness of algorithms, automata, decidable problems, and efficient searching. Prerequisites: Computer Science
107/111 and Mathematics 111.

300 Level

Study of modern techniques for creating software that behaves intelligently. Topics include uninformed and heuristic search, constraint satisfaction, stochastic optimization, game-tree search, propositional reasoning, probabilistic reasoning, Bayesian networks with Markov chain Monte Carlo techniques, and robotics. Course concludes with a class robotics project. Prerequisite: Computer Science 216. Offered alternate years.

Computer Science Events

Oct 15

CS440 Quiz Team

Time: 4:00 PM
Location: Private Location (sign in to display)    ( On-Campus )
Oct 15

CS221 Exam

Time: 6:00 PM
Location: Private Location (sign in to display)    ( On-Campus )
Oct 19

CS Student Internship Presentation (COPY)

Time: 4:00 PM
Location: Private Location (sign in to display)    ( On-Campus )
Oct 30

CS Student Internship Presentation

Time: 3:10 PM
Location: Private Location (sign in to display)    ( On-Campus )

Our view of computer science at Gettysburg is that it is a study of the solution of problems through the use of algorithms and data structures and the implementation of these solutions on computing machinery. 

To the extent that we study the computing machine itself, it is a study of the logical design of the machine and the higher-order problems associated with having that machine operate in a problem solving environment. In short, we have clearly chosen to emphasize the algorithmic side of the computer science discipline. This side embodies the liberal arts tradition of Gettysburg College.

Major and Minor Information

Eleven courses are required for the Computer Science major, Bachelor of Arts.

Core Courses

  • CS 111 Computer Science I
    If exempt, then a CS elective course must be taken in its place.
  • CS 112 Computer Science II
    If exempt, then a CS elective course must be taken in its place.
  • CS 201 The Mathematics of Computation or MATH 215 Abstract Mathematics I
  • CS 216 Data Structures and Algorithms
  • CS 221 Computer Organization and Assembly Language Programing
  • CS 301 The Theory of Computation
  • CS 440 Advanced Systems Design
    To be taken in the senior year.

Three CS Elective Courses

  • 3 CS elective courses (non-core) at the 200- or 300-level
  • Students have the option of including at most one of the following: MATH 353, 366, PHY 240, PSYCH 315, 316, 338.

Math Requirement

  • Math 111 or above, not including Math 207 or Math 215
    Not included in major average.

Notes

  • To advance to a course with prerequisites, a minimum grade of C- is required for each prerequisite course.
  • A student completing a Computer Science major may not concurrently or subsequently be enrolled in a prerequisite, alternate prerequisite, or non-major Computer Science course.
  • CS 102, CS 103 and CS 107 do not count toward the major requirements.

Fifteen courses are required for the Computer Science major, Bachelor of Science.

Core Courses

  • CS 111 Computer Science I
    If exempt, then a CS elective course must be taken in its place.
  • CS 112 Computer Science II
    If exempt, then a CS elective course must be taken in its place.
  • CS 201 The Mathematics of Computation or MATH 215 Abstract Mathematics I
  • CS 216 Data Structures and Algorithms
  • CS 221 Computer Organization and Assembly Language Programing
  • CS 301 The Theory of Computation
  • CS 440 Advanced Systems Design
    To be taken in the senior year.

Three CS Elective Courses

  • 3 CS elective courses (non-core) at the 200- or 300-level
  • Students have the option of including at most one of the following: MATH 353, 366, PHY 240, PSYCH 315, 316, 338.

Four Formal or Natural Science Courses

  • Four courses taken from the formal and/ or natural science departments.
    • Formal sciences include Computer Science and Mathematics. Not including Math 207 or Math 215
    • Natural Sciences include Biology, Chemistry, Environmental Studies, Health Science, and Physics.
  • At most two may be at the 100-level

Math Requirement

  • Math 111 or above, not including Math 207 or Math 215
    Not included in major average.

Notes

  • To advance to a course with prerequisites, a minimum grade of C- is required for each prerequisite course.
  • A student completing a Computer Science major may not concurrently or subsequently be enrolled in a prerequisite, alternate prerequisite, or non-major Computer Science course.
  • CS 102, CS 103 and CS 107 do not count toward the major requirements.

Six CS courses are required for the minor.

Six Computer Science Courses

  • Four courses numbered CS 111 or above
  • CS 216 Data Structures and Algorithms
  • One CS course at the 300-level
    Excluding CS 301 The Theory of Computation.

Notes

  • CS 102, CS 103, CS 107, and CS 440 do not count toward the minor requirements.
  • All courses must be taken using the A - F grading system (no S/U).

First Year Advising and Registration recommendations

Before you register 

  • It is possible to begin the CS major in any of the first three semesters, though a later start will limit course choices and increase scheduling constraints. 
  • Students without AP CS credit may still place out of CS 111 by demonstrating proficiency in Java on a placement test and/or obtaining permission from a CS faculty member. 

Common first-year courses 

Required for prospective majors

  • CS 111 Computer Science I (assumes no prior programming experience) 
  • CS 112 Computer Science II 
  • MATH 111 Calculus I 
  • Students with AP Computer Science A scores of 4 or 5 receive credit for CS 111 and place directly into CS 112.

Recommended — prospective math or natural science majors

  • CS 107 Introduction to Scientific Computation: Does not count toward CS major/minor requirements 

Available Courses

100 Level

Liberal arts introduction to the discipline of computer science and the use of computers in a variety of fields. Topics include a historical survey of technology and the use of computers, computer application, software systems design, programming with scripts, computer hardware and digital logic design, and implications of computing. Course is laboratory-oriented and includes several hands-on laboratory projects. Tailored for non-majors interested in learning about the field of Computer Science. Concurrent registration with CS 107 or CS 111 is not allowed; credit cannot be received for CS 103 after credit received for CS 107 or CS 111. Prerequisite: none.

Introduction to computer science with a scientific computation language (e.g., MATLAB or Python). Emphasis is on fundamental programming constructs, algorithmic thinking and problem-solving, fundamental data structures, and recursion. Course projects include common scientific computing challenges and data visualization. Tailored for non-majors interested in mathematics or the sciences. Concurrent registration with CS 103 or CS 111 is not allowed; credit cannot be received for CS 107 after credit received for CS 111. Prerequisite: none..

Introduction to computer science with an emphasis on fundamental programming constructs, algorithmic thinking and problem-solving, fundamental data structures, and recursion. Students implement projects using the Java programming language. This course is the usual beginning course for students planning to pursue a major or minor in computer science. Prerequisite: none.

Second course in the introductory sequence for computer science majors and students interested in the principles of programming. Special attention is given to object-oriented program design methods, algorithms, and elementary data structures. Prerequisite: Computer Science 111.

Introduction to cybersecurity and privacy and their intersection with data analysis. Topics include confidentiality, integrity, availability (CIA triad), authentication, cyberattacks, legal issues, intellectual property and anonymity. Throughout the course, students will study the use and influence of data analysis using tools such as spreadsheets or programming languages.

200 Level

Study of the mathematics needed for an understanding of the theoretical foundations of computation. Topics include mathematical logic, set theory, mathematical induction, mathematical definitions and proofs, graph theory, and an introduction to finite-state automata. Applications and illustrative examples are drawn from computer science topics such as digital circuits, analysis and correctness of algorithms, automata, decidable problems, and efficient searching. Prerequisites: Computer Science
107/111 and Mathematics 111.

Introduction to major data structures and some of their applications. Topics include sets, queues, stacks, linked lists, string processing, trees, graphs, arrays, tables, files, and an introduction to the analysis of algorithms. Prerequisite: Computer Science 112.

Programming at the machine level, with emphasis on the logical connection of the basic components of the computer and systems programs. Topics include machine and assembly language programming, basic computer operations, data representation, hardware organization, systems software, and compilers. Prerequisite: Computer Science 112.

300 Level

Introduction to techniques used to implement multiple processor problem-solving environments. Investigation includes several different environments for parallel computing, including SIMD (Single Instruction Multiple Data stream), MIMD (Multiple Instructions Multiple Data stream), and computing in a distributed workstation environment. Students work with actual implementations of each of these environments and explore their advantages and design algorithms appropriate for these environments. Prerequisite: Computer Science 216. Offered alternate years.

Introduction to techniques used to translate high-level computer languages into machine code. Course covers current implementation techniques and relevant theory. Topics include lexical scanning, parsing, abstract syntax trees, semantic analysis, intermediate code generation, and code generation. Students complete a major project involving the compilation of a particular computer language. Prerequisite: Computer Science 216. Offered alternate years.

Study of methods and issues surrounding the construction of graphical images on the computer. Topics include windowing systems and user input, two-dimensional graphics packages, curve drawing techniques, modeling in three dimensions, use of lighting and shading techniques, and the process of rendering images. Student work consists both of using existing packages to create images and of implementing algorithms used in graphical systems. Prerequisite: Computer Science 216. Offered alternate years.

Study of modern techniques for creating software that behaves intelligently. Topics include uninformed and heuristic search, constraint satisfaction, stochastic optimization, game-tree search, propositional reasoning, probabilistic reasoning, Bayesian networks with Markov chain Monte Carlo techniques, and robotics. Course concludes with a class robotics project. Prerequisite: Computer Science 216. Offered alternate years.

Study of fundamental concepts of database systems. Topics include physical organization of databases, indexing techniques, and query processing. Particular models studied include the Entity-Relationship and Relational. Class projects stress design and implementation of a database. Prerequisite: Computer Science 216. Offered alternate years.

Study of fundamental concepts in the design of programming languages. Concepts include BNF grammar specification, abstract syntax trees, variables, expressions typing, scope, lexical address, procedures, data types, static/dynamic binding, and environment-passing interpreters. Special emphasis is placed on the development of an interpreter using a functional programming language. Other languages are introduced to further illustrate these concepts. Prerequisite: Computer Science 216. Offered alternate years.

Study of fundamental concepts of operating systems. Topics include sequential processes, concurrent processes, processor management, memory management, scheduling algorithms, and computer security. Projects include writing of a program to simulate major components of an operating system. Prerequisite: Computer Science 216. Offered alternate years.

Introduction to principles used to analyze and build a network of computers. Course covers concepts and issues relating to low-level communications and protocols of computer networking. Students study formal methods for integrating communication events into normal process cycles of the computer, then concentrate on a study of practices for defining and specifying a formal communications protocol. Throughout the course, students apply principles that they study to existing networks within the department. Prerequisite: Computer Science 216. Offered alternate years.

Study of the basic theoretical principles of the computational model. Topics include finite automata, regular expressions, context-free grammars, Turing Machines, Church’s Thesis, P and NP classes, the halting problem, unsolvability, computational complexity, and program verification. Prerequisite: CS 201, or MATH 215.

400 Level

Senior capstone course teaching a formal approach to techniques of computer project development. Integral part of course is the involvement of students, working as a team, in the development of a large project. Topics include formal requirement and specification, software testing techniques, written and spoken communication skills in technology, and user interfaces. Research option is available by permission of the instructor with a faculty research sponsor and recommendation from a previous research supervisor. Prerequisites: Computer Science 216, two 300-level computer science course (other than CS 301; one may be taken concurrently), and senior status or permission of department.

Individualized tutorial not counting in the minimum requirements in a major or minor, graded S/U

Half credit internship, graded S/U.

Quarter-credit internship, graded S/U.
Instructor consent required. Declared CS majors only.

Computer Science

Address
Campus Box
0402
Contact
Sunghee Sunny Kim
Professor (Computer Science), Computer Science
Jordana Hudson
Academic Operations Assistant, Academic Operations

Faculty

Name & Title
Department
Phone

Jonathan Hoffman

Adjunct Instructor (Computer Science)

Ivaylo Ilinkin

Professor (Computer Science)

Sunghee Sunny Kim

Professor (Computer Science)

Charles McGuffey

Assistant Professor (Computer Science)

Todd W. Neller

Professor (Computer Science)

Clif Presser

Associate Professor (Computer Science)

Daniel White

Lecturer (Computer Science)
Computer Science

Ready to Do Great Work?

Sock