# 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 B.S. degree is the most technical undergraduate degree. The A.B. degree has fewer requirements than the B.S. degree, and so it can be ideal for combining computer science with another course of study. Like most universities, Georgetown designs its undergraduate programs in computer science to conform with the ACM-IEEE guidelines on undergraduate computer science education.

## Majors in Computer Science

The B.S. program has nineteen required courses, and the A.B., thirteen courses. The difference in requirements between the B.S. and A.B. comes from reducing the number of required mathematics courses from five to three 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 any upper-level computer science elective. Students in both programs must take Introduction to Algorithms, but at this point the two programs diverge. The B.S. student must take Computational Structures, Programming Languages, and Operating Systems, which provides B.S. students with the required breadth of understanding of the field. Students intending to pursue 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 elective courses in computer science. B.S. students must take five, whereas A.B. students must take four. The elective courses for both programs are the same, although A.B. students can take the additional required courses for the B.S. program as electives. Students in both programs can take graduate-level courses as electives with the permission of the instructor. Students in both programs can also, with the approval of the department’s undergraduate curriculum committee, satisfy one elective requirement by taking one course with significant computational content from another department or program. There is also the option of pursuing independent study through research or reading tutorials under the direction of a member of the faculty as elective courses. Students enrolled in the A.B. program also have the option of writing a senior thesis.

### Requirements for the A.B. in Computer Science

**First Year**

- Computer Science I and II (COSC-051, 052)
- Mathematical Methods for Computer Science (COSC-030)
- Students pursuing a minor or major in mathematics who take Introduction to Proofs and Problem Solving (MATH-200) and Analysis I (MATH-310) may substitute one COSC elective for COSC-030.

- Calculus I (MATH-035)

**Second Year**

- Data Structures (COSC-160)
- Advanced Programming (COSC-150)
- Two additional math electives from: Calculus II (MATH-036), Multivariable Calculus (MATH-137), Introduction to Mathematical Statistics (MATH-140), Linear Algebra (MATH-150), Abstract Algebra (MATH-215), Graph Theory (MATH-220), Combinatorics (MATH-221), Applied Statistical Methods (MATH-240), Applied Statistical Methods II (MATH-340), and Symbolic Logic (PHIL-350). Additionally, alternatives to MATH-140 are allowable; these include Economic Statistics (ECON-121), Analysis of Political Data I (GOVT-201), Business Statistics (OPIM-173), or Quantitative Methods for International Politics (IPOL-320).

**Third and Fourth Years**

- Introduction to Algorithms (COSC-240)
- Four electives, which must be COSC courses numbered 100 or higher, or an approved external elective.
- Optional: Senior Thesis (described below)

### Requirements for the B.S. in Computer Science

**First Year**

- Computer Science I and II (COSC-051, 052)
- Mathematical Methods for Computer Science (COSC-030).
- Students pursuing a minor or major in mathematics who take Introduction to Proofs and Problem Solving (MATH-200) and Analysis I (MATH-310) may substitute one COSC elective for COSC-030.

- Calculus I and II (MATH-035, 036)

**Second Year**

- Data Structures (COSC-160)
- Advanced Programming (COSC-150)
- Three additional math electives from: Multivariable Calculus (MATH-137), Introduction to Mathematical Statistics (MATH-140), Linear Algebra (MATH-150), Abstract Algebra (MATH-215), Graph Theory (MATH-220), Combinatorics (MATH-221), Applied Statistical Methods (MATH-240), Applied Statistical Methods II (MATH-340), and Symbolic Logic (PHIL-350). Additionally, alternatives to MATH-140 are allowable; these include Economic Statistics (ECON-121), Analysis of Political Data I (GOVT-201), Business Statistics (OPIM-173), or Quantitative Methods for International Politics (IPOL-320).

**Third and Fourth Years**

- Computational Structures (COSC-125)
- Introduction to Algorithms (COSC-240)
- Programming Languages (COSC-252)
- Operating Systems (COSC-255)
- Five electives, which must be COSC courses numbered 100 or higher, or an approved external elective.
- Optional: Senior Thesis (described below)

### External Electives

Students can elect to substitute one course from another department or program for one computer science elective. The external elective must contain significant computational content and can not count toward any other degree requirements. Students who want such a course to count as an elective must obtain approval from the Director of Undergraduate Studies (DUS). Students are strongly advised to obtain approval before taking the course to be certain it will count as an elective. The department maintains a list of approved external electives.

### Senior Thesis

The senior thesis is an opportunity for students to conduct research in computer science. Students complete a senior thesis by pursuing a research project, 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 the thesis advisor and oversees the project. The advisor and the student pick a thesis committee consisting of two additional faculty members. Once completed, the committee determines if the thesis is acceptable. The student can and must present their thesis publicly. If committee approves the presentation and final version of the thesis, then it is published as a technical report, and the student’s transcript is annotated to indicate that they completed a senior thesis in computer science. Students have the option of obtaining credit for their thesis work by registering for a three-credit Research Tutorial with their faculty advisor. The tutorial can have the title “Senior Thesis Research”. It counts as one computer science elective.

### Graduating with Honors in Computer Science

Students who meet the following criteria may apply to graduate with honors in computer science:

- Complete the B.S. in computer science
- Graduate with a 3.67 overall grade-point average and a 3.67 grade-point average in computer science classes
- 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 (DUS). 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.

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

The Department offers an accelerated master’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 and six elective graduate 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.

## Minor in Computer Science

### Requirements for the Minor

To complete the minor, students must complete six courses: Computer Science I and II (COSC-051, 052), Mathematical Methods for Computer Science (COSC-030), and any three computer science electives from the undergraduate courses numbered between 100 and 499. Students pursuing a minor or major in mathematics who take Introduction to Proofs and Problem Solving (MATH-200) and Analysis I (MATH-310) may substitute one COSC elective for COSC-030. Students pursuing the minor cannot take graduate-level courses numbered 500 and above.

#### Procedure for Undergraduate Curriculum-Related Requests

Students who have requests relating to curricular matters should first consult with their departmental advisor before forwarding the request to the Director of Undergraduate Studies (DUS). Students without a departmental advisor submit their requests directly to the DUS. Such requests include course approvals, course substitutions, tutorial requests, proposals for study abroad, external electives, Consortium courses, and the like. Requests will be forwarded to the department’s Undergraduate Committee.

When making a request, students must submit the following documentation:

- A cover letter, which should include:
- A brief explanation of the request.
- The GU computer science course name(s) and number(s) for which credit is sought.

- External course information:
- University offering course
- Course name and number
- Course description
- Syllabus
- Relevant assignments, if available

For course listings for Computer Science, see Schedule of Classes.