by your fabulous WiCS Event Coordinators

Likely if you are reading this, you are at least considering taking a Computer Science course. You might be on the fence about whether you really want to try something new, but that you’ve heard it is a good resume builder. You might be nervous because it something you’ve never tried before and you only know as much as The Social Network and The Matrix taught you. Perhaps you’ve tried Scratch or some other language in middle school and swore you would never try it again, but here you are. Maybe the only experience you have is using Excel to make a graph in your last lab. Fear not, all of these are ok, and hopefully, this will give you some information to tip the scales on your decision.

Reasons to Try Computer Science

There are so many diverse careers that use computer science.

  • Even if you don’t major in computer science, having a computer science class under your belt will help you in almost any field, whether you use it to make applications, analyze data, modify a website, or do art.
  • For those of you newbies who are scared you will be the only person who doesn’t get it, don’t worry; you will not be alone as most people in intro classes are also probably just as lost as you. It may feel a bit like stumbling around in a dark room for a while and being completely honest, some languages have a pretty steep learning curve, but this is completely natural.

Useful Resources

If just jumping into a college course is really too intimidating, there are so many free resources online that can help. You can use them as you take the classes or use them to preview the material.

  • MIT has this lecture series for an Intro to Computer Science in Python.
  • This is a Stanford Lecture Series based in Java. You will notice that it starts using a simplified programming language called Keral, but it dives into Java by Lesson 4. It’s also useful because it bookmarks the timestamps of each topic so the lecture series is easy to navigate.
  • This Youtuber provides instructional videos on many languages. He worked at Google and was a self-taught programmer himself and will share also share tips about the industry.
  • W3Schools is good especially if you are interested in front end coding. It has good interactive tutorials in HTML/CSS, and some less extensive, but still helpful tutorials in a number of other languages.
  • ADI’s own resources for starting out.
  • HackerRank is great for practice (and studying for interviews!)
  • And as always it’s helpful to read ahead in the textbooks!

For those of you who have had a computer science experience that actually turned you off from the idea, I would advise you to try it one more time before swearing off of computer science. If you started with HTML, for example, try a backend language like Java or Python because coding backend is a really different experience and much more logic based. The opposite could also be true. If you like to design and visual arts and you want a way to implement your designs digitally, but Java sucked, perhaps HTML/CSS is actually the place you want to start. If you are a Barnard student, the Athena Digital Design Agency offers free classes in HTML/CSS and JavaScript. Some people just had bad teachers in high school or covered it briefly in a science class, and that has tainted your feelings toward the topic. In any case, I would recommend trying computer science again as the professors of the introductory classes at Columbia are really amazing and it might completely change your experience.

The CS Core Curriculum

While the core curriculum requirement may differ slightly between SEAS, CC, GS and Barnard, each aims to construct a strong foundation of the studies ahead. Below is a quick preview of what the CS Core Curriculum looks like for a Computer Science student:

All students in SEAS, CC, GS and Barnard are required to take the following 6 classes as part of their CS core curriculum:

  • Intro to CS and Programming in Java (COMS W1004) or Honors Intro to CS (COMS W1007)
  • Data Structures in Java (COMS W3134) or Honors Data Structures and Algorithms (COMS W3137)
  • Advanced Programming (COMS W3157)
  • Discrete Mathematics (COMS W3203)
  • Computer Science Theory (COMS W3261)
  • Fundamentals of Computer Systems (CSEE W3827)

While students in SEAS are required to both “Linear Algebra” and “Probability and Statistics”, CC, GS and Barnard students have the option to take 1 course from the following two classes:

  • Linear Algebra (MATH 2010, APMA 3101, or APMA 2101)
  • Probability and Statistics (STAT 4001 or IEOR 4150)

CS Tracks

There are six tracks plus an advanced track in Columbia University’s Computer Science department.

Track 1: Foundations of CS Track: The foundations track is suitable for students who are interested in algorithms, computational complexity, and other areas of theoretical Computer Science.

REQUIRED: 6 points

  • CSOR W4231: Analysis of algorithms
  • COMS W4236: Introduction to computational complexity

Note: If you are considering going into the CS academia or you want to get a challenging job such as an algorithm researcher in industry, the foundation track will be a good fit for you. Courses in this track are strongly math based.

Track 2: Software Systems Track: The software systems track is for students interested in networks, programming languages, operating systems, software engineering, databases, security, and distributed systems.

REQUIRED: 9 points

  • COMS W4115: Programming languages and translators
  • COMS W4118: Operating systems
  • CSEE W4119: Networking

Note: This track prepares you very well for a potential career as a software engineer and helps enhance your coding skills.

Track 3: Intelligent Systems Track: The intelligent systems track is for students interested in machine learning, robots, and systems capable of exhibiting “human-like” intelligence. A total of seven required breadth and elective courses are to be chosen from the following schedule.

REQUIRED: 9 Points from:

  • COMS W4701: Artificial intelligence
  • COMS W4705: Natural language processing
  • COMS W4706: Spoken language processing
  • COMS W4731: Computer vision
  • COMS W4733: Computational aspects of robotics
  • COMS W4771: Machine learning

Note: The most popular track since intelligent systems are cutting-edge and the track is very well structured so you don’t have to worry too much about what classes to take.

Track 4: Applications Track: The applications track is for students interested in the implementation of interactive multimedia applications for the Internet and wireless networks.

REQUIRED: 6 points

  • COMS W4115: Programming languages and translators
  • COMS W4170: User interface design

Note: The most flexible track. You are left with a lot of space to choose other CS or non CS classes. This track is very popular among students who are combining CS with other fields of studies such as humanities or finance.

Track 5: Vision and Graphics Track: The vision and graphics track focuses on visual information with topics in vision, graphics, human-computer interaction, robotics, modeling, and learning. Students learn about fundamental ways in which visual information is captured, manipulated, and experienced.

REQUIRED: 6 points

  • COMS W4160: Computer graphics
  • COMS W4731: Computer vision
  • COMS W4167: Computer animation

Note: Best fit for students interested in computer games and computer vision.

Track 6: Digital Systems Track: The digital systems track is for students interested in working at the interface of hardware and software. Subjects include digital design, computer architecture (both sequential and parallel) and embedded systems.

REQUIRED: 3 points

  • CSEE W4824: Computer architecture

Note: Go for this track if you are interested in both EE and CS (Computer engineering).

Track 7: Advanced: The advanced track of the B.S. in Computer Science provides extra opportunity for advanced learning. It comprises accelerated versions of the other six tracks. Entry is only by collective faculty invitation, extended to students who have already completed the core courses and the required courses for one of those tracks. A student designates one of the six other track areas and completes the set of required track courses for that track, prior to entry into the Advanced Track. There are two or three courses, depending on the designated area. They must also take at least 6 points of 4000-level lecture courses from the menu for the designated track, plus 6 points of 6000-level courses in the designated track area. There is a required 6-point senior thesis.

Double Major/ Joint Programs

Soon, we’ll highlight student experiences, give sample schedules, insight into career paths, tips from upperclassmen, as well as a look into industry and research from interviews with professionals. Follow up on facebook to stay updated! And be sure to sign up!