Overview
CS2315

Course Summary
Algorithms are fundamental to the computer science curriculum. It is essential for students to understand the design and analysis of algorithms to solve computational problems efficiently and elegantly. This course provides an in-depth study of various algorithms, focusing on their design, analysis, and implementation. Topics include but not limited to sorting and searching algorithms, graph algorithms, dynamic programming, greedy algorithms, and complexity analysis. Students will learn to evaluate algorithm efficiency and apply appropriate algorithms to solve computational problems. Algorithms may be implemented in a programming language of the student’s choice, including Python, C, or C++; however, C or C++ is strongly recommended for this course.
Prerequisites: See the course description on Gateway.
Course Objectives
After this course, you should be able to …
- Understand Algorithms, the fundamental component of Computer Science.
- Analyze the efficiency of algorithms using Big-O notation.
- Understand and implement various algorithm design techniques.
- Apply algorithms to solve real-world problems in areas such as sorting and optimization.
- Develop problem-solving skills and algorithmic thinking.
- Collaborate effectively in teams to design and implement algorithms.
- Communicate algorithmic concepts and solutions clearly and effectively.
Please refer to the class Schedule for weekly updates and learning objectives. This is the central page for the course, where you will also find the Syllabus, Instructor information, and other study materials. Note that the schedule page is subject to change, and the most up-to-date version will always be posted on the course website. Be sure to check it regularly.
What You’ll Learn
The course content includes but not limited to …
- Introduction to Algorithms and Data Structures
- Algorithm Analysis and Big-O Notation
- Sorting and Searching Algorithms
- Graph Algorithms (e.g., Dijkstra’s, Kruskal’s)
- Dynamic Programming and Divide-and-Conquer Strategies
- Greedy Algorithms and Approximation Algorithms
- NP-Completeness and Computational Complexity
- Practical Applications of Algorithms
- Algorithm Implementation in Python or C/C++
- Collaborative Algorithm Design and Problem Solving
- Communication of Algorithmic Concepts