Computer Science

Major in Computer Science

The Computer Science Department offers three degree options: Bachelor of Science in Computer Science (B.S.), Bachelor of Arts in Computer Science (A.B.), and Minor in Computer Science. The A.B. program is broader than the B.S. program and more technical than the Minor.  Most universities design their undergraduate computer science B.S. programs to be in conformance with the ACM-IEEE guidelines on undergraduate computer science education, as does Georgetown University. The B.S. program has 18 required courses, the A.B., 12 courses, and the Minor, 6 courses. The difference in requirements between the B.S. and A.B. comes from reducing the number of required mathematics courses from four to two, and reducing the number of required computer science courses from fourteen to ten.

Both the A.B. and B.S. programs share the core sequence of Computer Science I and II, Mathematical Methods for Computer Science, Data Structures, and Advanced Programming. This sequence prepares students to take almost any upper-level computer science elective. At this point the two programs diverge. The A.B. student now chooses from essentially three different tracks by taking one of Hardware Fundamentals, Programming Languages, or Introduction to Algorithms; while the B.S. student must take all these and in addition, System Fundamentals and Operating Systems. The effect is to release the A.B. student from the more engineering-oriented breadth required of the B.S. student. Students intending to do postgraduate studies or seeking employment in most traditional areas of computer science are encouraged to pursue the B.S. option. In addition, B.S. students are encouraged to do a senior thesis.

Both the A.B. and the B.S. programs require four elective courses in computer science. The list of elective courses for both programs is the same. However, students opting for the A.B. program can, with the approval of the department’s curriculum committee, satisfy two of the elective requirements by taking courses with significant computer science content from other departments and programs. Students enrolled in the A.B. program also have the option of writing a senior thesis.

A.B. students who begin their computer science program with a computer science course in the range 001-016 may use the course as an elective for the major. For example, Introduction to Information Technology (COSC-010) represents an alternative teaching approach to the discipline in that it covers a representative range of computer science topics, introducing the essential concepts and foundational methods in each area. Within this context, the department feels it is appropriate to allow A.B. students the option of beginning their program with such a course, and then continuing on to Computer Science I and the rest of the usual sequence.

The senior thesis consists of taking a one-credit Senior Thesis Seminar (COSC-300), attending department colloquia while enrolled in COSC-300, writing a substantial senior thesis, and presenting the thesis publicly. Students interested in this option must apply to individual faculty members. If accepted, the faculty member serves as thesis advisor and oversees the project. The advisor and the student form a thesis committee by picking two additional faculty members. Once completed, the committee determines if the thesis is acceptable. The senior thesis must also be presented to the faculty. If approved by the thesis committee, the thesis is published as a technical report. Senior Thesis Independent Study (COSC-301) is for directed research in support of the thesis project and may substitute for an elective.

Accelerated B.S./M.S. in Computer Science

The Department offers an accelerated M.S. degree that lets qualified B.S. students complete a Master of Science (M.S.) degree by extending their studies to a fifth year. Students should apply in the spring semester of their junior year. If accepted, students designate two courses that apply to both the B.S. and M.S. degrees.

Students complete the degree requirements by taking two required core courses and six elective courses. Students can take two of these courses during their senior year. For more information about the program, see the Department’s web site, or contact the Department’s Director of Graduate Studies.

Graduating with Honors in Computer Science

As of Fall 2013, students who meet the following criteria may apply to graduate with honors in computer science:

  1. Complete the B.S. in computer science
  2. Graduate with a 3.67 overall grade-point average and a 3.67 grade-point average in computer science classes
  3. Complete a senior thesis approved by the thesis committee

An application consists of a formal written request to graduate with honors submitted to the Director of Undergraduate Studies. A student who does not meet the above criteria may petition the faculty for consideration to graduate with honors. Applications and petitions must be submitted by April 1st for spring graduates and November 1st for fall graduates.

Procedure for Undergraduate Curriculum-Related Requests

Requests relating to curricular matters, including requests for course credit from other universities and for external course credit from Georgetown departments, should be addressed to the Director of Undergraduate Studies. The request will be forwarded to the department's Curriculum Committee.

During the academic semester, the Curriculum Committee will review and respond to requests at its next scheduled meeting. During breaks, the committee will wait until the academic semester restarts to review requests. When making a request, students must submit the following documentation:

1.    A cover letter, which should include:

a.    A brief explanation of the request.

b.    The GU computer science course name(s) and number(s) for which credit is sought.

2.    External course information:

a.    University offering course

b.    Course name and number

c.    Course description

d.    Syllabus

e.    Relevant assignments (optional)

Suggested B.S. Program Sequence

First Year

  • Calculus I and II (MATH-035, 036)
  • Computer Science I and II (COSC-051, 052)
  • Mathematical Methods for Computer Science (COSC 030). Students may elect to take instead Introduction to Proofs and Problem Solving (MATH-200) and Analysis I (MATH-310). MATH-200 must be taken as a prerequisite to Data Structures (COSC-160).

Second Year

  • Data Structures (COSC-160)
  • Advanced Programming (COSC-150)
  • Computer Hardware Fundamentals (COSC-120)
  • Computer Systems Fundamentals (COSC-121)
  • Two additional math electives from Probability and Statistics (MATH-040), Multivariable Calculus (MATH-137), Introduction to Mathematical Statistics (MATH-140), Linear Algebra (MATH-150), Abstract Algebra (MATH-203), Number Theory (MATH-211), Numerical Analysis (MATH-212), Combinatorics (MATH-223), Graph Theory (MATH-224), Optimization (MATH-225), Mathematical Statistics I (MATH-233), Mathematical Statistics II (MATH-234), and Symbolic Logic (PHIL-378)

Third and Fourth Years

  • Programming Languages (COSC-252)
  • Introduction to Algorithms (COSC-240)
  • Operating Systems (COSC-255)
  • Four Computer Science electives selected from COSC courses numbered 100 and higher
  • Optional: Senior Thesis.


A.B. Program Sequence

First Year

  • Calculus I (MATH-035)
  • Computer Science I and II (COSC-051, 052)
  • Mathematical Methods for Computer Science (COSC-030).
  • Students may elect to take instead Introduction to Proofs and Problem Solving (MATH-200) and Analysis I (MATH-310). MATH-200 must be taken as a prerequisite to Data Structures (COSC-160).

Second Year

  • Data Structures (COSC-160)
  • Advanced Programming (COSC-150)
  • One additional math elective from Calculus II (MATH-036), Probability and Statistics (MATH-040), Multivariable Calculus (MATH-137), Introduction to Mathematical Statistics (MATH-140), Linear Algebra (MATH-150), Abstract Algebra (MATH-203), Number Theory (MATH-211), Numerical Analysis (MATH-212), Combinatorics (MATH-223), Graph Theory (MATH-224), Optimization (MATH-225), Mathematical Statistics I (MATH-233), Mathematical Statistics II (MATH-234), and Symbolic Logic (PHIL-378)   

Third and Fourth Years

One of the following:

  • Computer Hardware Fundamentals (COSC-120)
  • Programming Languages (COSC-252)
  • Introduction to Algorithms (COSC-240)
  • Four electives, which must be COSC courses numbered 100 or higher, except for two possibilities:
    • An external elective is a course offered by another department for which credit is given as if it were a Computer Science elective. Such a course must contain significant computational content. Student who want such a course to count as an elective must get approval from the Computer Science Department's Director of Undergraduate Studies. Students are strongly advised to get approval before taking the course to be certain it will count as an elective. At most two external electives can count toward fulfilling the degree requirements.
    • A single Computer Science course numbered in the range COSC-001 through COSC-016 may be counted as an elective. This is only allowed if the course was taken before any Computer Science course numbered COSC-051 or higher. Students should check with the Director of Undergraduate Studies to make sure the course will count as an elective.
  • Optional: Senior Thesis
Minor in Computer Science

Computer Science I and II (COSC-051, 052), and any four Computer Science  (COSC) electives from any of the required or elective courses for the B.S.  (For course listings for Computer Science see

(For course listings for Computer Science see