Difference between revisions of "CS 3510"

From Georgia Tech Student Wiki
(cs 3510)
Line 1: Line 1:
'''CS 3510: Design and Analysis of Algorithms''' is a 3 credit hour concentration requirement for many CS threads. It provides an overview of various algorithms at a more advanced level compared to [[CS 1332|CS 1332: Data Structures and Algorithms]], and it also teaches techniques to prove their time complexity and correctness. Algorithms are nearly exclusively written in pseudocode, not an actual programming language. The course has no lab component and is taken by most CS majors. The honors version is [[CS 3511]], and a related course that may be taken afterwards is [[CS 4540|CS 4540: Advanced Algorithms]].
+
'''CS 3510''', formally known as '''Design and Analysis of Algorithms''', is a 3-credit Computer Science class taken as a thread requirement for six of the eight CS threads. Unlike CS 1332, which goes over a suite of specific algorithms, CS 3510 goes over broader categories of algorithms and algorithm design techniques, and in addition it teaches proof of correctness and proof of efficiency for algorithms. It is preceeded by [[CS 1332]], [[CS 2050]]/[[CS 2051]], and [[MATH 3012]]. It is succeeded by [[CS 4510]], [[CS 4540]], [[MATH 4150]], [[CS 6515]], and [[CS 4644|CS 4803/CS 4644]].
   
== Overview ==
+
== Workload ==
===== Topic List =====
 
This course provides an introduction to algorithm design from the mathematical side. Evaluations of algorithms are through written, proof-based homework and tests.
 
   
 
== Topic List ==
Topics include:
 
  +
# Basics of Pseudocode
 
  +
# Recurrence Relations, Big-O, and the Master Theorem
# Divide-and-conquer algorithms
+
# Divide-and-Conquer Algorithms
# Dynamic programming
+
# Dynamic Programming
# Graphs/networks
 
  +
# Graph Algorithms
# Optimization
 
  +
# Network Flow
# Hardness and approximation algorithms
 
  +
# Optimization (with some semesters going over basic Linear Programming)
  +
# NP-Completeness, Complexity, and Hardness,
  +
# Approximation Algorithms
   
 
Textbooks used in this course in the past have included:
 
Textbooks used in this course in the past have included:
Line 18: Line 19:
 
* ''Algorithm Design'' by Kleinberg and Tardos (used by Professor Dovrolis, Spring 2020)<ref>https://www.cc.gatech.edu/~dovrolis/Courses/cs3510-S20.html</ref>
 
* ''Algorithm Design'' by Kleinberg and Tardos (used by Professor Dovrolis, Spring 2020)<ref>https://www.cc.gatech.edu/~dovrolis/Courses/cs3510-S20.html</ref>
   
  +
== Prerequisite Knowledge ==
===== How it fits in the curriculum =====
 
  +
CS 3510 is the base, introductory course in the design and analysis of algorithms. The course is more math-based meaning it doesn't require a computer language. The course (or the honors version, [[CS 3511]]) is a vital stepping-point in the [[Theory]] thread before taking [[CS 4540|CS 4540: Advanced Algorithms]], a required course in the Theory thread.
 
  +
=== Algorithms ===
  +
As CS 3510 is an algorithms course, a working knowledge of basic sorting and graph algorithms is suggested. A good understanding of mergeSort and Djikstra's Single-Source Shortest-Path algorithm is a useful benchmark in assessing algorithms knowledge for the class.
  +
  +
=== Data Structures ===
  +
While there is no explicit programming in this class, a lot of algorithms are written in psuedocode, and thus, a knowledge of basic data structures and how they work is essential. In particular, arrays, trees, and graphs are the most important data structures for success in the class.
  +
  +
=== Discrete Mathematics ===
  +
An understanding of basic Set Theory, Big-O bounds, and fundamental number theory (Euclid's Algorithm, Fast Exponentiation) is useful for success in the class. Big-O is absolutely critical, while the other two are useful and will help, but are not required.
  +
  +
=== Combinatorial Mathematics ===
  +
An understanding of graph theory and recurrences is absolutely essential for CS 3510. In addition, basic combinatorial mathematics (such as permutations and combinations) is useful for the class.
  +
  +
=== Proof Writing ===
  +
Basic proof writing at the level of CS 2050/MATH 2106 is suggested, but extensive proof writing experience is not required. Most of the arguments in the class are more high-level than formal proof writing, but this varies by semester and professor.
  +
  +
== Future Outlook ==
  +
CS 3510 is the introductory course in the design and Analysis of Algorithms. The course is more math-based, and unlike most courses, it programs exclusively in pseudocode.
  +
  +
For Theory and Intelligence threads, CS 3510 is an important prerequisite for the theory courses for the two threads, namely [[CS 4510]], and [[CS 4540]]. In addition, CS 3510 is also a prerequisite for the Theory thread math requirement: [[MATH 4022]], [[MATH 4032]], and [[MATH 4150]].
   
 
== Current Registration Info ==
 
== Current Registration Info ==

Revision as of 16:42, 11 September 2021

CS 3510, formally known as Design and Analysis of Algorithms, is a 3-credit Computer Science class taken as a thread requirement for six of the eight CS threads. Unlike CS 1332, which goes over a suite of specific algorithms, CS 3510 goes over broader categories of algorithms and algorithm design techniques, and in addition it teaches proof of correctness and proof of efficiency for algorithms. It is preceeded by CS 1332, CS 2050/CS 2051, and MATH 3012. It is succeeded by CS 4510, CS 4540, MATH 4150, CS 6515, and CS 4803/CS 4644.

Workload

Topic List

  1. Basics of Pseudocode
  2. Recurrence Relations, Big-O, and the Master Theorem
  3. Divide-and-Conquer Algorithms
  4. Dynamic Programming
  5. Graph Algorithms
  6. Network Flow
  7. Optimization (with some semesters going over basic Linear Programming)
  8. NP-Completeness, Complexity, and Hardness,
  9. Approximation Algorithms

Textbooks used in this course in the past have included:

  • Algorithms by Dasgupta, Papadimitriou, and Vazirani (used by Professor Vigoda, Spring 2020)[1]
  • Algorithm Design by Kleinberg and Tardos (used by Professor Dovrolis, Spring 2020)[2]

Prerequisite Knowledge

Algorithms

As CS 3510 is an algorithms course, a working knowledge of basic sorting and graph algorithms is suggested. A good understanding of mergeSort and Djikstra's Single-Source Shortest-Path algorithm is a useful benchmark in assessing algorithms knowledge for the class.

Data Structures

While there is no explicit programming in this class, a lot of algorithms are written in psuedocode, and thus, a knowledge of basic data structures and how they work is essential. In particular, arrays, trees, and graphs are the most important data structures for success in the class.

Discrete Mathematics

An understanding of basic Set Theory, Big-O bounds, and fundamental number theory (Euclid's Algorithm, Fast Exponentiation) is useful for success in the class. Big-O is absolutely critical, while the other two are useful and will help, but are not required.

Combinatorial Mathematics

An understanding of graph theory and recurrences is absolutely essential for CS 3510. In addition, basic combinatorial mathematics (such as permutations and combinations) is useful for the class.

Proof Writing

Basic proof writing at the level of CS 2050/MATH 2106 is suggested, but extensive proof writing experience is not required. Most of the arguments in the class are more high-level than formal proof writing, but this varies by semester and professor.

Future Outlook

CS 3510 is the introductory course in the design and Analysis of Algorithms. The course is more math-based, and unlike most courses, it programs exclusively in pseudocode.

For Theory and Intelligence threads, CS 3510 is an important prerequisite for the theory courses for the two threads, namely CS 4510, and CS 4540. In addition, CS 3510 is also a prerequisite for the Theory thread math requirement: MATH 4022, MATH 4032, and MATH 4150.

Current Registration Info

In order to register for the course, you must register under a certain section as depicted by letters (A, B, C...).

Prerequisites

  • CS 2050/2051/2106 (min. grade of C)
  • CS 1332 (min. grade of C) or MATH 3012/3022 (min. grade of D)

Resources

  • CS 3510: Design and Analysis of Algorithms (Fall 2017): click here
  • CS 3510: Design and Analysis of Algorithms (Spring 2020, Vigoda): click here
  • CS 3510: Design and Analysis of Algorithms (Spring 2020, Dovrolis): click here
  • Oscar Details: click here