Undergraduate Advising Manual

Welcome to the Computer Science Department! The current Department Chair is Prof. Randal Burns and the Director of Undergraduate Studies (DUS) is Dr. Joanne Selinski. Kelly Culotta is the Sr. Academic Coordinator for undergraduate students. We hope you will find this manual to be a helpful guide as an undergraduate in our department. We also have many resources available on-line through our department website. Our main office is located in Malone 160. There you will find the administrative staff (including Kelly), as well as faculty mailboxes. The degree requirements listed here apply to students matriculating at JHU through Spring 2021. See Advising Manual 2021 for requirements applying to students starting in Fall 2021 and beyond.


  • The Computer Science Department 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, http://www.abet.org. 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 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. For CS Minor program requirements please visit this webpage.

    There are several other closely related degree options that might interest you, however they are not addressed in this manual. The Computer Science Department and the Department of Electrical and Computer Engineering jointly offer a bachelor 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). And lastly, you may find the MSE in Robotics offered by LCSR, or the Masters in Information Security (MSSI) offered through the Information Security Institute to be an attractive next step. Those masters programs are distinct from the graduate programs in Computer Science (MSE and PhD) that students may also progress into. General information on concurrently pursuing a masters degree while finishing an undergraduate degree is included below.

  • The first step in declaring a first or second major, or a minor in computer science is to submit an online form through SIS. You can do so by logging into SIS. Then, go to “Registration” > “Online Forms” > “Add Major/Minor”. If you are adding CS as a major then you will also need to visit the Director of Undergraduate Studies (DUS), Joanne Selinski, or the Undergraduate Program Coordinator, Kelly Culotta, in order to get your form approved. They will review your courses and provide guidance on choosing the most appropriate program of study. They will also assign you a CS faculty advisor if you decide to pursue a program. The declaration will be reflected in SIS once this is done. See Joanne’s website for both their hours and locations, or email advising -at- cs.jhu.edu to reach both of them at once.

  • CS first and second majors are all assigned an advisor from among the CS tenure-track faculty. The teaching faculty advise all the CS minors. Once an advisor is chosen, it is your responsibility to schedule a meeting at least once a semester in order to discuss your general well-being, academic progress, and semester course selections. You are also encouraged to discuss extracurricular activities, research, career and graduate school plans with your advisor. You will be given your advisor’s email address, and general office location. Please remember that our faculty do travel for conferences and other activities, so you should try to schedule necessary meetings at least one week in advance. However, most faculty have an open door policy welcoming students for informal chats if you catch them in their office.

    As you get to know our faculty and the field of CS better, you may request an advisor change to one whose interests match yours, or simply someone with whom you would prefer to work. If so, simply bring an advisor change form to Joanne or Kelly, and then return it to the Registrar to complete the advisor change process. It is recommended that you ask your intended new advisor if he or she will take you on as an advisee before requesting a change. (We try to maintain a reasonable balance of advisees per faculty member.)

    You have several resources for advising in addition to your major faculty advisor. Joanne and Kelly both serve as a general advisors for the department. However, they will only sign forms or release holds for assigned advisors if faculty are unavailable and ask them to act on their behalf. They are 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, as well as special help for academic struggles. Lastly, the Homewood Advising Office in Wyman 170, provides support for academics including tutoring and pre-professional advising, as well as programs such as Study Abroad. We strongly advise all students to register with the Career Center as early as possible for their expertise and events regarding internships and job opportunities.

  • Students are expected to follow the degree requirements in effect at the time that they matriculated at JHU declared a major or minor in computer science. However, you also have the option of satisfying a more recent set of requirements. It is imperative in either case that you follow one complete set of requirements. You cannot mix and match from various years. Students should consult with their advisors regarding their program of study, but ultimately it is each student’s responsibility (not the advisor’s) to make sure he or she has met all the requirements. Under special circumstances a student may request a waiver or substitution of a departmental requirement. This must be first approved by the faculty advisor, and and then by the department chair. Any approved exceptions must be documented with an email to Joanne and Kelly, as well as a WSE substitution/waiver form for their files.

    Students must keep track of their degree progress using a departmental worksheet. These Excel files, one for majors (BS and BA) and one for the minor, are all available from the department website. Majors must bring updated copies of this worksheet to each semesterly advising meeting and email a copy to advising -at- cs.jhu.edu every semester. Once their last semester courses are finalized, students must send a final worksheet to advising -at- cs.jhu.edu for degree verification. All students are required to submit a “Graduation Application Form” through SIS in their senior year as well, listing all degrees and programs they expect to complete. Lastly, majors are required to complete a departmental Senior Exit Survey (to be distributed by email), which also gets returned to Joanne.

  • The CS Department provides two computer labs for its undergraduate students, located in Malone 122 and G61. Malone 122 is a large collaboration room consisting of conference tables with internet and electrical hook-ups 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 comes along with getting your undergraduate unix server account (see below). Additional facilities are available at the campus level, including general purpose computing labs, a digital media center, and wireless access to the Internet.

    All CS students are eligible to receive accounts to access our undergraduate linux file server. In order to get access, you must submit an Account Request Form, available in the department main office, Malone 160. This generally takes a few days to process. You will need to bring your J-card to Steve (in G61A between 12:30-2:30pm most days) in order to get your login and password information and set-up access to the computer lab and building.

    The linux server provides software that you will use in many courses, as well as email. The department maintains several mailing lists for sending notices to students. Make sure that the support staff and the DUS have the email address that you prefer to use on their lists. If you are not going to use your CS account for email, then you should set up an automatic forward to your email of choice. Please consult the computer support FAQ wiki on the department webpages to learn how to do common tasks. If you have questions or problems regarding the CS computing facilities at any point, please email “support@cs.jhu.edu” and be as specific as possible regarding the problem.

  • [See also our undergraduate research web resource.]

    In accordance with Hopkins’ mission as a research university, undergraduate students in computer science are encouraged to gain some research experience. The primary mechanism for getting involved is to approach a faculty member whose area interests you and ask how you can participate. Generally the faculty member will expect you to have a course in their area in order to get a background for actual research projects. Several upper level courses have project components which often lead to further research. Also, some research groups may have opportunities to learn about their area while serving as a research lab administrator or webmaster.

    In addition to the various independent undergraduate courses available in the department, there are several programs specifically designed to promote undergraduate research: the Pistritto Research Fellowship and the Senior Honors Thesis. Although both programs are usually pursued as individual efforts, they have supported group projects in the past.

    The Pistritto Research Fellowship is an application based program which awards a stipend to a student annually for research in information visualization. A call for applications is sent via email each spring for the following academic year. The fellowship recipient may choose to pursue the research during the summer or during the regular school year, in conjunction with the sponsoring faculty member.

    The Senior Honors Thesis program enables students with CS course GPAs of 3.5 or greater to pursue a full year (6 credits) of research with a faculty member. Interested students must submit a thesis proposal in spring of their junior year. If accepted, they will register for the courses 601.519 and 601.520 during senior year while doing the research. They are required to give a presentation on their work and submit a final thesis report at the end of the spring semester. With departmental faculty approval of the work, the student will then receive the distinction “Departmental Honors with Thesis”. Please visit the Senior Thesis webpage for more details.

    Departmental Honors (without thesis) are awarded to students who graduate with a computer science course GPA of 3.5 or above.

  • [See also our undergraduate careers web resource.]

    Students are encouraged to pursue internships during winter and summer breaks. Generally these are done for money in the CS field. However, the university does have policies regarding receiving credit instead of pay for appropriately oriented work. Please sign-up for the department jobs mailing list. You should also register with the campus Life Design Lab (Handshake) in order to stay abreast of campus wide visits and job fairs. It is always the student’s responsibility to apply directly to a company for any internships or jobs which interest them. We do not have the authority to place students into any positions.

  • [See also our undergraduate life web resource.]

    The CS department supports four student groups. First, we have a JHU Chapter of the Association for Computing Machinery (ACM). The ACM is an international professional organization of computer scientists. All students with an interest in computer science are encouraged to get involved in the ACM. The group has an office in Malone G67 and runs weekly meetings on Thursday evenings during the school year. They also sponsor special events, which include pizza & movie nights, as well as local and regional programming contests. Their website is acm.jhu.edu.

    Women in the department will hopefully join WiCS, our women in CS group. They meet informally most weeks for “coding circles”. These are fun gatherings where students eat chocolate, talk about courses, help each other with homework (within the bounds of the ethics code of course), do their nails, talk about outside activities, careers, and whatever else might come up. They also hold periodic dinner meetings with outside guest speakers.

    We also have a JHU Chapter of Upsilon Pi Epsilon (UPE), which is the international computer science honor society. Students may apply for acceptance to UPE in their junior or senior years. Acceptance is based largely on academics (CS GPAs in particular), with some consideration for service as well. Members of our UPE chapter participate in various recruiting and other service projects in the department throughout the school year. Their website is upe.cs.jhu.edu.

    Lastly, there is a planning team for HopHacks, our 36-hour hackathon held on campus every semester. Participation in the planning team is by application. Generally team members are expected to have been involved in at least one prior HopHacks event as a participant and/or volunteer.

  • The combined program at Hopkins enables undergraduates to apply for and begin taking courses towards a Masters degree before completing their bachelor degrees. Most students apply for the program in their junior year, and will finish both degrees in five years total. It is not necessary for your undergraduate major and your masters degree to be in the exact same field. For example, some CS undergraduates do the concurrent program to get a Masters in Security Informatics. Mixing the degrees is also an alternative to doing a double major in closely related fields such as CS and computer engineering or math. As a concurrent student, you must satisfy all the requirements of your bachelors degree as well as all the requirements of the masters degree. Some departments may permit an overlap of at most two courses. All other courses, including undergraduate electives, must be separate and distinct for the two degrees. If you are interested in applying for the concurrent program, please see our Graduate Program Coordinator, Revelie Niles, in Malone 160, or simply apply on-line through the university’s graduate admissions website.

  • This section provides the nitty-gritty details and clarifications of the requirements for the BS and BA major programs. It is organized according to requirement category, and within each provides specifics for each program.

    Computer Science Courses

    Required courses:

    • (BS only) 600.104/601.104 Computer Ethics [or see below]
    • 500.112 Gateway Computing or 600.107/601.107 Intro Programming in JAVA or AP Comp Sci A or equivalent
    • 600.120/601.220 Intermediate Programming
    • 600.226/601.226 Data Structures
    • 600.233/601.229 Computer System Fundamentals
    • 600.271/601.231 Automata and Computation Theory
    • 600.363/600.463/601.433 Algorithms (added Fall 2011)

    The total number of CS credits must be at least 42 for the BS and 32 for the BA (as of 2013), including the required courses and upper level courses (>=300). BA students must have at least 15 upper level credits; BS students must have at least 16 upper level credits (both including Algorithms). Furthermore, BS students must have at least one upper level course in three different classification areas. Prior to July 2019 these areas were Analysis (includes Algorithms), Applications and Systems. As of July 2019 these areas are Theory (includes Algorithms), Applications, Systems, Software and Reasoning. An exhaustive list of the area classifications for each of our courses may be found here. Note that many courses have new classifications with the 5 area designators, so please review and plan accordingly.

    As of July 2019 BS students must take at least one Team designated course, carried by these courses: 601.290 User Interfaces & Mobile Apps, 601.295 Developing Health IT Web Apps, 601.310 Software for Resilient Communities, 601.411 CSIE II, 601.421 Object Oriented Software Engineering, 601.447 Computational Genomics: Sequences, 601.452 Computational Biomedical Research, 601.490 Intro HCI, 601.496 CIS II – Teams, 580.437/438 Neuro Data Design (only counts as “CS other” credit). [Note that 601.456 CIS II is not approved for Team – you must take 601.496 instead.] Prior to July 2019, this requirement was to take at least one of the following courses which contain Oral communication components: 600.250/601.290, 600.255/601.255, 601.295 (2019 onward), 601.310 (2018 onward), 600.321/600.421/601.421, 600.355/601.355, 600.411/601.411, 601.447 (2017 onward), 600.446/601.456, 601.490, 600.493, 600.520/601.520, and 580.437/438 (2017 onward, counts as CS other). The oral/team course may overlap other course requirements, for example to count as both Team and Software.

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

    • [As of 2017] Practical Ethics for Future Leaders (500.496/497 or 660.400/406) may be used as a substitute for the computer ethics requirement for the BS program, but does not count towards the CS total credits at all. Rather the 3-credit version 500.496 or 660.400+406 may be applied towards your H/S requirements and the 2-credit version 500.497/660.400 counts as elective credits.
    • At most 3 credits of short courses (1-credit special topics courses) can be counted toward this requirement.
    • The limits on total independent type credits (courses numbered 600.5xx/601.5xx) are 6 for the BS and 3 for the BA. However, students doing the Senior Honors Thesis (600/601.519-520) may use an additional three 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 they are not offered for a grade. Furthermore, as of 2017, at most 4 S/U credits may be applied to the CS credit requirements, regardless of course type.
    • [As of 2016] BS students may count up to 6 of the 42 required credits from an approved list of relevant courses in other departments, which includes courses cross-listed in CS. These courses may only count as “CS other” credits, not upper level CS credits (regardless of course level in the other department).
    • [Pre-2016: With the adviser’s explicit permission regarding course selections, up to 6 (BS) or 3 (BA) of the required CS credits may be taken in the Department of Electrical and Computer Engineering or the Information Security Institute.]

    Math Courses

    CS majors must take the following courses:

    • 110.108 Calculus I or AP equivalent
    • 110.109 Calculus II or AP equivalent
    • 550.171/553.171 Discrete Mathematics

    The total math credits must be at least 24 for the BS and 20 for the BA [22/18 prior to 2016]; 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 Math and Statistics. (‘Q’ designated courses in other departments can not be counted here.) For the BS all the remaining courses must be 200-level or above. For the BA at least one course must be 200-level or above. Lastly, the BS math courses must include coverage of both probability and statistics, which can be satisfied in many ways, including taking any of the 553.3xx combined Probability & Statistics courses. For BS students, AP Statistics credit covers the need for statistics but not probability, and may not be counted towards the math credit requirements. Some other highly recommended math electives are Linear Algebra, Intro to Probability, Intro to Statistics, and Calculus III, as well as analysis and algebra courses.

    Science Courses

    The required number of basic science credits is 16 for the BS and 12 for the BA; these courses should be taken for a grade. At least two semesters of physics or two semesters of chemistry, with the associated laboratories, must be included. (The BA permits one of each.) AP credit is an acceptable substitute for these courses and labs. The remaining courses must be chosen in accordance with the approved science courses list posted on the department’s website, which includes most ‘N’ designated courses, but not all. At most 2 credits of intersession (S/U) ‘N’ courses may be applied towards this requirement. If it’s not obvious whether a particular course will count towards this requirement, check the website, then ask your advisor or Joanne.

    Liberal Arts

    The liberal arts requirements can be divided into three groups: H/S courses, foreign languages, and writing courses. These courses should be taken for a grade.

    • 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 on them, but can be from any department. For the BA degree, at least two of these courses must be at the 300-level or above. Furthermore, a subset of the courses selected to satisfy this requirement should demonstrate coherence within an area.
    • 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 towards electives (see below), or towards 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.
    • The university requires writing (‘W’) designated courses, each at least 3 credits, 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 2 of these courses, and BA students must take at least 4. 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.315, AS.060.100, AS.060.113, AS.220.105, AS.180.248, AS.290.303, AS.360.133.

    Electives and Total Credits

    The total number of credits required for the BS degree is 126, and 120 for the BA. 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 100 credits for the BS and 88 credits for the BA [effective 2016], leaving room for electives. Except for electives, courses should not be taken on an S/U basis. [Effective 2009-2016 only: BS students must take at least 12 elective credits in the humanities, social science, arts, business, science, engineering or other disciplines that serve to broaden the student’s background. These 12 broadening credits are in addition to the H/S requirements above, and may be anything other than CS, ECE or math courses.] [Pre-2016: Freshmen majors are expected to take 600.105 M&Ms as one of their elective credits.]

    A sample schedule may be found online for the BS degree.

  • CS majors are encouraged to explore a variety of elective courses in order to discover and pursue special interests within the discipline. There are a number of focus areas that we have identified based on research strengths within the department and potential career paths. It is important to emphasize that majors are not required to choose a focus area, they are simply options for customizing your studies. Each focus consists of a collection of upper level courses strongly related to that particular area. The full list is available in this pdf document. Note that these tracks have been updated with new course numbers (Fall 2017).

    The faculty have developed several of the original focus areas into fuller tracks in order to help students plan related selections for their non-CS courses as well. Below you will find detailed descriptions for five tracks: Natural Language Processing, Software Engineering, Information Security, Video Game Design, and Robotics. Others are likely to be added in the future.


    Natural Language Processing

    Natural Language Processing (NLP) is a branch of artificial intelligence. Its goal is to build programs that can analyze, understand, produce, and transform text in natural human languages such as English, Chinese, or Malayalam. Natural languages are fascinatingly complex symbolic systems. Unlike programming languages, they were not designed to be easy for computers to understand. Yet humans cope with them effortlessly.

    Major questions in NLP include: How should we formally represent the structure and meaning of words, sentences, or documents? What algorithms can efficiently find the most likely meaning for a given sentence — or the best sentence to express a given meaning? What exactly do these algorithms need to know about English, Chinese, Malayalam, or the topics that the sentences discuss? Must we write down that knowledge ourselves, or can our computers automatically learn languages from available data? Finally, what practically useful applications can we devise?

    NLP skills are in demand for applications that encounter large quantities of text or speech. Examples include search engines, recommendation systems, digital libraries, word processors, email interfaces, cell phone and PDA services, market research, automated customer service, medical records entry and analysis, national security applications, education software, information access and communication by the disabled, language services like translation and transcription, and all manner of data mining efforts that try to determine what a community knows or thinks. NLP skills are also very relevant to computational biology, computational finance, music processing, speech processing, data mining, machine learning, linguistics, cognitive science, and other areas of artificial intelligence.

    A 4-year program of study should include coursework from the three major technical areas needed for NLP. Linguistics studies the formal properties of natural language; statistics is used to learn from data what the best output might be; and computational algorithms are used to search efficiently for the best output or the best statistical model in an enormous space of possibilities.

    Courses marked below with an asterisk should almost always be included. F/S indicate which courses have historically been offered in fall/spring.

    Core courses. Students concentrating in NLP should take at least two of the following courses, in any order:

       (F) 601.365 Knowledge Discovery from Text
       (F) 601.465 Natural Language Processing *
       (S) 601.466 Information Retrieval and Web Agents
           601.468 Machine Translation
           601.766 Information Extraction from Speech and Text

    They will want to take 601.465 as soon as feasible (after completing 601.226 Data Structures).

    Algorithms. NLP concentrators will also want to study methods that are useful for artificial intelligence more generally. They should take at least two of the following courses, in any order:

       (F,S) 601.464 Artificial Intelligence
             601.325/425 Declarative Methods
       (F,S) 601.433 Introduction to Algorithms * (required for CS degree)

    Linguistics. All NLP concentrators should take at least one of the following 300-level linguistics courses, typically including syntax. Note that all 050.xxx courses count as “broadening electives” for the CS major.

       (F) 050.320/620 Syntax I *
       (F) 050.317/617 Semantics I
       (S) 050.325/625 Phonology I

    All of these courses expect some prior exposure to linguistics, typically via 050.102, 050.240, or 600.465.

    Students who choose the track early can obtain useful background in linguistics, psycholinguistics and formal language theory starting in the freshman or sophomore year.

       (F,S) 601.231 Automata and Computation Theory * (required, must take Discrete Math first)
       (S) 050.102 Language and Mind
       (S) 050.240 The World of Language

    Statistics. Modern NLP relies heavily on statistical methods to make sense of ambiguous language and to learn from data. While all CS majors are required to take some probability and statistics, concentrators in NLP should obtain a firm grounding in machine learning and its mathematical underpinnings. They should take

           601.475 Machine Learning *
       (F) 553.420 Introduction to Probability
       (S) 553.430 Introduction to Statistics

    although if absolutely necessary, this may be condensed to

           601.475 Machine Learning *
           553.310 Probability and Statistics

    Students are also encouraged to consider

           601.476 Machine Learning: Data to Models
           601.479 Machine Learning: Representation Learning
           601.675 Machine Learning: Foundations
       (F) 520.447 Introduction to Information Theory and Coding
       (F) 553.361 Introduction to Optimization

    Some of these courses can be applied toward the mathematics requirements of the CS degree.

    5-year program. Students in the concurrent BS/MS program will typically take a larger selection of the above courses, and take more of them at the 400 or 600 level. In the fourth or fifth year (after taking 600.465 or 600.666), they will want to participate in research activities or special-topics courses related to NLP. Such offerings vary from year to year, but generally include the following 1-credit ongoing speaker series and reading groups:

       (F,S) 520.603/604 Current Topics in Language and Speech Processing
       (F,S) 601.865 Selected Topics in Natural Language Processing
       (F,S) 601.866 Selected Topics in Meaning, Translation and Generation of Text


    Software Engineering

    A Software Engineer is a professional programmer: someone with broad background in Computer Science who can successfully tackle large software projects using modern software development tools in a systematic and disciplined fashion.

    Software engineers should know how to elicit requirements, design, implement, and test software. The software engineering track focuses on these core skills as well as the broader knowledge needed including how the software should interact with the underlying operating system, database, and network.

    Courses marked below with an asterisk should almost always be included. F/S indicate which courses have historically been offered in fall/spring.

    Core courses. Students concentrating in Software Engineering should take at least two of the following core courses:

       (S) 601.290 User Interfaces and Mobile Applications 
       (S) 601.295 Developing Health IT Web Applications
       (F) 601.421 Object-Oriented Software Engineering *
       (S) 601.411 CS Innovation and Entrepreneurship II (prereq: EN.660.410 CSIE I)

    (F) 601.490 Human-Computer Interaction
    Computer Systems. Software Engineering concentrators need to have a broad understanding of computer systems since large-scale software is developed in the context of a complex deployment of computers, software, databases, and networks. Students should take at least three of the following courses, in any order:

       (F) 601.315/415 Databases
       (S) 601.314/414 Computer Networks 
       (F) 601.318/418 Operating Systems
       (S) 601.320/420 Parallel Programming
       (S) 601.328/428 Compilers & Interpreters
           601.317/417 Distributed Systems (alternate years)
       (F) 601.443 Security and Privacy in Computing

    Analysis. Theoretical courses are important to improve mathematical maturity, leading to the ability to approach problems in a more disciplined manner. Students should take one or more of the following courses:

       (F,S) 601.433 Intro to Algorithms *
           601.325/425 Declarative Methods
       (S) 601.426 Programming Languages

    Probability and Statistics. Modern Software Engineering relies heavily on probability and statistics. Students should take

       (F) 553.420 Introduction to Probability
       (S) 553.430 Introduction to Statistics 
         or if there is a shortage of time,
       (F,S) 553.310 Probability and Statistics

    Teamwork. Software Engineers need to be extremely good at working closely with others — duties are even more closely overlapping than on other engineering projects and only team players will succeed. Make sure you take as many courses as you can that involve team project work, as well as participating in extracurricular activities that are teamwork activities.

    Information Security

    Information Security is a broad topic description. It typically spans every aspect of a system, including authentication, authorization, access control, resistance to penetration, and privacy. Security must be designed into a system from the beginning. It cannot be retrofitted. Security analysis and design begins with a threat model. Who are the adversaries? What are the goals of the adversary? What are his/her capabilities? How resourceful and wealthy is the adversary? Once the threat model is identified, the proper level of security can be applied.

    Sub areas in security include software security, network security, system security, security in applications, and cryptography. Each of these sub areas can be further broken down. Some concepts span multiple sub areas. For example, security protocols such as SSL and SSH have strong system components and also rely on cryptographic protocols and algorithms. Application areas include everything from security in electronic voting, to protecting medical records, and just about any application that talks to a network or takes user input.

    The Johns Hopkins University Information Security Institute (JHUISI) makes available a Master of Science in Security Informatics (MSSI) degree to students interested in information security that can be included in a concurrent BS/MSSI program that addresses not only technical issues but also relevant aspects of policy, privacy, management, including healthcare applications. Please see the JHUISI web site for information on the MSSI requirements.

    A 4-year program of study should include coursework from the major technical sub areas needed for Security that are listed above.

    Courses marked below with an asterisk should almost always be included. F/S indicate which courses have historically been offered in fall/spring. Not every course is offered every year.

    Core courses. Students concentrating in Security are required to take one of the following cryptography courses:

       (F) 601.442 Modern Cryptography*
       (S) 601.445 Practical Cryptographic Systems
       (S) 553.371 Cryptology and Coding
       (F) 650.470 Introduction to Cryptography
           601.742 Advanced Topics in Cryptography
           601.745 Advanced Topics in Applied Cryptography

    They should also take at least three of the following courses:

       (F) 601.440 Web Security
       (F) 601.443 Security and Privacy in Computing*
       (S) 601.444 Network Security
           601.441 Blockchain and Cryptocurrencies
       (F) 650.656 Computer Forensics
       (F) 650.660 Software Vulnerability Analysis

    Systems. Students who choose this track early should obtain some background in operating systems and networking. The following courses are recommended prerequisites for this track:

           110.304 Elementary Number Theory
       (S) 601.314/414 Computer Networks
       (F) 601.318/418 Operating Systems

    5-year program. Students in the concurrent BS/MS program will typically take a larger selection of the above courses, and take more of them at the 400 or 600 level. In the fourth or fifth year (after taking 600.442 or 600.443), they will want to participate in research activities or special-topics courses related to Security. Such offerings vary from year to year, but generally include the following advanced classes:

           601.742 Advanced Topics in Cryptography
           601.743 Advanced Topics in Security and Privacy
           601.745 Advanced Topics in Applied Cryptography
       (S) 650.744 Advanced Topics in Network Security


    Video Game Design

    In 2008, video games represented a market of $11.7 billion with about 68% of US households reporting gaming activity. Much like motion pictures in the early part of the 20th century, video games have now become a major player in the entertainment industry and are prevalent enough to warrant academic attention from a wide variety of disciplines. An increasing number of highly ranked universities across the country are now offering programs that focus on video games (CMU, Rensselaer, USC, UCSC, UCI, Cornell, etc).

    Aside from being immensely relevant, courses in video game design are by necessity also highly interdisciplinary. Students surveyed after our first pilot course in Spring 2008 were almost unanimous about their positive experience in working with people from a wide variety of backgrounds. The track reflects this by suggesting a large number of courses that would not necessarily seem particularly “appropriate” for a CS major if we were not talking about gaming.

    Courses. A four-year program of study should include coursework from both technical and artistic areas. The technical area focuses on computer science, math, and physics; the artistic area focuses on graphic design, modeling, and sound design. Courses marked below with an asterisk should almost always be included.

    Writing Requirement. Students in the Video Game Design track must take these courses, which also fulfill their writing requirement for the BS and can be used towards the BA writing requirement as well.

       JHU 220.105 Introduction to Fiction and Poetry Writing
       JHU 220.106 Introduction to Fiction and Poetry Writing

    Core Courses. Students in the Video Game Design track must take the following courses. The MICA courses count as electives with respect to the CS degree requirements.

       JHU 601.255 Introduction to Video Game Design
       JHU 601.355 Video Game Design Project
      MICA  GD 200 Graphic Design I
      MICA  IM 200 Interactive Media I
      MICA VID 202 Sound I

    Technical Area. Students following the track in Video Game Design should take at least three of the following courses.

       (S) JHU 601.320/420 Parallel Programming
       (S) JHU 601.464 Artificial Intelligence
           JHU 601.317/417 Distributed Systems (alternate years)
       (F) JHU 601.457 Computer Graphics *
       (F,S) JHU 601.433 Introduction to Algorithms
       (F,S) JHU 553.310 Probability and Statistics *
       JHU 553.361 Introduction to Optimization
       JHU 171.105 Classical Mechanics *

    We also recommend a course on simulation of physical systems or control theory. Some possibilities might be: 530.201, 530.343, 530.405, 530.414, 520.353, 520.454.

    Artistic Area. Students pursuing the track in Video Game Design should take at least three of the following courses. These can be used toward Broadening Electives and general electives in our degree programs.

      MICA ENV 200 Space / Object I
      MICA IN 204  Lighting Design
      MICA IM 336  Interface Design and User Experience *
      MICA AN 202  Introduction to 2D Computer Animation *
      MICA AN 203  Introduction to 3D Computer Animation *
      MICA AN 363  2D Character Animation
      MICA AN 364  3D Character Animation
      MICA AN 450  Animation Post-Production

    [DISCLAIMER: We are not sure about the credits of the various courses suggested here and how they balance out. Also, we need to double-check with MICA faculty about their courses. MICA recently started their own gaming program and no doubt some courses have changed.]



    The field of Robotics integrates sensing, information processing, and movement to accomplish specific tasks in the physical world. As such, the study of robotics can encompass several topics, including mechanics and dynamics, kinematics, sensing, signal processing, control systems, planning, and artificial intelligence. Applications of these concepts appear in many areas including medicine, manufacturing, space exploration, disaster recovery, ordinance disposal, deep-sea navigation, home care, and home automation. There are variety of sub-specializations of robotics that are more algorithmic or systems-oriented in nature. Examples include robot motion planning, robot task planning, sensor-based mapping, computer vision, and human-machine systems. The robotics track is designed to emphasize these areas of work.

    For students interested in a broader exposure to robotics, the faculty of the Laboratory for Computational Sensing and Robotics (LCSR), in collaboration with the academic departments and centers of the Whiting School of Engineering, offers a Robotics Minor in order to provide a structure in which undergraduate students at Johns Hopkins. The minor is not “owned” by any one department, but rather it is managed by the LCSR itself. Any student from any department within the university can work toward the minor.

    A 4-year program of study should include coursework from the major technical sub areas needed for Robotics that are listed above.

    Courses marked below with an asterisk should almost always be included. F/S indicate which courses have historically been offered in fall/spring. Not every course is offered every year.

    Computer Science:

       (F,S) 601.464 Artificial Intelligence
       (F,S) 601.463 Algorithms for Sensor-Based Robotics*
       (F) 601.461 Computer Vision
       (F) 601.455 Computer Integrated Surgery I*
       (S) 601.456 Computer Integrated Surgery II
       (F,S) 601.475 Machine Learning

    Mechanical Engineering:

       (F) 530.420 Robot Sensors and Actuators
       (S) 530.421 Mechatronics
       (F) 530.646 Robot Devices, Kinematics, Dynamics, and Control
       (F) 530.682 Haptic Applications

    Electrical and Computer Engineering:

       (S) 520.353 Control Systems

    Distributions: Students should include coverage of these subjects in their science and math distributional courses:

       - Physics I & II with lab
       - Linear Algebra
       - Probability & Statistics
Back to top