MPCS 55005 Advanced Algorithms (Spring 2023)

Section 1
Instructor(s) Brady, Geraldine (gb52)
Location Ryerson
Meeting Times Thursday 5:30pm - 8:30pm
Fulfills Core Theory Elective

Syllabus

Advanced Algorithms is a second course on the design and analysis of efficient algorithms. This course will present many interesting and relevant algorithms and give students the tools to recognize and rigorously solve algorithmic problems in the real world. 

Topics include:

  • Data structures: Bloom filters, red-black trees, B-trees, skip lists, and more 
  • NP-completeness
  • Methods of dealing with NP-completeness: approximation, randomization, branch and bound, local search
  • Linear programming
  • Computational geometry and advanced graph algorithms

with applications in computing, data science, and engineering.

Engaging weekly homework assignments will involve designing new algorithms in pseudocode and implementing selected algorithms in Python. Course goals are to prepare students with skills necessary to tackle algorithmic problems they are likely to encounter in software development. 

Course Prerequisites

B+ or better in MPCS 55001 Algorithms *or consent of instructor*

Other Prerequisites

This course requires competency in Unix, Linux, and GitHub. If you attended the MPCS Unix Bootcamp you covered the required material. If you did not, please review the UChicago CS Student Resource Guide here: https://uchicago-cs.github.io/student-resource-guide/.

Overlapping Classes

This class is scheduled at a time that conflicts with these other classes:

  • MPCS 53001-1 -- Databases
  • MPCS 52011-1 -- Introduction to Computer Systems
  • MPCS 51083-1 -- Cloud Computing
  • MPCS 51220-1 -- Applied Software Engineering
  • MPCS 51045-1 -- Advanced C++

Eligible Programs

Masters Program in Computer Science MS in Computational Analysis in Public Policy (Year 2) MS in Molecular Engineering MA in Computational Social Science (Year 2) Bx/MS in Computer Science (Option 1: Research-Oriented) Bx/MS in Computer Science (Option 2: Professionally-oriented - CS Majors) Bx/MS in Computer Science (Option 3: Profesionally-oriented - Non-CS Majors)