Questions about undergraduate academic programs? Contact

Undergraduate Advising

Academic resources, policies and procedures, and opportunities.

The Department of Computer Science offers three types of undergraduate programs. For those who intend to pursue a mainstream career in computer science, we recommend the Bachelor of Science degree, which is accredited by the Computing Accreditation Commission of ABET. For those who want a broader program of study, perhaps so that computing technology will empower them in other fields, we offer a Bachelor of Arts degree program. Students in other majors may also choose to complete a minor in computer science. This advising manual applies to students in these three programs. For specific major program degree requirements, please see below. CS minor program requirements can be found here.

There are several other closely related degree options that might interest you; however, they are not addressed in this manual. The Department of Computer Science and the Department of Electrical and Computer Engineering jointly offer a bachelor’s degree in Computer Engineering. There is also a minor in Computer-Integrated Surgery managed by the Engineering Research Center for Computer-Integrated Surgical Systems and Technology (CISST ERC) and a minor in Robotics offered through the Laboratory for Computational Sensing and Robotics (LCSR). We also encourage you to learn about the Department of Computer Science and the Information Security Institute’s Master’s in Information Security (MSSI) program and the LCSR’s MSE in Robotics. Both master’s programs are distinct from the department’s MSE and PhD programs in computer science. General information on the combined BS/MSE program can be found here.

The first step toward declaring a first or second major or a minor in computer science is submitting a form through SIS. You can do so by logging into SIS and choosing “Registration” > “Online Forms” > “Add Major/Minor.” If you are adding CS as a major, you will also need to meet with the Director of Undergraduate Studies, Joanne Selinski, or an Undergraduate Academic Program Coordinator and have your form approved. They will review your courses and provide guidance on choosing the most appropriate program of study and will assign you a CS faculty advisor. The declaration of your major will be reflected in SIS once this is completed. Joanne’s office hours and locations are available on her website. You also can email the CS advising team.

CS first and second majors are all assigned a CS faculty member as an advisor. CS minors may be advised by academic staff or faculty. Once an advisor is chosen, it is your responsibility to schedule a meeting with your advisor at least once a semester to discuss your general well-being, academic progress, and semester course selections. You are also encouraged to discuss extracurricular activities and research, career, and graduate school plans. Please keep in mind that our faculty do travel for conferences and other activities, so you should try to schedule meetings at least one week in advance; however, most faculty have an open door policy and welcome students to visit for informal chats, so it is possible to meet with them in this way, too.

As you get to know the CS faculty and their areas of interest, you may request to change your advisor to someone whose interests match yours, or simply to someone with whom you would prefer to work. If you wish to do this, simply send an email to with the specifics of your request. It is recommended that you ask your intended new advisor if they will take you on as an advisee before requesting a change. (We try to maintain a reasonable balance of advisees per faculty member.)

In addition to your major faculty advisor, you also have several resources for advising. Joanne serves as a general advisor for the department. However, she only will act on the behalf of a student’s assigned advisor to sign forms or release holds if that student’s advisor is unavailable. Joanne is always available for general consultation on degree programs, your progress, future options, special opportunities within the department and school, and life in general. At the school level, the WSE Advising Office in Wyman 125 provides many services for engineering students; these include general advising on school-wide policies and opportunities, transfer and study abroad approvals, and special help and support for academic struggles. We strongly advise all students to register with the Life Design Lab as early as possible to learn about upcoming events and receive counseling related to events, career goals, internships, and job opportunities.

Students are expected to follow the degree requirements that are in effect at the time they matriculate at JHU. However, students also have the option to instead satisfy requirements that go into effect after they matriculate. Whichever option you choose, it is imperative that you follow only that one complete set of requirements and do not “mix and match” from different years. Students should consult with their advisor about their program of study, but ultimately it is each student’s responsibility (not the advisor’s) to make sure that they meet all degree requirements. Under special circumstances, a student may request a waiver for or substitution of a departmental requirement. This must first be approved by the student’s faculty advisor and then by the department chair/head. All approved exceptions must be documented with an email to Joanne, as well as a WSE substitution/waiver form for the department’s files.

Students must keep track of their degree progress using a departmental worksheet. There is one worksheet for the majors (BS and BA) and another for the minor. Majors must share updated copies of this worksheet with their faculty advisor prior to each semester’s advising meeting, as well as whenever registration changes are made. Once a student’s last semester’s courses are finalized, the student must send a final worksheet to for degree verification. All students are required to submit a Graduation Application Form through SIS when registering for their last semester, listing all degrees and programs they expect to complete. Majors also are required to complete a departmental Senior Exit Survey distributed via email.

Note that the Humanities/Social Science and Writing requirements listed below only apply to first majors in CS. All others must follow the relevant requirements from their first major/school instead. See this catalogue policy for more details.

The CS IT department provides two computer labs for its undergraduates, located in Malone 122 and G61. Malone 122 is a large collaboration room with conference tables meant for laptop use, as well as several smaller breakout rooms for team meetings and study. Malone G61 provides a quiet environment with individual workstations. Students have 24/7 secure access to the labs through their J-Cards once validated. (This also includes your undergraduate Unix server account—see below.) Additional computing facilities are available on the Homewood campus, including general-purpose computing labs and the Digital Media Center.

All CS students are eligible to receive accounts to access the department’s undergraduate Linux server. In order to gain access, you must submit an Account Request Form, which generally takes a few days to process. You will need to bring your J-Card to Steve (in G61A between 12:30 and 2:30 p.m. most days) to get your login and password information and set up access to the computer lab and building.

The Linux server includes software you will use in many of your courses and your CS email. The department maintains several mailing lists for communicating with students. Make sure that the support staff and the Director of Undergraduate Studies have your preferred email address. If you are not going to use your CS account for email, you should set up an automatic forward to your email of choice. Please consult the CS IT Support Wiki to learn how to perform common tasks. If you have questions or problems regarding the CS computing facilities at any point, please email and be as specific as possible regarding the problem.

Students will receive the Honors with Thesis designation only if the faculty vote to accept their thesis after successful completion of the steps outlined below. (Note: General departmental honors are awarded to all graduating majors who earn a GPA of 3.5 or above in their computer science courses.)


  • Students must be computer science majors with at least a 3.5 GPA in CS courses after the spring of their third year.
  • Students must submit a thesis proposal in the spring of their third year to the faculty member with whom they intend to work. Proposals must have signed faculty acceptances before thesis course registration; copies will be held by the department administrator.
  • Students will sign up for two 3-credit courses (601.519-520) while doing thesis work, one per semester.
  • Progress checkpoints will be administered by individual faculty supervisors.
  • A first draft of the written thesis must be completed by May 1.
  • An oral presentation of the thesis work, open to all, must be held before the spring semester exam period.
  • A subcommittee of CS faculty will decide whether to accept each thesis for honors (i.e., successful completion of the agreed-upon work does guarantee credits, but does not guarantee the Honors with Thesis designation).
  • A final written thesis must be submitted to the department by May 15.
  • BS students may count at most 3 additional independent-type credits toward their CS credit requirements. (BA students can only count 6 total independent credits, including their senior thesis.)
  • If a student would like to submit their thesis to the MSE Library (not required), their thesis advisor or department will pay for the binding.

See the CS research areas to explore opportunities within the department and their associated faculty.

Please click here to learn more.

Information about the combined bachelor’s/master’s program can be found here.

Major Degree Requirements

Detailed requirements for the BS and BA in the Department of Computer Science for students entering in Fall 2021 and beyond, including policies and processes related to old vs. new requirements.

Required Courses

  • Ethics (BS only) – choose one of:
    • 601.104 Computer Ethics (1)
    • 601.124 Ethics of Artificial Intelligence & Automation (3)
  • 500.112/113/114 Gateway Computing or AP Computer Science A score or equivalent (3)
  • 601.220 Intermediate Programming (4)
  • 601.226 Data Structures (4)
  • 601.229 Computer System Fundamentals (3)
  • 601.230 Mathematical Foundations for Computer Science (4) or both of the following:
    • 553.171/172 Discrete Mathematics (4)
    • 601.431 Theory of Computation (3)
  • 601.433 Algorithms (3)

The total number of CS credits must be at least 40 for the BS and 33 for the BA, including the required courses and upper-level courses (601.≥300). Students must take at least 12 upper-level CS credits in addition to the required Algorithms [Theory] course. Furthermore, BS students must have at least one upper-level course in two of these five four different classification areas: Applications, Reasoning, Software, Systems, and Theory. An exhaustive list of the area classifications for each of our courses may be found here and are coded as POS tags in SIS.

BS students must also take at least one Team-designated course, carried by these courses: 601.290 User Interfaces & Mobile Apps, [601.310 no longer offered], 601.411 CSIE II, 601.421 Object Oriented Software Engineering, 601.447 Computational Genomics: Sequences, 601.452 Computational Biomedical Research, 601.453 Applications of Augmented Reality [added Spring 2023], 601.486 ML: AI System Design & Development [added Fall 2023], 601.490 Intro HCI, 601.496 CIS II – Teams, 580.437/438 Neuro/Biomedical Data Design (only counts as CS “other” credit). [Please note that 601.456 CIS II is not approved for the Team designation; you must take 601.496 instead.] This Team course may overlap with other course requirements; for example, it may count as both Team and Software.

These additional rules regarding the CS course requirements apply to students in both the BS and BA programs:

  • The limits on total independent-type credits (courses numbered 601.5xx) are 6 for the BS and 3 for the BA. However, students doing the Senior Honors Thesis (601.519-520) may use an additional 3 credits of independent work toward their CS requirements.
  • No courses with grades below C- or with S/U grades can be used to fulfill the CS course requirements unless the course is not offered for a grade. Furthermore, at most 4 S/U credits may be applied to the CS credit requirements, regardless of course type.
  • BS students may count up to 6 of the 40 required credits from an approved list of relevant courses in other departments, which includes some courses cross-listed in CS.
  • 601.124 Ethics of AI & Automation may count as CS elective credits or H/S credits, but not both.
  • At most 3 credits of short courses (1-credit special topics courses) can be counted toward this requirement.
  • Practical Ethics for Future Leaders [no longer offered] may be used as a substitute for the computer ethics requirement for the BS program, but does not count toward total CS credits. Rather, the 3-credit version 660.400+406 may be applied towards your H/S requirements and the 2-credit version 660.400 will count as elective credits.

CS majors must take the following courses:

  • 110.108 Calculus I or AP equivalent (4)
  • 110.109 Calculus II or AP equivalent (4)

The total math credits must be at least 16 for both the BS and the BA; these courses should be taken for a grade. All courses in this category must be from one of the two math departments on campus: Mathematics or Applied Mathematics and Statistics. (Q-designated courses in other departments cannot be counted here.) For the BS, all remaining math courses must be 200-level or above. For the BA, at least one course must be 200-level or above. Lastly, BS math courses must include coverage of both probability and statistics, which can be satisfied in many ways, including taking any of the combined Probability and Statistics courses. For BS students, AP Statistics credit covers the need for statistics but not probability, and may not be counted toward the math credit requirements. Also note that 553.171 Discrete Mathematics may not count towards the BS math requirements. Some highly recommended math electives are Linear Algebra, Probability, Mathematical Statistics, and Calculus III, as well as analysis and algebra courses.

Students must take two semesters of core science courses (any combination of physics, chemistry, and biology), with the associated labs, totaling at least 8 credits. These courses should be taken for a grade. However, AP credit is an acceptable substitute for these courses and labs.

Students using AP Biology credit to meet this requirement will need to take two more science credits in order to reach the 8-credit minimum. These can come from any N-designated course except AS.250.205 Introduction to Computing and must be taken for a grade.

The liberal arts requirements can be divided into three groups: H/S courses, writing courses, and foreign language.

  • Six courses, each at least 3 credits, in the humanities and social sciences must be taken. These courses must have either an H or S area designator, but can be from any department. For the BS degree, at most two of these courses may be taken S/U (if not counted towards the writing requirement). For the BA degree, at least two of these courses must be at the 300-level or above, and all must be taken for a grade.
  • The university requires writing (W) designated courses, each at least 3 credits and taken for a grade, for all degree programs. The school (WSE or KSAS) of your first major (primary degree) dictates which requirement applies to you. WSE BS students must take at least two of these courses and BA first majors must take at least four. The courses used to satisfy this requirement may overlap with other categories, such as H/S credits (if designated as such) or electives. Students must receive at least a C- grade or better in these writing courses. At least one course with a primary focus on writing in English must be chosen. Courses that satisfy this requirement are: EN.661.110, EN.661.111, EN.661.250, EN.661.251, EN.661.306, EN.661.315, EN.661.355, AS.220.105/106/108, AS.180.248, AS.290.303, AS.360.133, AS.004.101. [Also no longer offered course Expository Writing (any version).]
  • BA students are required to demonstrate proficiency at the intermediate level or take at least 6 credits in one foreign language in addition to the six H/S required courses. BS students are not required to take a foreign language, but they may count foreign language courses toward electives (see below) or toward the H/S requirement above even if they don’t carry an H or S designator. However, students must still have at least six ≥3-credit courses to fulfill the H/S requirement.

Note: The H/S and writing requirements above apply to first majors only. Second majors must follow the related requirements of their first major instead. However, the foreign language requirement applies to all those following the CS BA path, whether as a first major or not.

The total number of credits required for the BS or BA degree is 120. By university policy, no more than 18 D or D+ credits can be counted toward the total credit requirements for a degree. The requirements above add up to 82 credits for the BS and 81 credits for the BA, leaving room for many electives. Except for electives and where noted above, courses should not be taken on an S/U basis.

See the CS “Other” Courses page for information about non-CS department courses that may count toward our undergraduate programs.

If you choose to transition from old requirements (those that were in place when you matriculated) to new requirements (BS or BA), please note that the most challenging aspect of this process is that requirements changed from two required courses, 553.171 Discrete Math (4) and 601.231 Automata & Computation Theory (3), to one required CS course, 601.230 Mathematical Foundations for Computer Science (4). In all cases you must meet the credit totals and requirement details listed above. Students will fall into one of three categories:

  1. If you have not yet taken either 553.171 Discrete Math or 601.231 Automata & Computation Theory but want to follow the new requirements, you should not take either of them. Rather, wait until Spring 2022 when we will start offering 601.230 Mathematical Foundations for Computer Science (MFCS) and take that instead.
  2. If you’ve already taken both 553.171 Discrete Math AND 601.231 Automata & Computation Theory, we will waive the new MFCS core required course and count Automata & Computation Theory’s 3 credits toward your CS requirements. However, as noted above, the credits for Discrete Mathematics do not count toward the new math requirements. Also, you will not be allowed to register for 601.230 MFCS. Lastly, please note that the 1-credit difference between Automata & Computation Theory (3) and MFCS (4) means that you will need to make up that missing credit with another CS credit to reach the required total.
  3. If you’ve already taken 553.171 Discrete Mathematics but NOT 601.231 Automata & Computation Theory and want to follow the new requirements, you must choose one of the three options below. This category also applies to AMS/CS double majors who are required to take Discrete Mathematics for AMS. (Note that Discrete Mathematics does not count toward the new math requirements.)
    • Take 601.230 Mathematical Foundations for Computer Science (starting Spring 2022) to satisfy the new requirement.
    • Take 601.231 Automata & Computation Theory by Fall 2022 and do not take the new course 601.230 MFCS. This will put you in category 2 above.
    • Take 601.431 Theory of Computation later (offered once a year starting in 2023). This also puts you in category 2 above, with the difference that 601.431 can be counted towards upper-level CS credits instead of core if you prefer.

Additional notes on course offerings and registration:

  • 601.231 Automata & Computation Theory will only be offered through Fall 2022.
  • 601.230 Mathematical Foundations for Computer Science will be offered every semester starting Spring 2022.
  • Students will not be allowed to register for 601.230 Mathematical Foundations for Computer Science if they have taken 601.231 Automata & Computation Theory already or concurrently, and vice versa. In other words, you can only get credit for 601.230 or 601.231, but not both.

The remainder of the transition from old to new requirements should be straightforward based on the less restrictive requirements for math, science, and H/S courses as detailed above.

In Degree Audit, there is a mechanism for students entering JHU before Fall 2021 to choose the new requirements or the ones they entered under. Please look for “select alternate path” links throughout the audit to customize it to match your intentions.

Students should also use the appropriate major worksheet for the set of requirements they are choosing (yellow = old, green = new) and make sure to let their advisors know, as well.