COMS3136 Essential Data Structures in C/C++

Fall 2025

Course Calendar

Course info

Essential Data Structures in C/C++ is an intermediate course covering the programming languages C and C++, and the concept of Data Structures including arrays, linked lists, trees, and graphs. It is a designed as a bridge class between an introductory programming class like ENGI1006 and advanced programming classes in the 4000s. After the two-course sequence of 1006 and 3136, students should feel comfortable with the programming requirements of any 4000 level class in the Computer Science department. As such, it is primarily intended for non computer science majors, though any student is welcome to attend.

In addition to C, C++, and Data Structures, this class will make heavy use of git and UNIX programming tools. Students will become comfortable working in a fully remote, public-cloud based linux machine with only a terminal and a text editor. These skills are often considered a diffentiator between a “programming student” and a “programmer”.

In terms of other courses, this class is a fusion of COMS3157 and COMS3134. It includes the C/C++ content from 3157, but without the systems programming, and it includes the essential data structures from 3134 without the more theoretical/esoteric data structures discussed therein.

No prior knowledge of C/C++ is required for this course.

Textbook

There is no required textbook for this course. However, here are some suggested reference materials:

Supplementary materials

Software

All coursework will be performed on cloc.cs.columbia.edu, on which all required software is preinstalled.

Attendance

You are expected to attend all lectures, either in-person or virtually. Any material covered in class or in a homework is fair game for exams. All courses will be available in real time on Zoom, and recorded for asynchronous viewing or review.

Academic Honesty

REQUIRED READING: ACADEMIC HONESTY POLICIES

School Policies

In addition to this policy, the CS department’s academic honesty policy applies to this course. Please revisit your school’s standards for academic integrity:

Schedule

Note that the following schedule is tentative. It will be updated as we go.

# Date Topic Note Deadline
1 T 9/2 Course overview 00 R 9/4 NOON: HW0 Part A due
2 R 9/4 Compiling & linking; Makefile 01 F 9/5: HW0 Part B due
3 T 9/9 Makefile; Binary number; Data types 02, HW1
4 R 9/11 Binary number; Data types; Expressions & statements
5 T 9/16 Automatic v. static variables; Process address space T 9/16: lab1 due
6 R 9/18 Arrays; Recursion; Intro to Big-O 03, HW2
7 T 9/23 More recursion; Selection Sort; More Big-O;
8 R 9/25 Merge Sort; Pointers & arrays 04, HW3