The Software Systems Track


Blue CS@CU logo for MS students

Software Systems Track

The Software Systems track is for students who want to pursue knowledge of software development and software systems methodologies and technologies. Software plays a key role in practical, real-world computing systems and applications. This track enables students to understand and master classic and current software systems and provides the fundamentals for later self-study as well as the construction of future software systems.


SUMMARY OF REQUIREMENTS

  • Complete a total of 30 points (Courses must be at the 4000 level or above)
  • Maintain at least a 2.7 overall GPA. (No more than 1 D is permitted).
  • Complete the Columbia Engineering Professional Development & Leadership (PDL) requirement
  • Satisfy breadth requirements
  • Take at least 6 points of technical courses at the 6000 level
  • At most, up to 3 points of your degree can be Non-CS/Non-track If they are deemed relevant to your track and sufficiently technical in nature. Please submit the course syllabus to your CS Faculty Advisor for review, and then forward the approval confirmation email to ms-advising@cs.columbia.edu

1. Breadth Courses

Visit the breadth requirement page for more information. There are four breadth courses, two of which can be covered by the track requirements, plus one course chosen from Theory and the other from AI and Apps.

2. Required Track Courses

Students are required to complete the following three courses: COMS W4115, COMS W4118, and either COMS W4152 or COMS W4156. Students who have taken equivalent courses in the past and received grades of at least a B may apply for waivers and take other CS courses instead.

Course ID

Title

COMS W4115  Programming Languages and Translators
COMS W4118  Operating Systems I
COMS W4152* OR COMS W4156*  Engineering Software as a Service OR Advanced Software Engineering

*W4156 offered only in the fall.  W4152 not offered in 2024-2025.

Check the registrar’s website for definitive information as to which courses are offered in a given semester.

3. Elective Track Courses Part I

Students are required to complete at least two 4000-level courses (6 credits) selected from the following list of track courses. Note: some of the 4000-level electives are offered every semester, and some are offered only one semester per year, while others are not offered regularly. If you have questions about courses or your course plan, reach out to your CS track advisor.

Course ID

Title

COMS W4111  Introduction to Databases
COMS W4112  Database System Implementation
COMS W4113  Fundamentals of Large-Scale Distributed Systems
COMS W4117  Compilers and Interpreters
CSEE W4119  Computer Networks
COMS W4130  Principles and Practice of Parallel Programming
COMS W4153  Cloud Computing (Fall 2024 and beyond)
COMS W4170  User Interface Design
COMS W4181  Computer Security I
COMS W4444  Programming and Problem Solving
CSEE W4840  Embedded Systems
COMS W4995*  Topics in Computer Science (Visit the topics courses page to see which COMS 4995 courses apply to this track.)

**Topics in Computer Science (4995) sections must be approved as qualifying “Software Systems” track courses by your Software Systems Track Advisor. Typically this would mean topics offered by a software systems faculty member or by an affiliated adjunct.

COMS W4187 Security Architecture and Engineering is no longer offered; students who took 4187 when it was offered in the past may include it as a 4000-level track course. It has been replaced in the track by COMS W4181 Computer Security I. Students who completed COMS W4186 Malware Analysis and Reverse Engineering prior to Fall 2020 may include it as a 4000-level track course. It has been replaced in the track by CSEE W4840 Embedded Systems.

Check the registrar’s website for definitive information as to which courses are offered in a given semester.

4. Elective Track Courses Part II

Students are required to complete at least two 6000-level courses (6 credits) selected from the following pre-approved list. Note: some of the 6000-level electives are offered only one semester per year, while others are not offered regularly. If you have questions about courses or your course plan, reach out to your CS track advisor.

Course ID

Title

COMS E6111  Advanced Database Systems
COMS E6113  Topics in Database Systems
COMS E6114  Advanced Distributed Systems
COMS E6117  Topics in Programming Languages and Translators
COMS E6118  Operating Systems II
COMS E6121  Reliable Software
COMS E6156  Topics in Software Engineering
COMS E6156  Cloud Computing (Prior to Fall 2024)
COMS E6178  Human-Computer Interaction
COMS E6184  Anonymity & Privacy
COMS E6424  Hardware Security
CSEE E6863  Formal Verification of Hardware and Software Systems
EECS E6897  Distributed Storage Systems Big Data
COMS E6901**  Projects in Computer Science (Advisor approval required)
COMS E6998**  Topics in Computer Science (Visit the topics courses page to see which COMS 6998 courses apply to this track.)

**Projects in Computer Science (6901) and Topics in Computer Science (6998) courses must be approved as qualifying “Software Systems” electives by your Software Systems Track Advisor. Typically this would mean topics/projects offered by a software systems faculty member or by an affiliated adjunct. COMS E6900 Tutorial in Computer Science (with an appropriate faculty member) can be substituted for E6901 with the advisor’s approval.

Check the registrar’s website for definitive information as to which courses are offered in a given semester.

5. General Electives

Students must complete the remaining credits with General Elective Courses at the 4000 level or above. Three credits must be from a graduate CS course and can be chosen from either the Track Electives listed above or from the CS department at the 4000 level or higher. Students may also request to use at most 3 points of Non-CS/Non-Track coursework if approved by the process listed below.

  • At most, up to 3 points of your degree can be Non-CS/Non-track If they are deemed relevant to your track and sufficiently technical in nature. Please submit the course syllabus to your CS Faculty Advisor for review, and then forward the approval confirmation email to ms-advising@cs.columbia.edu
  • ** Known non-technical CS courses **

COMS W4995 The Business of Software Delivery
CSOR E4995 Financial Software Systems
COMS 4995 or 6998 Int Agile Project Management
COMS 4995 or 6998 Intro to DevOps

**Due to a significant overlap in course material, MS students not in the Machine Learning track can only take one of the following courses – COMS 4771, COMS 4721, ELEN 4903, IEOR 4525, STAT 4240, STAT 4400/4241/5241 – as part of their degree requirements.


TRACK PLANNING

Please visit the Directory of Classes to get the updated course listings. Please also note that not all courses are offered every semester or even every year. A few courses are offered only once every two or three years or even less frequently.

Please note that some Data Science Institute courses, such as COMS/CSEE W4121 (Computer Systems for Data Science), do not count towards the CS MS degree. If you have any questions, please contact your advisor or CS Advising.


Updated: 09/04/2024