Assistants: (see Piazza for hours and contact info)
TBA
Prerequisites:
CS310, CS330, and MATH125 (C or better in all)
Textbook:
Tim Roughgarden,
Algorithms Illuminated,
Omnibus Edition
Other requirements:
Access to a modern computer capable of running compiler tools (i.e. Java).
Lectures:
Lectures will be held in-person.
Course resources:
Piazza for questions and discussion. Please note that while Piazza now requests donations, it is due to a change in Piazza's business model independent from any input from the university; students should not feel obligated to provide donations.
Canvas to view grades and course materials, and to take online assessments.
GradeScope for feedback on exams and in-class assignments.
Schedule: see below for schedule
Description
Analyzes computational resources for important problem types by alternative algorithms and their associated data structures, using mathematically rigorous techniques. Specific algorithms analyzed and improved.
Outcomes
| Grade | A+ | A | A- | B+ | B | B- | C+ | C | C- | D | F |
|---|---|---|---|---|---|---|---|---|---|---|---|
| lower bound | 98 | 92 | 90 | 88 | 82 | 80 | 78 | 72 | 70 | 60 | ↓ |
Graded work in this class is individual unless otherwise specified on an assignment. Any direct contribution on an exam or assignment will be treated as a violation of George Mason's Academic Standards Code and the CS Department Honor Code, and will typically result in failing the class.
Generative AIs (including but not limited to ChatGPT, Copilot, or Gemini) should not be used to assist in completing any assignments or assessments. Any assignment solved with the help of such an AI, or derived from an AI-based solution, would be in violation of the Academic Standards Code. If using an IDE which enables generative AI by default, the AI must be disabled while working on assignments for this class. Much like using calculators to perform arithmetic, you would not learn the skill if you used a tool to solve a problem for you, and you should not present work as your own unless you have done it yourself. AIs add an additional concern, which is that they may very confidently present incorrect answers as true, which is not helpful to your learning experience.
Some kinds of participation in third-party online study sites violate the GMU Academic Standards Code: these include accessing exam questions for this class which have been uploaded by others; accessing exam or assignment answers for this class; uploading of any of the instructor's materials or exams; and uploading any of your own answers or finished work. It is your resposibility to protect your work, including protecting your computer with a password and avoiding sites which make your work publicly visible. Always consult with the professor before using these sites.
GMU upholds the Academic Standards of honesty, acknowledgement, and uniqueness of work. Please respect the importance of upholding the Academic Standards Code, since it affects the meaningfulness of your degree and the degrees of other students. As a practical matter, an understanding of algorithms has a strong potential to impact your ability to land a job and perform well in your future careers; you put yourself in the best position to gain that understanding when you rely on your own work.
Student responsibility: Students are responsible for understanding how these general expectations regarding academic standards apply to this course and any assignment or exam they participate in; students should ask their instructor for clarification on any aspect that is not clear to them.
Privacy statement
All course materials posted to Canvas or other course site are private to this class. By the Family Educational Rights and Privacy Act (FERPA), a federal law which governs the disclosure of educational records for eligible students, the professor and TAs cannot share academic documents with a different student, and any materials that identify specific students (via their name, voice, or image) must not be shared with anyone not enrolled in this class. Students must use their GMU email account to receive communications related to this class.
Student responsibility: Students are responsible for checking their GMU email regularly for course-related information, and/or ensuring that GMU email messages are forwarded to an account they do check.
Disability accomodations
Disability Services at George Mason University is committed to providing access
to learning opportunities for all students by upholding the laws that ensure equal treatment
of people with disabilities. Students seeking accommodations for this class, please first
visit Disability Services (ods@gmu.edu;
703-993-2474) for detailed information about the
Disability Services registration process. Then please discuss the approved accommodations with
the instructor. The Disability Services office can be found in Student Union Building I (SUB I),
Suite 2500.
Student responsibility: Students are responsible for registering with Disability Services and communicating about their approved accommodations with their instructor in advance of any relevant class meeting, assignment, or exam.
Title IX
As a faculty member and designated "Responsible Employee," the instructor is required to report all disclosures of sexual assault, interpersonal violence, and stalking to Mason's Title IX Coordinator, per university policy 1412. Students who wish to speak with someone confidentially, should contact the Student Support and Advocacy Center (ssac@gmu.edu; 703-993-3686) or Counseling and Psychological Services (caps@gmu.edu; 703-993-2380). Assistance may also be sought from GMU's Title IX Coordinator (titleix@gmu.edu; 703-993-8730).
Student opportunity: If you prefer to speak to someone confidentially, please contact one of Mason’s confidential employees in Student Support and Advocacy (SSAC), Counseling and Psychological Services (CAPS), Student Health Services (SHS), and/or the Office of the University Ombudsperson.
Schedule (subject to change)
| Week | Date | Topic | Assignments/Notes |
|---|---|---|---|
| Week 1 | Jan 18-24 | ||
| Introduction, Chapter 1 | First day of class Wednesday, Jan 21 | ||
| Week 2 | Jan 25-31 | Analysis Basics, Chapter 1 🅐 | |
| Asymptotic Analysis, Chapter 2 🅐 | |||
| Week 3 | Feb 1-7 | Quiz 1 (open Mon-Tue) | |
| Divide and Conquer; Master Method, Chapters 3, 4 🅣🅐 | Coding 1 assigned (Friday) | ||
| Week 4 | Feb 8-14 | Assessment 1 (Analysis); Quiz 2 (open Mon-Tue) | |
| Sorting, Chapter 5 🅟 | |||
| Week 5 | Feb 15-21 | Assessment 2 (D & C Algs); Quiz 3 (open Mon-Tue) | |
| Graphs; Graph Algorithms, Chapters 7, 8 🅟 | Coding 1 due (Friday) | ||
| Week 6 | Feb 22-28 | Assessment 3 (Sorting); Quiz 4 (open Mon-Tue) | |
| Dijkstra's Algorithm; Greedy Algorithms, Chapters 9, 10, 13, 14 🅟🅣 | Coding 2 assigned (Friday) | ||
| Week 7 | Mar 1-7 | Assessment 4 (Graph Algs) | |
| Miterm (Wednesday) | |||
| Week 8 | Mar 8-14 | No Classes | Spring Recess |
| Week 9 | Mar 15-21 | Hard Problems (P vs NP), Chapters 22, 23 🅟🅐 | Quiz 5 (open Mon-Tue) |
| Coding 2 due (Friday); Coding 3 assigned (Friday) | |||
| Week 10 | Mar 22-28 | Assessment 5 (Greedy Algs); Quiz 6 (open Mon-Tue) | |
| Minimum Spanning Trees, Chapter 15 🅟 | |||
| Week 11 | Mar 29-Apr 4 | Assessment 6 (Hard Probs); Quiz 7 (open Mon-Tue) | |
| Dynamic Programming, Chapters 16, 17 🅟🅣 | Coding 3 due (Friday); Coding 4 assigned (Friday) | ||
| Week 12 | Apr 5-11 | Quiz 8 (open Mon-Tue) | |
| Shortest Path, Chapter 18 🅟 | |||
| Week 13 | Apr 12-18 | Assessment 7 (DP Algs); Quiz 9 (open Mon-Tue) | |
| Max Flow and Min Cut, Supplementary Materials 🅟 | Coding 4 due (Friday); Coding 5 assigned (Friday) | ||
| Week 14 | Apr 19-25 | Assessment 8 (Shortest Path); Quiz 10 (open Mon-Tue) | |
| Flow Variants and Applications, Supplementary Materials 🅣🅟 | |||
| Week 15 | Apr 26-May 2 | Assessment 9 (Max Flow); Quiz 11 (open Mon-Tue) | |
| Randomized Algorithms 🅣 | Coding 5 due (Friday) | ||
| Week 16 | May 3-9 | Last day of class (Monday) | Assessment 10 (Flow Variants) |
| Exam Week | May 6-13 | Final Exam Section 002 | 1:30-4:15pm, Wednesday, May 6 |
| Final Exam Section 001 | 7:30-10:15am, Monday, May 11 |
🅐 Focuses on techniques for analyzing and evaluating algorithms.
🅟 Focuses on solutions to significant algorithmic problems.
🅣 Focuses on general algorithmic techniques applicable to a wide range of problems.