Course Description

Algorithms, put simply, are one of the most fundamental and important components of computer science.

Topics in this course will include the study of several key algorithms, along with the underlying data structures that support them, as well as techniques for mathematical analysis of algorithm performance.

See also the WPI course description for CS2223 Algorithms.

Learning Goals

After successful completion of this course, these are some of the skills you will be able demonstrate:

  • Perform mathematical and empirical run-time analyses of an algorithm
  • Write and modify Java implementations of several key algorithms
  • Identify opportunities for more time- or space-efficient algorithms in existing code
  • Navigate and apply Θ, Ω, and Ο notation to problems you come across

Required Text

Algorithms Fourth Edition Cover

The text we’re using for readings in this course is Algorithms Fourth Edition.

Class Effort

This course is designed to take 2 working days of effort each week, or roughly 16 hours. You’ll have four hours of virtual lectures each week.

The remaining 12 hours are key, which I assume you will divide between the readings and the homework assignments.

Some tips:

Don’t neglect the reading assignments! Algorithms can be very tricky conceptually, and you may find that you need to spend some of those hours reading a narrow part of the text.

Start homework assignments early. You may find the concepts in the homeworks themselves challenging, requiring additional reading, online questions, office hours, etc.

Programming Language

While algorithms can be written in any language, we will use Java in this course. Also note that the book uses Java.

Homework Assignments (50%)

Assignments are the core of this course. There will be 4 assignments, each targeting a different set of Algorithms concepts.

Exams (45%)

There will be two exams, a midterm and a final. Each will focus on a separate part of the course.

Participation (5%)

Participation is important, especially in our socially-distanced format! Be sure to engage in online discussions, Zoom sessions, etc.

Discussion / Questions

This term we will be using Slack for class discussion. Slack is highly catered to getting you help fast and efficiently from classmates and myself.

Rather than emailing questions to me, I encourage you to post your questions on Slack in public channels.

Here is a short guide to asking questions on Slack:

  1. Ask in public channels! Oftentimes students will have answers to technical questions, and I can answer things publicly for others to see.
  2. If you you still have problems, do the following:
    1. Create a private channel with the following format: a1-laneharrison
    2. Add staff and me to the channel
    3. Begin with a concise description of your problem and include a link to your repo and/or your current code

Grading

Your course grade comes from three parts:

  • Exams (45%)
  • Homework Assignments (50%)
  • Participation (5%)

Academic Honesty

Unless otherwise noted, all work is to be done by yourself.

You are encouraged to discuss at length with your classmates about ideas and material in the course, in preparing for quizzes and assignments, in designing visualizations and code nuances, and so on. However, all assignments, reflections, etc should be your own.

Projects may encourage teamwork, that is, in that case you are expected to work closely with your partner/(s) to solve problems and prepare a common agreed-upon solution and implementation. (A word of advice: be sure you use git to commit, push, and merge work with your teammates often. In assessing team contributions, for example, the git history often shows individual contribution very clearly.)

Note in particular that copying of any material, may it be a single sentence or a figure, from any location (including the internet) without proper acknowledgment of the source constitutes plagiarism. If in doubt, please ask for clarification.

Any violation of the WPI’s guidelines for academic integrity will result in no credit for the assignment, potentially for the entire course, and requires referral to the Student Affairs Office for disciplinary action. More information on definitions, responsibilities and procedures regarding the WPI academic honesty policy can be found online.

Late Policy

You will be allowed a one time one day late turn-in without penalty, assuming you have a legitimate reason as discussed with the professor. All other late assignments will be penalized by subtracting 30% of the total achievable points, but only if turned in within the first 24 hours after the due date. Between 24 to 48 hours late will result in a reduction of 70% of the total achievable points. Late point reductions cannot be made up by later improvements of the assignment. Certain deliverables may not allow for any late days, such as project deliverables and presentations.

I would like you to be aware of the rationale behind late policies. For one, a late policy is a measure to ensure you stay on track and do not run into the problem of “snowballing” with your other responsibilities. At a higher level, late assignments place extra burden on both staff and your fellow classmates. Staff typically allocate time to grade assignments shortly after the due date. Late assignments break this and require staff to allocate extra sessions at the expense of their other responsibilities. This, in turn, places a burden on the entire class as grading must be complete before handing grades and critical feedback back to students.

For these reasons, please make every effort to turn your projects in on time. If something comes up, reach out early rather than later.