Computer Science

Computer science is the study of models of computation, their physical realizations, and the application of these models to an incredibly diverse and continually evolving set of applications.

The information below describes the academic requirements for degree-seeking undergraduate students entering JHU in Fall 2024. Requirements for students enrolling at JHU for Fall 2025 will be available in late April 2025.

Overview

​​Students who major in computer science have a wide range of directions in which to apply their degree. Whether your dream job is to develop the latest applications for Google, Meta, or Microsoft, apply machine learning techniques to improve robots for medical applications, build a universal language translator, or run your own start-up (to name a few), a computer science degree at JHU can get you started.

Programs

Majors

We offer both a Bachelor of Science (BS) degree and a Bachelor of Arts (BA) degree. This gives computer science students the options of pursing a strongly technical program (BS) or crafting a more traditional liberal arts program (BA). Both degrees start with a balanced foundation in computer science, so that majors don’t have to decide whether to pursue a BS or a BA until mid-way through their undergraduate studies.

Besides taking core foundational courses, CS majors have great flexibility in choosing their upper-level CS, and other distributional courses. In addition to core courses in software engineering, algorithms, and networks, students may choose from courses in artificial intelligence, sensor-based robotics, programming languages, cryptography and security, computer integrated surgery, natural language processing, machine learning, computational genomics, computer graphics and more. A key feature of our major is the tremendous amount of teamwork and collaboration that takes place in the upper-level courses. Many of them provide students with opportunities to develop significant term projects in small groups, sometimes with an external client, and other times of the students’ own design.

Minor

Students who minor in computer science have a wide range of directions in which to apply their CS studies. The program requirements include three required foundational courses, as well as an elective and three upper-level courses in computer science, providing broad flexibility to students who pursue it.

​​Students interested in trying out computer science should start by earning a C+ or better grade in a Gateway Computing course in Java or Python (EN.500.112/EN.500.113), which is the first required course for the minor program. Students may then explore declaring a minor.

Research

Faculty in computer science pursue research in many different areas and welcome undergraduate participation in their labs. As students progress through the program, many discover a special interest and want to concentrate their studies in that area. To facilitate this, we have developed several focus areas within the major. Those based on faculty research areas include natural language processing, information security, robotics, data-intensive computing, computing fundamentals, systems and networking, and computational biology. Regardless of whether you pursue a particular focus or not, our bachelor programs provide excellent preparation for research within the department, summer internships, and post-graduation industry employment or graduate work. Students interested in pursuing research in CS should also consult the CS undergraduate research opportunities page for more information, including fellowship information.

After Graduation

​​In addition to the research driven focus areas above, students may pursue a focus in software engineering or business computing/entrepreneurship. These areas correspond to popular career directions for our majors. Many students pursue internship opportunities in the summer to prepare for software engineering careers. Some of the most popular companies include Google, Amazon, Microsoft, Meta, Bloomberg, and our own industrial brand, the Applied Physics Lab. About 25% go to mid-size technology companies or start-up ventures upon graduation. CS majors are also recruited by regional consulting companies such as Deloitte and Accenture, as well as government entities.

​About 30% of our students also pursue graduate studies, in particular the combined bachelor’s/master’s program which provides the opportunity to begin a master’s program while still completing the undergraduate degree. Because it is not necessary for both the bachelor’s and master’s degrees to be in the same field, some students use the combined program as an opportunity to combine their bachelor in CS with a specialized master’s program in information security, robotics, data science, engineering management, or a more traditional graduate field such as applied math or computer engineering. Other students go directly into PhD programs.

Activities

​​Students majoring in computer science form a strong community and support system. This is facilitated through course team projects, as well as our own undergraduate computer labs. Students have 24/7 access to these labs, as well as to our computer servers either directly on the lab machines or remotely from their own laptops. The collaboration lab in particular provides a common gathering place to work on projects, get advice and homework help, and generally socialize with others in the department.

The department is also home to a number of student groups: ACM, ACM-W, HopHacks, UPE, HopAI, JHUXplore, and the Software Engineering Club. ACM is our chapter of the Association for Computing Machinery. ACM-W is the affiliated Women in CS (WiCS) group which meets informally every week for “coding circles,” as well as sponsoring a mentorship program and other events throughout the year. HopHacks is the student organizing team for our 36-hour hackathon held on campus every year. UPE stands for Upsilon Pi Epsilon which is the computer science honor society. HopAI is an interdisciplinary student group that organizes events related to artificial intelligence. JHUXplore provides opportunities to learn and develop user experience skills while the Software Engineering Club provides experience building all types of apps. You can find more information about these groups on the Department of Computer Science website.

Getting Started

​​The first two years of study focus on core courses within the major: programming in Java, C, and C++, data structures and algorithms, computer system fundamentals, and math foundations for computer science. These core courses give students a strong understanding of how computers work and how we can use them to manipulate data. To complement these required courses, students take distributional courses in math, science, and the liberal arts, and may also start exploring the field of CS through courses such as databases, user interfaces and mobile applications, web programming, parallel programming, or software engineering.