Do any of the following might apply to you?
- You'd like to switch into the computer science program, either
for the B.S. program or the B.A. program (there's a
difference - see Section 3 below).
- You want to keep your major but want to explore whether
it's possible to get a dual-major or second-major in computer
science.
- You may be interested in a computer science minor,
and want to learn what it involves, and whether you should do one.
- You see more computing in your future,
but don't have the time for it now.
- You've heard about the math requirements in computer
science, and are wondering if there's an alternative.
You might have other questions such as: Is the rest of CS harder than
1012? What can you do with a CS minor?
We'll address these cases and questions below
but let's start with understanding this business of math in CS.
2 Why does CS have math in it? And how much?
The first few courses in computer science are:
- CS-1111: Introduction to Software Development.
This is the introductory programming course for majors in the
Java programming language. The good news is, you are primed
for success in this course because you already know key
concepts such as loops, conditionals and functions.
- CS-1112: Algorithms and Data Structures.
Remember lists, arrays, sets, and dictionaries?
This course dives deep into these structures and also
spends time on algorithmic ideas.
Important: you need to have completed Math-1220 or Math-1231
to take this course. And a minimum grade of C in CS-1111.
-
Note: Math-1220 or Math-1231 are different versions of Calculus.
- CS-1311: Discrete Structures. This is the
second math course, and the first "math in CS" course.
Here's what you should know about CS-1311: even if math did not
work out for you in high-school, CS-1311 might be fine if
you really work at it. CS-1311 does not require any of the
traditional pre-calc math (trigonometry etc) as background,
but you do need to be comfortable with symbols and algebra.
Important: you need to have completed Math-1220 or Math-1231
to take this course.
- CS-2113: Software Engineering. This is the
third in the programming sequence where you'll learn to
write more sophisticated code to build real applications.
Important: This has a prerequisite of CS-1112 (with
a minimum grade of C), and
you need to have completed Math-1231 or the combination of 1220 and 1221
to take this course.
So, now let's answer a few questions about math:
- What kinds of math, and how much?.
- The minor requires two math courses:
- Calculus, which can be taken as a single intensive course
(Math-1231) or as two courses (Math 1220 and 1221).
- Discrete-structures (CS-1311), which is
a more CS-related math course offered by the CS department
itself.
- In addition to Calculus and Discrete structures,
the B.A in CS major requires a statistics elective
(which you are likely to take in almost any major)
and a Linear Algebra course.
- In addition to Calculus and Discrete structures,
the B.S in CS major has four additional math
courses: Discrete Structures II, Foundations of Computing,
Statistics, and Linear Algebra.
- Note about Statistics: the BS program has a specific list
of Statistics courses that are allowed, which does NOT include
the oft-taken 1051 or 1053. (The BA does allow 1051/3).
- Why is there math in CS? Programming doesn't appear to
need math.
- While it's true that you don't need any math to program websites
or write code for mobile apps, computer science is a lot more
than just programming. For instance, artificial intelligence
is an area of computer science that seeks to build programs
that rival (in fact, exceed) humans in intelligence. There's a fair
amount of math behind this type of computing. Other areas that
overlap with math include: cryptography, data science, robotics,
graphics.
- A lot of computer science becomes interesting if you are
willing to take on a reasonable amount of math.
- Theoretical computer science, which is quite mathematical,
asks fundamental questions about the theory behind computing.
For example, if you've wondered why the Python compiler can't
tell whether your program will run correctly, it's because
we can (mathematically) prove that no such compiler can be created.
- Are there options if I'm not interested in doing the math?.
Yes. See the "Post-graduation online programs" section below.
3 The two Bachelor's programs in computer science (BA and BS)
- The BA in CS:
- This program is designed to allow students to easily dual
major or to take two minors.
- What this means: Suppose you want to combine
a major in Political Science with a major in Computer Science.
Then, the BA-Computer-Science might be the best option for you.
- Alternatively, you can do the BA-Computer-Science and
take two minors. For example, a minor in Political Science
and a minor in History.
- The overall CS and math requirements are fewer than those
required for the BS in CS.
- If you choose the BA program, you will need to decide
whether the non-CS part is another major, or two majors.
In other words, you cannot do the BA-CS without either taking
two minors or taking another major.
- The curriculum is listed here
- The BS in CS:
- This is the gold-standard rigorous computer science program,
covering all of undergraduate CS, and with many electives as options.
- The BS in CS is an engineering-accredited program that meets
the stringent criteria of programs accredited by the Accreditation
Board of Engineering & Technology, the national accrediting
agency for engineering programs.
- The curriculum is listed here
- NOTE about the BS: If you are transferring late into the BS,
you'll need to keep in mind that there are quite a few requirements
and so, you should check that they are do-able in your time-frame.
If either of the above (BS or BA) is your next step:
- To transfer into SEAS as a CS major,
you'll need to follow the
internal transfer
steps. Be aware that there are specific deadlines for this and
that there are specific admission requirements to be able to transfer into SEAS.
- To take CS as a second major:
4 Doing a minor in computer science
The CS minor consists of six courses:
- CS-1111: Intro to Software Development
- CS-1112: Algorithms & Data Structures
- CS-1112 has CS-1111 as a prerequisite. Also, because CS-1112 requires Math-1220 or Math-1231, you will
also need to take one of Math-1220 or Math-1231.
- CS-1311: Discrete Structures
- CS-2113: Software Engineering
- CS-2113 has CS-1112 as a prerequisite. Also, because CS-2113 requires Math-1221 or Math-1231, you will also need one of these.
- CS Elective 1
- CS Elective 2
All CS Electives for the minor must come from pre-approved list:
see this page for more information about the CS minor
To apply you need:
- To submit the application no later than the
start of the 5th semester of study at GW.
- A grade of B- or higher in MATH 1231 or the combination
of MATH-1220/1221, or AP Credit for MATH 1231.
- A grade of B or higher in CSCI 1111 or CSCI 1011 or CSCI 1121
- A minimum overall GPA of 3.0 at time of application
Minor applications are accepted on a rolling basis with a processing
time of up to 2 weeks. Please include a copy of your unofficial
transcript, your school's minor declaration form, the
SEAS CS minor declaration form
and send to seasadvising@gwu.edu.
Additional information:
See this flyer
5 Important things to know for either the minor or second major
- CS-1012 does NOT count towards the minor.
- You should plan on taking CS-1111 in the Spring
because the Fall offering of CS-1111 is restricted to SEAS majors.
- Along with CS-1111 in the Spring, you ought to take either
MATH-1231 or Math-1220 in the Spring.
If you happened to take CS-1111 in the Fall, you
could opt for MATH-1220 in the same Fall (and take MATH-1221 in the Spring).
- If you take CS-1111 in the Spring, you should take CS-1112
in the Fall.
- Pass/No-Pass grades are NOT allowed for either the minor
or major
with the condition that the student must pass a placement exam to proceed to the next course in the sequence.
- Because applying for the minor has a stringent GPA requirement,
you might be better off transferring into SEAS.
- Interested students must apply no later than the start of their 5th semester of study at GW, or completion of 60th credit, whichever comes later.
If you have more questions, you can
sign up for an appointment with Dawn Ginnetti
6 Post-graduation online programs
The Department of Computer Science offers two programs for students
who cannot fit additional computer science while doing their
Bachelor's:
Both are designed to be open to anyone, especially for those with no
background at all in computing, and both are free of math requirements.
They are online and can be taken at a gradual pace while working.
7 FAQ
First, some advice about the timing in taking courses towards
the minor/major:
- Take 1111 in Spring along with Calculus (1231).
- First sign up for a minor/major in CS and then
take 1112 either in summer or the following Fall.
Important: you'll need to have completed minor/major sign up
before getting into CS-1112.
- Take 1311 in the Fall (along with 1112).
- Take 2113 in either Spring or Fall.
- Electives can be taken anytime after taking 2113.
- NOTE: 1111, 1112 and 2113 are all offered fully online
in the summer
The above offerings have plenty of extra seats for non-SEAS students.
Now for questions asked by students.
Questions about the minor or dual/second major:
- Is it common or smart to combine a CS minor with a business-related
major?
Both common and smart. First, a strong computing background helps
you in Business disciplines such as data analytics and finance.
Second, you could be working on the business end of tech projects
as a product manager (common in the DC area).
- What is the difference between a BA and BS in CS? What does the
internal transfer process look like when trying to major in CS but not
being a SEAS student?
See the section above on the two programs, which also describes
the transfer process.
Questions about procedures/timing/forms:
- What is the latest time to sign up for CS minor? Can I declare a minor after my sophomore year? Later?
Keep in mind that the minor has a four-course chain. To take one of the
electives, you need CS-2113, which requires CS-1112, which in turn
requires CS-1111. So, we don't allow signing up for
after after the sophomore year.
- Besides sending unofficial transcript and minor declaration forms, is
there any other procedure necessary to declare a minor in CS?
That's all you need.
- how should I chose my spring courses to prepare me for second majoring
in CS?
See advice at the start of this section.
- Would sending out the application form for the second CS major be done
after receiving the CSCI 1111 grade or the semester during which it is
taken?
After receiving the grade.
Questions about workload, math, tight schedules:
-
Are there any courses that I can take extra to my packed course
schedule? winter short courses or summer short courses for example?
Yes, 1111, 1112, and 2113 are all offered fully online in the
summer but you can only take one of them at a time (in the summer)
because each course extends through the entire summer.
- Does this class prepare you to take CS classes with those who are in
SEAS?
For programming, certainly. In fact you'll be slightly
overprepared for CS-1111. The language is different (that's in Java)
but the concepts are similar.
- Would the additional workload be way too much for a potential
neuroscience major who is following a pre med path?
It would depend on careful scheduling. If you're doing Calculus
and CS courses and chemistry at the same time,
then yes, that's quite a stiff workload. But if you're done with
Chem and Physics early, you can take CS later.
- If I do not have a strong background in math, will I struggle in
future CS courses?
Maybe. There is math and some students do struggle with it, but
most students do get through. We are in the process of designing a
no-math option - stay tuned.
- What courses would you recommend for someone who is currently
struggling with the workload of Introduction to Python?
That depends on the goal. If you want to learn programming, you
have to put the time into it. And it's perfectly fine to take your
time learning. A summer course might be an option where you can devote
the time.
- What are some of the main CS courses that can/should be taken as a
follow up to this class, particularly for students who are beyond the
deadline for declaring a minor in CS or have limited time in their
course schedule?
You can take CS-1111. However, if you want to go further,
you need to sign up for a minor (at least).
- Is there any way to sign up for courses that are restricted to
cs majors or minors? What CS courses are available to non-SEAS majors?
We are recommending the schedule at the beginning of this section.
Questions about languages::
- Does the CS minor offer a good foundation to learn newer languages,
such as React Native? Do you recommend continuing with specifically
python or diversifying into other computer programming languages such as Java?
All you need to do is learn one language well, which generally
takes three courses in that language, not that different from learning a
foreign language. Doing that positions you to learn any new
language on your own. The CS department's 1111-1112-2113 sequence is
all in Java (but you do learn a bit of the C language in 2113).