Course Info

https://xkcd.com/1831/
  • Class. Tu/Th 3:30 – 4:45 pm in East Duke 209
  • Instructor. Brandon Fain
  • Graduate Teaching Assistants. Adam Carriker and Zhaojie Chen
  • Reading. There are no required texts for this course. Supplemental references will be posted to the schedule page.
  • Box folder. You can find slides, homework, and project directions in the course box folder.
  • Discussion and Questions. We will use the Ed platform for discussion and questions. You can access it here or via the sidebar on Sakai.

Office Hours

Office hours will begin the week of Monday 8/30 and will conclude at the end of classes. Office hours will not be held during Fall Break or Thanksgiving Break.

Description

This is a course on the design and implementation of modern algorithms that deal with hard problems and big data. The course stresses application and project based development of algorithmic techniques. Emphasis is placed on algorithmic ideas that have had substantial impact in the real world, including approximation, randomization, hashing, streaming, spectral techniques, optimization, and search.

The course is project-driven: students will complete several homework assignments as well as a larger student-driven course project. There are no exams.

Course Objectives

Upon completion of this course, students will be able to 

  • Design and implement efficient algorithms for computationally difficult problems.
  • Analyze the performance of algorithms using mathematical arguments and empirical evaluation.  
  • Propose and execute a student-driven group algorithms project.
  • Communicate the results of a project in algorithm design via oral presentation to peers and a written research article.
  • Summarize the significance of algorithmic insights for real world projects in computer science.

Prior Background

Students should have programming, algorithms, and data structures experience at least at the level of CompSci 201, and have prior experience in proof-based discrete mathematics at the level of CompSci 230. Experience of algorithm design and analysis at the level of CompSci 330 will be helpful, but is not required, and there will be minimal overlap in content between this course and CompSci 330.