Double Major and Major/Minor Information
This page is about double majoring or major/minoring in physics and another discipline. For more information about the requirements for completing the physics major and minor, see How to major/minor in physics.
Why double major?
Broadly speaking, since the physics major itself is already pretty heavy on classes (compared to most majors), choosing to double major will likely result in spending most of your time completing requirement classes for both majors and not much time for electives in each. However, one would certainly gain requisite knowledge in both fields for specialization later on, if one wishes to do so (perhaps in grad school). The choice is ultimately up to you, your interests and your post-grad plans.
In this page, we will explore some of the more common choices of double major with physics.
Having a background in CS can help with almost any physics research endeavor, and each year a few students double major in both Physics and CS.
These are challenging majors, especially since there are few overlapping lower-division courses.
Note that L&S has a GPA cap for the CS major: one needs at least a 3.30 GPA average in CS61A, CS61B, and CS70 to declare.
Lower Division Courses
The following lower-division courses must be taken to complete the CS Major:
- CS 61A: The Structure and Interpretation of Computer Programs
- CS 61B: Data Structures
- CS 61C: Machine Structures
- CS 70: Discrete Mathematics and Probability Theory
- EE16A: Designing Information Devices and Systems I
- EE16B: Designing Information Devices and Systems II
- Math 1A
- Math 1B
Math 1A/1B overlap with the physics major, and can be waived with high AP/IB test scores. The EEE16A and EE16B series covers the linear algebra, or the content of Math 54, for CS majors. Though Physics 89 is the physics linear algebra lower-division course, double majors will be expected to take both the EE16 series and Physics 89.
Upper Division Courses
There is a large number of choices of upper divs to take for the CS major, and no one class is required and the order in which you take the classes are flexible. View the EECS department website for exact details on the upper div requirement.
Below is the general breakdown of the CS Major upper-division course requirements:
- Upper Division CS/EECS courses (20 units total)
- 4 units of a Design Course
- 8 units upper-division CS courses
- 8 units upper division CS/EE/EECS courses
- Upper Division Technical Electives (7 units total)
- All physics technical upper div courses qualify to satisfy this requirement
List of popular upper division classes
Here is a non-comprehensive list of popular upper division classes, ordered by course number. The bolded ones tend to be the most popular:
- CS 161: Computer Security
- Introduction to computer security. Cryptography, including encryption, authentication, hash functions, cryptographic protocols, and applications. Operating system security, access control. Network security, firewalls, viruses, and worms. Software security, defensive programming, and language-based security. Case studies from real-world systems.
- CS 162: Operating Systems and System Programming
- Basic concepts of operating systems and system programming. Utility programs, subsystems, multiple-program systems. Processes, interprocess communication, and synchronization. Memory allocation, segmentation, paging. Loading and linking, libraries. Resource allocation, scheduling, performance evaluation. File systems, storage devices, I/O systems. Protection, security, and privacy.
- CS 170: Efficient Algorithms and Intractable Problems
- This class teaches the design and analysis of algorithms, NP-completeness, intractable problems, etc. A challenging but very rewarding class.
- CS 184: Foundations of Computer Graphics
- Techniques of modeling objects for the purpose of computer rendering: boundary representations, constructive solids geometry, hierarchical scene descriptions. Mathematical techniques for curve and surface representation. Basic elements of a computer graphics rendering pipeline; architecture of modern graphics display devices. Geometrical transformations such as rotation, scaling, translation, and their matrix representations. Homogeneous coordinates, projective and perspective transformations. Algorithms for clipping, hidden surface removal, rasterization, and anti-aliasing. Scan-line based and ray-based rendering algorithms. Lighting models for reflection, refraction, transparency.
- CS W186: Introduction to Database Systems
- Broad introduction to systems for storing, querying, updating and managing large databases. Computer science skills synthesizing viewpoints from low-level systems architecture to high-level modeling and declarative logic. System internals, including the complex details of query optimization and execution, concurrency control, indexing, and memory management. More abstract issues in query languages and data modeling – students are exposed to formal relational languages, SQL, full-text search, entity-relationship modeling, normalization, and physical database design. Recent technological trends in the field, including “Big Data” programming libraries like MapReduce, and distributed key-value stores with various consistency models.
- CS 188: Introduction to Artificial Intelligence
- Ideas and techniques underlying the design of intelligent computer systems. Topics include search, game playing, knowledge representation, inference, planning, reasoning under uncertainty, machine learning, robotics, perception, and language understanding.
- CS 189: Introduction to Machine Learning
- Theoretical foundations, algorithms, methodologies, and applications for machine learning. Topics may include supervised methods for regression and classication (linear models, trees, neural networks, ensemble methods, instance-based methods); generative and discriminative probabilistic models; Bayesian parametric learning; density estimation and clustering; Bayesian networks; time series models; dimensionality reduction; programming projects covering a variety of real-world applications.
Berkeley offers both the Applied Math and Pure Math majors. Within Applied Math, there is a great deal of flexibility in potential electives, in the form of 'clusters'. Pure Math is basically a cluster of applied math, i.e. a different set of potential electives. In fact, it is possible to take the exact same minimal amount of courses as both a Pure or Applied Math major. To be honest it is not clear why it is a separate major and not just a cluster within Applied Math. Therefore, perhaps it is best to just take what Math classes you find interesting and see what cluster/ major you end up becoming (along with some planning, of course).
Most of the overlap with physics comes from the lower division requirements. Both majors require Math 1A, Math 1B, and Math 53. A 5 on AP Calculus BC can wave Math 1A and Math 1B. Math majors who are planning to either major or minor in physics are allowed to replace Physics 89 with Math 54. However, Physics majors who are minoring in math may not. Math majors must also take Math 55.
If you are considering taking Math courses, it is perhaps best to time your semesters (if possible) to take certain courses before others. This is NOT AT ALL needed, but in an ideal world it may be preferable to take:
Math 110 before/with Physics 137A
Math 113: Abstract Algebra before/with Physics 137A/B
Math 104: Real Analysis
Math 185: Complex Analysis before/with Physics 110B
Pick 1 class from 2 of the following 3 categories:
Computing: Math 124 Programming for Mathematical Applications or Math 128A Numerical Analysis
Geometry: Math 130 Classical Geometries, Math 140 Metric Differential Geometry, Math 141 Elementary Differential Topology, Math 142 Elementary Algebraic Topology, or Math 143 Elementary Algebraic Geometry
Logic and Foundations: Math 125A Intro to Logic, Math 135 Intro to Theory of Sets, Math 136 Incompleteness and Undecidability