The Computer Science Department at Westminster College is nationally recognized for its active learning approach to educating its students. With approximately 80 students and three full-time faculty, the Computer Science Program offers:

Computer Science faculty collaborate with colleagues from Business, Math and Science departments in offering:

To learn more about these programs, please see the Academic Catalog.

Committed to the Success of All Students

Our Computer Science faculty believe in excellence in teaching, the values of interdisciplinary connections in a liberal arts setting, and the importance of diversity, inclusion, and gender equity initiatives in Computer Science. Our diversity initiatives include:

Why Study Computer Science?

As described in this video, Computer Science is transforming the world. By learning about computing, you can be part of that transformation!

Computer Science is a top paying college degree and computer programming jobs are growing at 2x the national average. There is a $500 billion opportunity for computer science students.

Advising about Class Schedules

Although course prerequisites are listed in the course catalog, it is important to get an academic advisor to help plan your coursework each semester. Often the START Center provides academic advising; however, you should get a member of the computer science faculty to advise on computer science courses within our majors and minors. If you don't have an advisor, please contact Greg Gagne, Helen Hu, or Dan Byrne.

Current Student Resources

Dan Byrne

Dan Byrne

Associate Professor
Foster 306
Interests: Hardware/Software Integration, Interdisciplinary Education, Managing Data

Greg Gagne

Greg Gagne

Associate Professor
Foster 305
Interests: Operating Systems, Parallel/Concurrent Programming, CS Education

Helen Hu

Helen Hu

Foster 312
Interests: K-16 Computer Science Education, Active Learning, Broadening Participation

Kristina Doing Harris

Kristina Doing-Harris

Adjunct Professor
Interests: Machine Learning, Cognitive Psychology

Dan Steenblik

Daniel Steenblik

Adjunct Professor
VP Engineering at Sampleminded
Interests: Software Engineering

Getting Help and Using Your Instructor

You are encouraged to get help with assignments before they are due. Instructors have posted office hours that are listed on their doors, in the syllabus, and on their Canvas as well as personal web pages. If you find the posted office hours to be inconvenient for your schedule, you can also arrange a special appointment in advance by contacting your instructor.

All lower division classes have teaching assistants available, in which case you may want to make an appointment with that person for help. In addition, the first-year sequence (CMPT 201 and CMPT 202) offers a supplemental instructor that holds additional office hours. The START Center provides tutoring for most classes as well.

Preparing for Classes

Read the material to be covered in advance - it will make a lot more sense in class if you have previewed the material to be covered. There is another reason - repetition reinforces learning. A good strategy is to preview the text and online notes - skimming for terminology and conceptual structure, attend the classes and take notes, and then return to the text and read for detail. Don't make the mistake of putting off reading the assigned material until just before the test.

Attendance is strongly advised, even if you read the text - the author may not emphasis the same points that the instructor will emphasis in class. Usually additional information is also provided in the classroom and good note taking will be essential.

Participate in class and ask questions. You may prepare a list of questions in advance based upon your preview or reading of the text. Besides - asking questions exercises your grasp of the material, and reinforces your learning.

Working With Others

Don't feel as if you necessarily must tackle this class on your own. Rather, work with your fellow classmates and all learn the material together. Some things you can do include:

  1. Get a study partner(s). Work with your partner to understand difficult material. Quite often, you will learn the material better when you have to explain it to someone else.
  2. Work in study groups. This is especially useful when preparing for exams. Think of possible questions you may be asked and quiz each other.

In addition, some programming assignments (especially in upper division courses) are assigned to a group of students rather than individually. This is typically how software is constructed in the "real world." Being able to build a program that is a collection of work contributed by several different people is an important skill you can take to the marketplace upon graduation.

Doing Well on Tests

There are two kinds of tests: in-class and take-home exams. The type of exam given is at the discretion of the instructor. Are take-home tests easier? No, take-home tests often ask more detailed questions or questions which require more thought. You may expect that the amount of time you set aside to review for an in-class test is about the same amount of time you will spend on a take-home test covering the same material.

Tips for Taking Exams

  1. If the question is somehow ambiguous, and you must make some assumptions, state what your assumptions are in your answer.
  2. Consider what the question is asking. A common mistake is to fully answer the wrong question.
  3. If you only know part of the answer, state what you do know. Partial credit is typically offered for partial answers and is better than no credit.
  4. Answer questions completely—write what you know, don't get lazy and quit half-way.
  5. Don't dance around the question—be direct. If you write fluff without really answering the question, the grader will probably see through this to your lack of understanding.
  6. If a numerical result is required, be sure to show how you arrived at the answer. Showing the approach you take will probably be worth more in proving your understanding than a simple result (especially if you make a simple arithmetic error).

In-class exams

Please write legibly. Granted you are probably under time pressure, but indecipherable handwriting may hurt your grade! Think before you write—compose your answer in your mind before you put pen or pencil to paper.

Take-home exams

Since you have more time to construct your answers, the expectations are higher. Don't forget good grammar, sentence structure, and logical exposition. As college students you are expected to be developing good writing skills—use them. You are also encouraged (and perhaps in some cases required) to type your answers. Program source code may also be required in some cases.

Writing Well-Constructed Programs

In course programming assignments and in real life, readable, well-formatted code is essential. If your instructor requires that you follow a set of coding standards be aware of what they are and follow them.

In brief you should at least adhere to the following guidelines:

  1. Use variable and method names that are descriptive. For example, if you have a variable that keeps track of the temperature, name the variable "temperature" rather than "t" or "temp".
  2. Provide descriptive comments when they will clarify the functioning of the code.
  3. Indent consistently.
  4. Follow a consistent naming and capitalization scheme for classes, methods, constants and variables.

Follow an "engineering" approach to solving problems:

  1. Before you begin writing code think carefully about the problem. If you are implementing an algorithm, trace its execution on paper until you are sure you understand the logical flow—don't code by trial and error, it only wastes time.
  2. Design the program! Write a brief description of the program inputs. Describe the range of data or conditions over which the program is expected to operate. Describe what the program is to do—what are the requirements? What is the expected output? Use a diagram if it helps.
  3. Think of some input data that will adequately test the program when you are done. Ask yourself what will happen if the program encounters inappropriate data; e.g., the user goofs and enters something invalid, or a zero result occurs leading to a subsequent divide-by-zero error?
  4. Do you have your design? As you write the code, modularize your approach. This is implicit in an object oriented approach to design. In practice the implications reach further into your approach. Solve and test smaller sub-problems, then combine these into solutions to the larger problem.
  5. When you are done writing the code—or better yet—putting together program modules, test the final program thoroughly.
  6. One of the best approaches to eradicating bugs is to trace program execution with "watch" statements - or a debugger if available. Avoid the temptation to randomly change code in an attempt to fix a problem!

CAUTION: Programming can be mentally stimulating. You may experience being in the "zone" or losing track of time while designing and coding programs.

Computer Science majors who are in their junior or senior years are strongly encouraged to consider taking part in the internship program.

An internship provides a student with the opportunity to obtain professional working experience while earning upper division elective credit. In addition, an internship provides students with an opportunity to discover what the workplace is like, to better determine what they would like to do upon graduation, and to gain the experience that is often needed when searching for work upon graduation. In fact, may students who complete internships end up working for the company full-time during the summer and after graduation.

Examples of the opportunities available for internships include programming positions, software testing, working with computer networks, and website design.

In the past, students have completed internships at Goldman Sachs, Sample Minded, Jive Communications, and Cisco to name a few. A chief benefit of working as an intern is that employers realize the intern is also a student. As a result, employers typically provide a flexible work schedule that accommodates classes and homework. Most interns typically work about 15–20 hours per week.

Internships opportunities may be obtained either through the Westminster Career Resource Center or a student may find a job on their own. If you have any questions about the computer science internship program, contact either Greg Gagne in Computer Science or ;Jon Davis in the Career Center.


Computer Science, Math, and Physics students can apply to the S-Cubed program for financial and academic support. Apply to receive several networking benefits, mentoring support, and a four-year scholarship.

Learn More about S-Cubed