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. program 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 ACMIEEE guidelines on undergraduate computer science education.
MAJORs IN COMPUTER SCIENCE
The B.S. program has eighteen required courses, and the A.B., twelve 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 any upperlevel 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 graduatelevel 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 (COSC051, 052)
 Mathematical Methods for Computer Science (COSC030)
 As an alternative, students who take Introduction to Proofs and Problem Solving (MATH200) and Analysis I (MATH310) may substitute a COSC elective in place of COSC030.
 Introduction to Proofs and Problem Solving (MATH200), which is a prerequisite to Data Structures (COSC160).
 Calculus I (MATH035)
Second Year
 Data Structures (COSC160)
 Advanced Programming (COSC150)
 One additional math elective from: Calculus II (MATH036), Multivariable Calculus (MATH137), Introduction to Mathematical Statistics (MATH140), Linear Algebra (MATH150), Number Theory and Cryptography (MATH211), Abstract Algebra (MATH215), Graph Theory (MATH220), Combinatorics (MATH221), Applied Statistical Methods (MATH240), Applied Statistical Methods II (MATH340), and Symbolic Logic (PHIL350). Additionally, alternatives to MATH140 are allowable; these include Probability and Statistics (MATH040), Economic Statistics (ECON121), Analysis of Political Data I (GOVT201), Business Statistics (OPIM173), or Quantitative Methods for International Politics (IPOL320).
Third and Fourth Years
 Introduction to Algorithms (COSC240)
 Four electives, which must be COSC courses numbered 100 or higher.
 As an alternative option, students may instead take three COSC electives 100 or higher and substitute one course from another department or program as a computer science elective as their fourth elective, provided that the course contains significant computational content. Students 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 obtain approval before taking the course to be certain it will count as an elective.
 Optional: Senior Thesis

The senior thesis is an opportunity for students to conduct research in computer science. Students complete a senior thesis by enrolling in two semesters of the onecredit Senior Thesis Seminar (COSC305/306), attending sixteen department colloquia while enrolled in Senior Thesis Seminar, 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 thesis advisor and oversees the project. At this point, the student is eligible to enroll in COSC305/306. The advisor and the student pick a thesis committee consisting of three faculty members, including the advisor. Once completed, the committee determines if the thesis is acceptable. The senior thesis must be presented publicly. If approved by the thesis committee, the thesis is published as a technical report. Senior Thesis Research (COSC303) is for directed research in support of the thesis project as substitute for one elective.

Requirements for the B.S. in Computer Science
First Year
 Computer Science I and II (COSC051, 052)
 Mathematical Methods for Computer Science (COSC030).
 As an alternative, students who take Introduction to Proofs and Problem Solving (MATH200) and Analysis I (MATH310) may substitute a COSC elective in place of COSC030.
 Introduction to Proofs and Problem Solving (MATH200), which is a prerequisite to Data Structures (COSC160).
 Calculus I and II (MATH035, 036)
Second Year
 Data Structures (COSC160)
 Advanced Programming (COSC150)
 Two additional math electives from: Multivariable Calculus (MATH137), Introduction to Mathematical Statistics (MATH140), Linear Algebra (MATH150), Number Theory and Cryptography (MATH211), Abstract Algebra (MATH215), Graph Theory (MATH220), Combinatorics (MATH221), Applied Statistical Methods (MATH240), Applied Statistical Methods II (MATH340), and Symbolic Logic (PHIL350). Additionally, alternatives to MATH140 are allowable; these include Probability and Statistics (MATH040), Economic Statistics (ECON121), Analysis of Political Data I (GOVT201), Business Statistics (OPIM173), or Quantitative Methods for International Politics (IPOL320).
Third and Fourth Years
 Computational Structures (COSC125)
 Introduction to Algorithms (COSC240)
 Programming Languages (COSC252)
 Operating Systems (COSC255)
 Five electives, which must be COSC courses numbered 100 or higher.
 As an alternative option, students may instead take four COSC electives 100 or higher and substitute one course from another department or program as a computer science elective as their fifth elective, provided that the course contains significant computational content. Students 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 obtain approval before taking the course to be certain it will count as an elective.
 Optional: Senior Thesis

The senior thesis is an opportunity for students to conduct research in computer science. Students complete a senior thesis by enrolling in two semesters of the onecredit Senior Thesis Seminar (COSC305/306), attending sixteen department colloquia while enrolled in Senior Thesis Seminar, 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 thesis advisor and oversees the project. At this point, the student is eligible to enroll in COSC305/306. The advisor and the student pick a thesis committee consisting of three faculty members, including the advisor. Once completed, the committee determines if the thesis is acceptable. The senior thesis must be presented publicly. If approved by the thesis committee, the thesis is published as a technical report. Senior Thesis Research (COSC303) is for directed research in support of the thesis project and substitutes for one 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
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 gradepoint average and a 3.67 gradepoint 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. 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.
MINOR IN COMPUTER SCIENCE
REQUIREMENTS FOR THE MINOR
To complete the minor, students must complete six courses: Computer Science I and II (COSC051, 052), Mathematical Methods for Computer Science (COSC030), and any three Computer Science (COSC) electives from the undergraduate courses numbered between 100 and 499. Students pursuing the minor cannot take graduatelevel courses numbered 500 and above. As an alternative, students who take Introduction to Proofs and Problem Solving (MATH200) and Analysis I (MATH310) may substitute a COSC elective in place of COSC030. MATH200 must be taken as a prerequisite to Data Structures (COSC160).
Procedure for Undergraduate CurriculumRelated 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. 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.
During the academic semester, the Undergraduate 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:
 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 (optional)
For course listings for Computer Science, see Schedule of Classes.