Spring 2017, CSCI 3104
Algorithms are the heart of computer science, and their essential nature is to automate some aspect of the collecting, organizing and processing of information. Today, information of all kinds is increasingly available in enormous quantities. However, our ability to make sense of all this information, to manage, organize and search it, and to use it for practical purposes, e.g., self-driving cars, adaptive computation, search algorithms for the Internet or for social networks, artificial intelligence, and many scientific applications, relies on the design of efficient algorithms, that is, algorithms that are fast, use little memory and provide guarantees on their performance.
This undergraduate-level course will cover topics related to algorithm design and analysis. Topics will include asymptotic analysis, time and space constraints, dynamic programming, divide and conquer, greedy algorithms, graph algorithms, computability, and a selection of advanced topics. The focus throughout will be on algorithmic thinking, performance guarantees and boundary cases, efficient solutions to practical problems and understanding how to analyze algorithms. Advanced topics will cover a selection of modern algorithms, many of which come from real-world applications.
Fall 2017, CSCI 5352: Network Analysis and Modeling (graduate)
Fall 2016, CSCI 5352: Network Analysis and Modeling
Spring 2016, CSCI 4830: History and Future of Computing
Spring 2015, CSCI 4830: History and Future of Computing
Spring 2014, CSCI 3104: Algorithms (undergraduate)
Fall 2013, CSCI 5352: Network Analysis and Modeling
Spring 2013, CSCI 5454: Design and Analysis of Algorithms
Spring 2012, CSCI 5454: Design and Analysis of Algorithms
Fall 2011, CSCI 7000: Inference, Models and Simulation for Complex Systems
Spring 2011, CSCI 5454: Design and Analysis of Algorithms
Fall 2010, CSCI 7000: Inference, Models and Simulation for Complex Systems