This is an advanced course in design and analysis of algorithms covering topics typically not covered in undergraduate algorithms. In this course the students will learn how to: (i) Design and implement “new” algorithms in the real world. (ii) Map problems to algorithmic problems. (iii) Read and understand algorithms published in journals. (iv) Develop writing skills to present their own algorithms (v) Collaborate and work together with other people to design new algorithms.