Syllabus for CSE 830: Design & Theory of Algorithms

Code and course material for MSU's "CSE 830: Design and Theory of Algorithms"

Syllabus for CSE 830: Design & Theory of Algorithms

Instructor: Charles Ofria (ofria@cse.msu.edu)

Meeting Time: Tuesday/Thursday 10:20 to 11:40 (Zoom link e-mailed to students and is pinned to #general in Slack.)

Schedule & Materials: https://mercere99.github.io/CSE-830

Textbook

There are no required textbooks for this course, but I do recommend that you have one of your choice to refer to as needed. Good options include The Algorithm Design Manual, Second Edition by Steven Skiena, Springer, 2008, ISBN 1848000693 -or- Introduction to Algorithms, Third Edition by Cormen, Leiserson, Rivest, and Stein, McGraw Hill, 2009 ISBN 0262033844.

Pre-reqs

Basic fluency in at least one programming language (ideally C++ and Python), common data structures, and recursion.

Description

Analysis of algorithms. Algorithm design techniques. Efficient algorithms for classical problems. Intractable problems and techniques to cope with them.

Homework Assignments

There will be seven homework assignments, each of which will consist of programming projects, mathematical proofs, and/or short-answer questions. You may discuss homework problems with your classmates group, but may not share code or final answers. The best way to understand the subtleties of algorithmic problems is to argue about how to solve them. That said, please make sure to learn the material and do not just rely on your classmates to explain the solutions to you.

All assignments will be due at 11:59pm on the due date. You will lose 10% off your maximum grade per day late, to a cap of five days (and 50% off), after which it will not be accepted. I do understand that unexpected events befall even the most dedicated student, so I will provide one free five-day extension on a single assignment without a penalty. Please do not waste this extension or feel obligated to use it; I will require a good excuse to consider giving you another extension.

Grading

I will determine your final grade based on your scores on the homework assignments. By default, you need 90% of the points to receive a 4.0, 85% for a 3.5, 80% for a 3.0, 75% for a 2.5, 70% for a 2.0, 65% for a 1.5, and 60% for a 1.0. I reserve the right to adjust these numbers later in the term if needed.

Several other factors may also affect your final grade:

Extra Credit: Throughout the course, you will have opportunities to receive extra credit points: homework assignments and exams will have difficult questions identified as “extra credit”, and in general I will reward particularly clever answers with extra points. Extra credit is never required, and I will construct any grade curve ignoring extra-credit points. Once grades are assigned, I will consider the extra credit to boost grades up one rank (that is, one-half letter grade). If your grade is borderline, it’s always good to have some extra credit to sway our decision, but generally you should only attempt extra credit if you enjoy the challenge.

Participation: If you participate in our Zoom sessions or on Slack, you provide us with another source of information as to how well you are learning the material, and how much effort you are putting into the course. I can use this information to help counterbalance a difficulty with exams or assignments. Let’s have an active class! Class participation will never harm your grade; always ask any questions you may have about the material.

Academic Dishonesty: Because a primary goal of this course is to teach professionalism, any academic dishonesty will be viewed as evidence that this goal has not been achieved, and will be grounds for receiving a failing grade on the assignment, the exam, or in the course as a whole. Examples of academic dishonesty include (but are not limited to):

General Note

The goal of this class is for you to learn how to effectively design and implement algorithms. If anything is coming in your way of that goal, please talk with us about it. I plan to keep the class flexible to the learning styles that seem to work best for the students, so feedback is always appreciated.