CSE 431 Syllabus

General information:

Instructor: Emily Dolson

  • Pronouns: she/her
  • E-mail: dolsonem@cse.msu.edu (course-related contact should be through Piazza)
  • Office: EB 3582 (but I’ll be working from home this semester)

Teaching Assistants:

  • Vincent Ragusa (pronouns: he/him)
  • Ali Saffary (pronouns: he/him)

Office Hours:

  • Dolson – Mondays 4:20pm (after class, in class zoom room) and by appointment.
  • Saffary – M/W/F 10:00 am - 11:00 am (link to Zoom room on Piazza)

Textbook:

There are no required textbooks for this course. If you would like an additional reference, 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

Meeting time:

M/W 3pm-4:20, Zoom (link sent by e-mail and on Piazza)

Credit hours: 3

Pre-reqs:

CSE 331; Basic fluency in C++ and Python, common data structures, and recursion.

Description:

Advanced techniques for designing and implementing correct and efficient algorithms. A broad range of useful algorithmic theory will be covered from the perspective of utility in solving applied problems. Specific topics covered will include divide-and-conquer techniques, dynamic programming, graph algorithms, custom data structures, math tricks for rapid calculations, effective profiling, efficient algorithms for NP-Complete problems, heuristics, and generally how to evaluate and solve unfamiliar algorithmic challenges.

Course requirements:

Internet connection, computer, ability to access MediaSpace, Piazza, and Mimir. Note: if you have trouble accessing any of these resources due to geographical restrictions, talk to the instructor and we’ll figure out a solution.

Course delivery format:

This course will be delivered completely online. Synchronous meetings will be provided, but students are also allowed to take the course in an asynchronous format. We will use the following platforms:

  • Course website as an index for all course materials
  • Mimir for homework assignments
  • Piazza for all discussions outside of class time
  • Zoom (link e-mailed and on Piazza) for all synchronous class sessions and office hours. If you need help using Zoom, see this resource: http://www.cse.msu.edu/Students/Current_Undergrad/UsingZoom.php

Class Recordings:

Each class session of this course will be recorded. The recordings will be available to students registered for this class. This is intended to supplement the classroom experience. Students are expected to follow appropriate University policies and maintain the security of passwords used to access recorded lectures. Recordings may not be reproduced, shared with those not in the class, or uploaded to other online environments. Doing so may result in disciplinary action. If the instructor or another University office plan other uses for the recordings beyond this class, students identifiable in the recordings will be notified to request consent prior to such use. Note that the above restrictions apply only to recordings of class sessions. All videos recorded ahead of time by the instructor may be freely shared. Check the permissions on any supplemental videos recorded by people other than the instructor before sharing them (although most of them shouldn’t have restrictions).

Course organization

Grading:

60% Homeworks ; 20% Lecture reviews; 10% Midterm Exam ; 10% Final Exam

Homework assignments

There will be six homework assignments, each worth 10% of your final grade. Assignments will consist of programming projects, with occasional mathematical or short-answer questions. You must solve the homework on your own. You may not share code or look at other students’ code. That said, asking questions and discussing higher-level concepts on Piazza is highly encouraged. The best way to understand the subtleties of algorithmic problems is to argue about how to solve them. All assignments will be due at 11:59pm Michigan time 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. We do understand that unexpected events befall even the most dedicated student, so we will provide 5 free late days that can be used on a single assignment or spread across assignments without a penalty. Do not waste this extension or feel obligated to use it; the goal is for it to cover all unforeseen circumstances.

Lecture review assignments

There will be 15 lecture review assignments, each worth 1% - 2% of your grade. These will be due every friday at 11:59pm Michigan time. They will be a mix of multiple choice and short answer questions (no programming) covering the material in the lectures for the week. These assignments are intended to be quick (assuming you paid attention to the lectures) and serve as a way for both you and us to confirm that you’re getting the intended key information out of the lectures. These assignments may not be turned in late, but your lowest 2 scores will be dropped.

Exams

There will be two exams (a midterm and a final). One week before each exam, we will provide a detailed scoring guide and description of the possible questions so that you will know exactly what to expect. Exams will consist of a 15 minute conversation via Zoom with the instructor or a TA. We know this exam format may be new to many of you, but given the remote format of the course we think it is the best option (for those of you hoping to get a software development job in industry, it will also be good practice for technical interviews). Our goal is to do everything we can to minimize the stress associated with this exam format - note that each exam only accounts for 10% of your final grade. That said, note that if you fail an exam we may schedule a follow-up in which we audit some of your homework solutions to ensure that they are your own work.

Grading

We will determine your final grade based on your scores on the homework assignments, quizzes and exams, as described above. 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. We reserve the right to adjust these numbers later in the term if needed. Note that at the end of the semester we often receive requests from students with borderline scores to be bumped up to the next letter grade. In order to do this fairly, we need to have some additional piece of evidence beyond assignments and exams that suggests that you have mastered the material. The most likely way for you to demonstrate this is through participation. If you participate in the synchronous portion of class or on Piazza, 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. We 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. Likewise, getting “Good Question” or “Good Answer” flags on Piazza is another source of information for us to help raise your grade. 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):

  • Copying another student’s code or exam answers.
  • Using code implemented by someone else to solve the specific assigned question (i.e., don’t get someone else to do your project for you!)
  • Using any code implemented by someone else without attributing proper credit (i.e., if you take code off of StackOverflow, provide a link to it in a comment!)
  • Providing false information to an instructor about matters related to the course.
  • Exploiting loopholes in auto-grading scripts to get points on a homework without actually solving the stated problem.
  • Facilitating another student in any of these activities.

General Notes

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. We plan to keep the class flexible to the learning styles that seem to work best for the students, so feedback is always appreciated.

Policies:

  • Students are expected to watch all required videos (as indicated on the course website) either as part of the synchronous class or asynchronous on their own. Additionally, students are expected to monitor Piazza, which will be used as the communication forum for this course.
  • Inform Your Instructor of Any Accommodations Needed
  • Michigan State University is committed to providing equal opportunity for participation in all programs, services and activities. Requests for accommodations by persons with disabilities may be made by contacting the Resource Center for Persons with Disabilities at 517-884-RCPD or on the web at rcpd.msu.edu. Once your eligibility for an accommodation has been determined, you will be issued a verified individual services accommodation (“VISA”) form. Please present this form to me at the start of the term and/or two weeks prior to the accommodation date (test, project, etc). Requests received after this date will be honored whenever possible.

Drops and Adds

The last day to add this course is the end of the first week of classes. The last day to drop this course with a 100 percent refund and no grade reported is 9/28/20 (8:00 PM). The last day to drop this course with no refund and no grade reported is 10/21/20 (8:00 PM). You should immediately make a copy of your amended schedule to verify that you have added or dropped this course. The details about the academic calendar can be found at https://reg.msu.edu/ROInfo/Calendar/Academic.aspx.

Tuition refund period Details can be found at https://reg.msu.edu/ROInfo/Calendar/Academic.aspx

Religious observance:

Michigan State University has long had a policy to permit students, faculty/academic staff, and support staff to observe those holidays set aside by their chosen religious faith. If you wish to be absent from class to observe a religious holiday, make arrangements in advance with the instructor.

Final Exam Policy

can be found at https://reg.msu.edu/ROInfo/Calendar/FinalExam.aspx

The Office of Institutional Equity policies

can be found at:

  • Disability and Reasonable Accommodation Policy-https://oie.msu.edu/policies/disability-and-reasonable-accommodation-policy.html
  • Policy on RVSM- https://oie.msu.edu/policies/rvsm.html
  • Tolerance and Civility- “ MSU strives to build an academic community with living and learning environments that expects tolerance of viewpoints and civility toward others, whether at public forums, athletic events, in residential communities, classrooms or laboratories. We call upon all who participate in university events to promote tolerance and civil behavior and to hold themselves to high standards that reflect the university’s commitment to respect viewpoints that may be different from their own. Only by respecting individuals with diverse perspectives and ideas can we build an environment of civility that is conducive to advancing knowledge and transforming lives.”