The objective of this course is to cover the fundamentals of neural networks as well as some advanced topics such as recurrent neural networks, long short term memory cells and restrcited boltzmann machines. The course also requires students to implement programming assignments related to these topics.