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


Announcements

9/19/2020 As of 9/19, access to the course material is given to the registered students only. Future announcements will be made via the courseworks announcement system.
9/17/2020 There will be an office hour session from 2:00pm to 3:00pm on 09/18/2020 for all students.
9/16/2020 There will be an office hour session from 2:30pm to 4:00pm on 09/17/2020 for all students (join through zoom class sessions).
Students whose quota increase requests are rejected by google are adviced to attend.
9/16/2020 This course has A-F grading option only. It does not have P/F, R, or formal or informal audit options. Students who have not made progress working on the Assignment 0 by 9/17 are advised to drop the class before 9/18. Google cloud coupons will be distributed to registered students around 9/20.
9/14/2020 First recitation recording has been uploaded at courseworks --> video library
Topics: Assignment 0, tools, python, numPy.
9/12/2020 The first recitation will be on Monday 9/14/2020 2:30pm - 3:40pm. Zoom has been scheduled in the Courseworks. Topics: Assignment 0, tools, python, numPy. Jupyter Notebooks for the zoom have been uploaded into the google drive folder with recitations. To prepare for the recitation, download and run Assignment 0 in the Google Colab, try the Google Cloud, and download the recitation notebooks. The recitations will be interactive, try to be ready to run jupyter notebooks.
9/9/2020 Zoom lecture can be joined from the courseworks site: choose Zoom Class Sessions, make sure that you are logged into zoom with a correct email address. During the course shopping period, all Columbia University students have access to the courseworks for this course. Slides for the first class are available through the link under the lectures tab. First assignment is available under the assignment tab.
8/17/2020 To register into the course: (i) students need to get onto the Columbia SSOL waitlist, and (ii) populate this form (using CU UNI email credentials). Those students who satisfy the requirements will be moved from the waitlist into the registered list by early September.
8/17/2020 Additional course information such as typical syllabus can be found here.

Zoran Kostic, PhD

Professor of Professional Practice, Electrical Engineering Dept., Columbia University.
zk2172@columbia.edu, instructor webpage.
Office Hours: time TBD, location TBD; For email communication use subject "E4040 deep learning from student".

Course Assistants

Common email: e4040TAs@columbia.edu.

Office Hours (location and time TBD):
Zihao Xiong: TBD
Vedant Dave: TBD
Jeswanth Yadagani: TBD
Hongzhe Ye: TBD


Course Description

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.

Students will contribute to the course by:

Prerequisites and Expectations: The course usually has 4 assignments (homeworks). All assignments are graded. The initial homework/assignment, which should be done before the add/drop deadline, will help you ascertain the programming know-how needed to work on the following homeworks. If you have difficulties with the initial assignment, please carefully evaluate whether you will have enough time to brush up your programming knowledge or acquire the needed skills in "real-time" as the course progresses. The course requires rigorous theoretical background in probability and statistics, linear algebra and calculus - the course itself will contain material on mathematical/theoretical concepts. A formal machine learning (ML) course is a must-take course for complementing this deep-learning course, but is not a prerequisite - if you have no prior ML knowledge, you will need to take a ML course in parallel and/or learn some of the concepts on your own during this course. The exam will test your knowledge of deep learning concepts, tools and theory, as well as your knowledge across the prerequisite subjects. You are strongly advised to drop the class if you cannot complete initial assignment, or if you judge that the expectations for your thoeretical mastery of linear algebra, probability and statistics and calculus may be overly demanding. You should make that decision before the add/drop deadline (mid Sept. for fall semester).

2020 Registration

To register into the course: (i) students need to get onto the Columbia SSOL waitlist, and (ii) populate this form (using CU UNI email credentials). Those students who satisfy the requirements will be moved from the waitlist into the registered list by early September.

2020 Fall course syllabus, lectures, assignments


(Tentative) Grading policy

2020 Fall grading policy: Homeworks/assignments (40%), (one) Exam(25%), Project (35%), quizzes and activity may be used in 2020 (TBD).

Late homeworks (assignments): A student is entitled to 4 late days without penalty. For all homeworks together, a student can divide those four days in any fashion needed. Examples: (i) Homework 3 is late 4 days, in which case no other homework can be late for any amount of time; (ii) Homework 1 is late 1 day, homework 2 is late 2 days, in which case the student still has one more late-day for future assignments. The unit of delay can not be divided into less than a full day (like hours). Requests for additional extensions will not be granted: if the budget of 4 days is blown, the student will be given 0 credit for homework(s) for which their submission is late.


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), in Google Colab and on their own (local) computers, as appropriate. 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. The course relies on Conda and PIP for tool versioning.


Local Environment Setup → link

Students have an option to use their personal/local computers to run python code, jupyter notebooks, TensorFlow framework and deep learning models. This is possible both with computers which have graphics processing units (GPUs) and with computers which do not have GPUs. The execution will be faster on computers with GPUs. The begining assignments in this course are runnable on single processor (non-GPU) computers. Later assignments and projects will require that students run them on machines with GPUs; in this case the assignments can be run on personal computers or on the Google Cloud GPU machines (preferred). We will provide coupons for Google cloud (GCP) access. Clicking on this section leads to instructions on how to install tools on personal computers. The instructors will have limited time for debugging of local computer tool installations - the supported/preferred computing platform is the Google Cloud Platform (GCP).

Python Tutorial → link

This section is linked to the official Python tutorial. There are many other excellent resources that can be used as well. The course uses python 3.7 and Anaconda 3 for programming assignments. In the shared Google cloud image, the instructors installed the Python 3.7 version. 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.

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.

TensorFlow Tutorial → link

TensorFlow is an open-source deep learning framework developed by Google. It is the framework of choice for this course. Note that the 2020 version of this course uses version 2.2.0 of TensorFlow, although the most recent TensorFlow homepage may refer to a more recent version. For 2020 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.

FAQ → link

Solutions to some common problems


ECBM E4040 Neural Networks and Deep Learning, 2020.

Columbia University