Advising

What Are Your Plans?

Think about your plans, even if they are vague at this time. Do any of the following apply to you?

  • You’d like to switch into the computer science program, either for a B.S. program or a 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 double major in computer science.
  • You’re’ 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 CSCI 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.

Math in CS

The first few courses in computer science are:

CSCI 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.

CSCI 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 CSCI 1111. MATH 1220 or MATH 1231 are different versions of Calculus.

CSCI 1311: Discrete Structures. This is the second math course, and the first “math in CS” course. Here’s what you should know about CSCI 1311: even if math did not work out for you in high school, CSCI 1311 might be fine if you really work at it. CSCI 1311 does not require any of the traditional pre-calculus 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.

CSCI 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 CSCI 1112 (with a minimum grade of C), and you need to have completed MATH 1231 or the combination of MATH 1220 and MATH 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 MATH 1221).
      • Discrete-structures (CSCI 1311), which is a more CSCI related math course offered by the CS department itself.
    • The B.A in CS major requires, in addition to Calculus and Discrete structures, a statistics elective (which you are likely to take in almost any major) and a Linear Algebra course.
    • The B.S in CS major has four additional math courses in addition to Calculus and Discrete structures: Discrete Structures II, Foundations of Computing, Statistics, and Linear Algebra.
    • Note about Statistics: the B.S. program has a specific list of Statistics courses that are allowed, which does NOT include the oft-taken STAT 1051 or STAT 1053. (The B.A. does allow STAT 1051/3).
  • Why is there math in CS? Mathematics is the foundation of many of the applications of programming (and of the fundamentals of programming itself).

  • For instance, artificial intelligence is an area of computer science that seeks to build programs that rival humans in performance in certain areas. There’s a fair amount of math behind this type of computing.

  • Other areas that overlap with math include: cryptography, data science, robotics, and 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.

Bachelor’s Programs in Computer Science (B.A. and B.S.)

B.A. in Computer Science:

  • 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. The Computer Science B.A. might be the best option for you.
  • Alternatively, you can do the Computer Science B.A. and take two minors.
    • For example, a minor in Political Science and a minor in History.
  • The overall CS and math requirements for the B.A. are fewer than those required for the B.S. in CS.
  • If you choose the B.A. program, you will need to decide whether the non-CS part is another major, or two minors.
  • In other words, you cannot do the Computer Science B.A. without either taking two minors or taking another major.
  • The curriculum is listed here.

B.S. in Computer Science:

  • This is a rigorous computer science program, covering all of undergraduate CS, and with many electives as options.
  • It is a complete course of study, and it does not require you to take any other major or minor.
  • The curriculum is listed here
  • NOTE about the B.S.: If you are transferring late into the B.S., you’ll need to keep in mind that there are quite a few requirements and so, you should check that you can complete them in time to graduate, or plan to spend an extra semester or two to finish the degree.

If either of the above (B.S. or B.A.) 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: follow the guidance for admission to a computer science as a second major.
  • Fill out either the B.S. double-major application or the B.A. double-major application. Include your unofficial transcript, and home school’s double-major form, along with the above form, and email to seasadvising@gwu.edu.

Minor in Computer Science

The CS minor consists of six courses:

  • CSCI 1111: Intro to Software Development
  • CSCI 1112: Algorithms & Data Structures
    • CSCI 1112 has CSCI 1111 as a prerequisite, and either of MATH 1220 or MATH 1231.
  • CSCI 1311: Discrete Structures
  • CSCI 2113: Software Engineering
    • CSCI 2113 has CSCI 1112 as a prerequisite, and either of MATH 1221 or MATH 1231.
  • CS Elective 1
  • CS Elective 2
    • All CS Electives for the minor must come from a pre-approved list.

Detailed CS Minor Requirements

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.

Important things to know for either the minor or second major

  • CSCI 1012 does NOT count towards the minor.
  • Minors should plan on taking CSCI 1111 in the Spring, because the Fall offering of CSCI 1111 is restricted to SEAS majors.
  • Along with CSCI 1111 in the Spring, you ought to take either MATH 1231 or MATH 1220 in the Spring.
  • Majors who take CSCI 1111 in the Fall, you could opt for MATH 1220 in the same Fall (and take MATH 1221 in the Spring).
  • If you take CSCI 1111 in the Spring, you should take CSCI 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.

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.

Answers to F.A.Q.

  • First, some advice about the timing in taking courses towards the minor/major:
    • Take CSCI 1111 in Spring along with Calculus (1231).
    • First sign up for a minor/major in CS and then take CSCI 1112 either in summer or the following Fall.
    • Important: you’ll need to have completed minor/major sign up before getting into CSCI 1112.
    • Take CSCI 1311 in the Fall (along with CSCI 1112).
    • Take CSCI 2113 in either Spring or Fall.
    • Electives can be taken anytime after taking CSCI 2113. NOTE: CSCI 1111, CSCI 1112 and CSCI 2113 are all offered in the summer The above offerings have plenty of extra seats for non-SEAS 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 B.A. and B.S. 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 CSCI 2113, which requires CSCI 1112, which in turn requires CSCI 1111.
  • So, we don’t allow signing up for the minor after after your 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, CSCI 1111, CSCI 1112, and CSCI 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 somewhat overprepared for CSCI 1111. The programming language (Java) is different 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.

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.
  • 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 CSCI 1111.
  • 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 programming 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.
  • Doing this 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).