Neural Networks and Deep Learning
Columbia University Course
ECBM E4040 - Fall 2025


Zoran Kostic, PhD (zk2172@columbia.edu)

Professor of Professional Practice, Electrical Engineering Dept., Columbia University. instructor webpage.

Teaching/Course Assistants

Common email: e4040TAs@columbia.edu NOTE: Office hours (location and time) will be announced on Courseworks.


Course Description

2025 Fall: The updated description will be shared on Courseworks.

The course covers theoretical underpinnings, architecture and performance, datasets, and applications of neural networks and deep learning (DL). The course uses Python coding language, TensorFlow deep learning framework, and Google Cloud computational platform with graphics processing units (GPUs). The main resource for the course is the book entitled "Deep Learning" by Ian Goodfellow, Yoshua Bengio, and Aaron Courville, MIT Press, http://www.deeplearningbook.org, 2016.


Registration

To register into the course all students first need to get onto the Columbia SSOL waitlist. The students will be moved from the waitlist into the registered list by mid September, in priority chosen by the instructor. Students with *cumc* account will need to send an email to e4040TAs@columbia.edu with subject "E4040 student - cumc account", informing us of the fact that you are a "cumc" student. This will require special accommodation.

2025 Fall course syllabus, lectures, assignments


Computational Environment(s) and Prerequisites

Introduction

Computational tools are essential for learning about, designing, and experimenting with deep learning models. At the top level, deep learning developers use one of the deep learning frameworks to build and run models, which rely on a myriad of either generic or custom software libraries. This course will use a particular version of the TensorFlow framework. The underlying computing language is Python, and the course will rely on Python code/libraries and Jupyter Notebooks for developing and experimenting with code. The students will be asked to run the tools and deep learning models in the Google Cloud Platform (GCP), and in some cases in Google COLAB. For their personal use, the students can use their own (local/personal) computers. Versioning of the tools is complex: (i) instructors will provide a GCP image with preinstalled tools and (ii) if using personal computers, students need to follow the precise tool version instructions in order to have functional computing environments. This course relies on Conda and PIP for tool versioning.


Google Compute Engine (GCE) Setup on the Google Cloud Platform (GCP) → link

For more complex assignments, students should run deep learning code on Google Compute Engine (GCE) virtual machine (VM) instances, with GPU resources. The instructors will provide coupons (codes) which will enable students to use Google cloud resources for free. This tutorial provides the instructions how to setup a GCE/GCP VM instance using the custom VM image created by the instructors.

Python Tutorial → link

This section is linked to the official Python tutorial. There are many other excellent resources that can be used as well. If you choose to use your personal computers, you should use exactly the same version of all tools as described in the section on GCE setup.

TensorFlow Tutorial → link

TensorFlow is an open-source deep learning framework developed by Google. It is the framework of choice for this course. For 2025 assignments, students have to use the course-prescribed versions of TensorFlow and Python. If students wish to experiment with other versions of tools, they are advised to create additional (conda) virtual environments to prevent conflicts with tool versions used for the assignments.

Linux Introduction → link

The GCP VM instances used in this course are Linux-based. This tutorial offers hands-on instructions for basic Linux commands.

Git Commands → link

Homework assignments will be using Github repositories and Github Classroom distribution of assignments. Students need to be comfortable with Github, as well as git commands or visual git clients such as GitKraken. For beginners, it is strongly recommended that you read the first 3 chapters of this website. Additional instructions for use of assignment-related github repositories will be provided during the course.

Google Colab → link

Colab provides a free cloud service based on Jupyter Notebooks. It supports free GPUs with popular deep learning libraries with an execution/data-storage time limit. It is a good platform for developing and testing the deep learning code, which avoids the issues of tool installation. However, because of time limitations, we do not recommend that you do the assignments on Colab - everything except Jupyter Notebooks would be automatically deleted every 12 hours. We will use Colab ocassionally for quick sharing of jupyter notebooks and running of simple models, but we request that students set up their google cloud resources (GCE) to use as the primary computing environment. Personal (local) computing environments can be used as well, with careful management of tool versions.


ECBM E4040 Neural Networks and Deep Learning

Columbia University