CSC 240: Algorithms and Complexity

Winter 2020

Lecture: TTh 9:40–11:10am

Scott Dexter (he/him)

dextersd@alma.edu
Office: SAC 252

Mission Statement

Alma College’s mission is “to prepare graduates who think critically, serve generously, lead purposefully, and live responsibly as stewards of the world they bequeath to future generations.”

Course Description

Advanced data structures and algorithms, algorithmic analysis, and an introduction to distributed and parallel algorithms.

Learning Outcomes

At the successful completion of this course, you will:

  1. Identify, apply, and modify well-known algorithms.
  2. Identify the best type of algorithm to apply to a particular problem.
  3. Be able to assess and compare the space- and time-complexity of algorithms, and identify circumstances in which the complexity of an algorithm may render its use infeasible.
  4. Identify circumstances in which a distributed/parallel algorithm may be more feasible than a traditional algorithm.
  5. Write effective algorithms in Python, taking advantage of language-specific idioms where possible.

Course Materials

The required textbook for this course is Introduction to The Design and Analysis of Algorithms, 3rd edition, by Anany Levitin.

We will be using python at various points throughout the semester; I will generally expect you to learn enough python to get by, though we'll spend some time in class on some of the "algorithmically interesting" elements of python. I strongly encourage you to use Think Python, 2nd ed. as you come up to speed with python. You might also get something out the tutorials at hourofpython.com

I also endorse the use of PythonAnywhere; please sign up for a free account there to make it easy for us to share work and code. If you are inclined to install python on your personal machine—which I may ask you to do later in the semester—go all the way and install JupyterLab, which is a pretty nifty environment for working with python. (Alternatively, we may use a hosting service for JupyterLab that won't require you to install anything particular.)

Course Organization

I may record virtual meetings of this course. Any recordings will be available to students registered for this class. Students are expected to follow appropriate College policies related to the use of the recordings. You may only use these recordings to supplement your learning in this class. You are not permitted to reproduce, share with those not in this class, retain, or uploaded to other online environments these recordings. Doing so would be a breach of the Student Code of Conduct as it is not permitted by this syllabus addendum. If we plan any other uses for the recordings beyond this class, we will obtain appropriate consent from students identifiable in the recordings.

I am using some "nontraditional" approaches to grading in this course. Some are new to me (in that this is the first course I've used them with), and they may be new to you. My goals in arranging the course this way are twofold:

  1. I want to use our valuable class time in a way that maximizes your learning—and especially in computer science, learning usually means doing.
  2. I want your grade in the course to have a clear relationship with "how much" you learned.

I don't want this to feel confusing or complicated, so please ask me questions about things that aren't clear. (You'll be helping me understand what isn't clear in the way I'm explaining things.)

Units

Our time this semester will be divided into 6 roughly equal units (we will not be addressing all topics in the readings for each unit):

  1. Fundamentals (Chs 1–3)
  2. *-and-Conquer (Chs 4–6)
  3. Dynamic Programming (Ch 8)
  4. Optimization Techniques (Chs 9–10)
  5. Complexity (Chs 11–12)
  6. Fundamentals of Distributed/Parallel Algorithms (supplemental reading)

In-Class Activities

Our time in class will be organized along the lines of the pedagogy known as Team-Based Learning (you can also read a quick description of this here). You'll be organized into teams (probably two teams of 5-6 students each) for the entire semester; these teams only "exist" officially during class meetings; there is no team-work to be done outside of class. (In particular, "homework" you turn in must be your own work.)

Each unit will run as follows:

  1. I will give you a reading assignment that I expect you to read carefully before the first day of the unit. Your goal with this reading will be to ready yourself to work with the ideas from reading in class. That is, I won't expect you to fully "get" the reading at this point, but you should have a handle on definitions, basic concepts, and so on.
  2. At the beginning of the unit, I will give you a short multiple-choice "Readiness Quiz" based on the reading. You will take the quiz first as individuals, then again, immediately, as teams (we'll talk about how this works).
  3. After we review the quiz, I may give a short lecture on the reading, but most of the rest of the time in the unit will be spent on team activities that will bring up the central issues/problems/challenges of the unit. I will probably explain/lecture, as needed, in between activities.

30% of your course grade will depend on this work: 10% will be your indidivual quiz scores, 10% will be your team quiz scores (every team member will get the same score), and 10% will be an end-of-semester peer evaluation that reflects your teammates' judgment of your contribution to the success of the team.

Grading Policies

As I said above, 30%of your course grade will depend on what we do in class; the remaining 70% will depend on problem sets.

For the problem sets, we will use a mode of grading generally known as Specifications Grading. In essence this means:

  1. For every assignment and graded activity, there will be clear specifications characterizing "satisfactory" and "unsatisfactory" work. Your grade on every assignment will simply be one of those two designations (plus a fair amount of feedback, where appropriate). There is no "partial credit."
  2. Your grade for the course depends, crudely speaking, on how much satisfactory work you turn in—but there are lots of details, which are spelled out below. You will know, from the first day of class, exactly what you need to do to earn a particular grade, and you can allocate your time and energy accordingly.

Types of Assignments

You may be familiar with "Bloom's Levels of Learning," or "Bloom's Taxonomy," which is a way of thinking about how we acquire and apply knowledge (otherwise known as "learning"). This revised version of the taxonomy is a useful way of thinking about what you should expect to get out of a course on algorithms. For each unit this semester, you will have a problem set consisting of some "Remember/Understand" problems, some "Apply/Analyze" problems, and some "Evaluate" problems. In addition, you will have a couple options for tackling "Create" problems.

In general, "Remember/Understand" problems will be "drill"-type exercises with purely objective answers (i.e. answers that are either correct or not). "Apply/Analyze" problems will be those that ask you to apply an algorithm (or a variant) to a problem, or to explore some property, such as efficiency, of an algorithm (or a variant). "Evaluate" problems may ask you to prove important properties about an algorithm, compare it to other algorithms, identify "real world" uses of an algorithm, or develop variants of an algorithm. "Create" problems will ask you to do something such as solve a nontrivial programming problem with an algorithm. Many of these questions will not require programming to solve, but some will (especially as we go "up" the taxonomy"). In general, problems higher up in the taxonomy will require more time and independent thinking of you.

Grade Assignment

In this course, you are in control of your grade: you decide how much work you want to do, and you get the corresponding grade. The idea is that if you do a minimum amount of successful work, you'll earn a D; if you do a bit more, you'll earn a C, and so on. Here is how grades break down:

D
To earn a D,
  • provide correct answers for all the "Remember/Understand" problems in 3 of the units,
  • and satisfactory answers for the "Apply/Analyze" problems in 2 of the units.
C
To earn a C,
  • provide correct answers for all "Remember/Understand" problems in all units,
  • satisfactory answers for the "Apply/Analyze" problems in 2 of the units,
  • and satisfactory answers for the "Evaluate" problems in 1 of the units.
B
To earn a B,
  • provide correct answers for all "Remember/Understand" problems in all units,
  • satisfactory answers for the "Apply/Analyze" problems in 4 of the units,
  • satisfactory answers for the "Evaluate" problems in 2 of the units,
  • and satisfactory answers for 2 "Create" problems (there will typically be one offered for each unit).
A
To earn an A,
  • provide correct answers for all "Remember/Understand" problems in all units,
  • satisfactory answers for the "Apply/Analyze" problems in 4 of the units,
  • satisfactory answers for the "Evaluate" problems in 4 of the units,
  • satisfactory answers for 3 "Create" problems (there will typically be one offered for each unit),
  • and give a satisfactory presentation to the class on an algorithm not addressed by the course.

Given that this is an important course in the CS major, I hope each of you will aim for at least a B, but I won't judge anyone on their choices!

If you are aiming for an A, you should begin considering algorithms you'd like to present on. Chapters 4 and 7 are obvious places from which to draw. But we will not be covering every algorithm in the assigned reading, so if you're interested in one of those, talk with me about it ASAP. You may also wish to present on an algorithm or topic not directly addressed in the book; that's OK, but again you must start talking with me about your idea early on. We'll discuss what makes a satisfactory presentation early in the semester—among other things, I'll do a couple example presentations as part of my lecturing. (Note that I'm not claiming that my presentations will help you learn the material; rather, creating a presentation will help you learn the material [just as it helps me...].)

We will likely have an exam around two-thirds of the way through the course, but it will be designed as an opportunity to get additional units' credit for "Remember/Understand" and "Apply/Analyze" problems. We'll discuss this together midway through the semester. An exam like this would likely focus on the 2 or 3 units that seemed most challenging. I would advise not relying on this exam as a mechanism to "bump up your grade," but it will be an opportunity to fill in any missing areas in your gradesheet.

Final Course Grade Calculation

Your problem-set grade will be converted to a numeric value (95, 85, 75, 65) and combined as a weighted average with your in-class grade. So, you can think of your in-class grade as a modifier of your problem-set grade, if you want. Here's a little table that shows you some possibilities (you can do your own calculations for more nuanced scenarios):

In-Class Grade
Problem-Set Grade 30 20 10
A A B C
B AB BC CD
C
B C D
D C D E

Important Dates

You are more than welcome to accomplish these tasks in advance of these deadlines—there's no reason you couldn't do an A-level presentation before the break. But, barring serious medical/family issues, these are absolute deadlines; I will not accept work after these dates.

Feb 13
Deadline for committing to seek an A.
Feb 13
Unit 1 and 2 problems due.
Mar 3
Deadline to select and schedule an A-level presentation.
Mar 19
Unit 3 and 4 problems due.
Apr 13
Unit 5 and 6 problems due.

Other Course Policies

Communication and Device Usage

Coming to my office hours is the best way to get my undivided attention. When you can't make it to office hours to ask a question, contact me through Moodle messaging or my college email address. If you message me after 5pm or on the weekend, I may not respond until the next weekday.

Our course content obviously lends itself to the classroom use of laptops, tablets, and phones; I expect to make use of Moodle during class as well. However, I expect you to demonstrate your respect for yourself and others by limiting your use of these devices to classroom-relevant activities. In particular, use of email, social media, or the general web is not acceptable unless I specifically ask you to. I reserve the right to impose a grade penalty, after a warning, for inappropriate device use during class.

Final Exam

Below is the final exam policy from page 53 of the MOE:

4. Examinations:
a. Course examinations and quizzes are to be given during the regular class period as specified in the syllabus. Instructors should not give a unit exam during the last week of classes if they have scheduled a final exam during exam week.
b. Final examination week is included in the calculation of credit hours required by the College’s accreditor. Therefore, exams must be administered during the designated time period of each final exam week. Early final examinations are not permitted. If the course does not require a final exam, a class meeting must be scheduled during the designated period or another assignment requiring no less than 2.5 hours of student work per course credit must be scheduled.

Email

Students are expected to read their Alma College email on a daily basis. Important (and time-sensitive) messages about this class and other campus updates could be sent at any time, and email is one of the most common channels for sharing that information. I may not respond to emails sent after 5pm or on the weekend until the next business day.

Academic Integrity

In view of the college’s commitment to ethical integrity, it must take strong exception to behavior which is untruthful. Academic dishonesty includes the following:

Disciplinary action following dishonesty is handled by the faculty member. It may result in failure of the course involved. All infractions and actions will be reported to and recorded in the Provost’s Office. Repeated evidence of academic dishonesty is reviewed by the Provost and may involve more severe penalties.

In general, I will encourage collaboration during class, but I also expect you to demonstrate your ability to work effectively on your own. If you have questions about my policies and/or the College's policies, don't hesitate to ask.

Diversity, Inclusion, and Accessibility

I am committed to creating an inclusive classroom that respects a wide range of experiences, viewpoints, and abilities. Please don't hesitate to talk with me or the Center for Student Opportunity (see below) if there is anything I can do to increase your opportunities for learning in our classroom.

Campus resources

Accommodations for students with disabilities

Alma College is committed to providing equal opportunity for participation in all programs, services and activities for persons with disabilities. If you have a disability and you would like to request accommodations, please see Rhonda Lynn (linnrm@alma.edu) in the Center for Student Opportunity (CSO) so that such accommodations can be considered. If you currently receive accommodation letters from the CSO, please meet with me outside of class to discuss the provisions of those accommodations as soon as possible.

Writing Center

For support with your writing projects, please visit the Alma College Writing Center, which strives to assist Alma student writers at all levels of experience and in any course or major. Peer writing consultants work one-to-one with students to help at any stage of the writing process -- from brainstorming to drafting to revising to editing a final draft. The Writing Center is located in the library near the Smith Room, and it is open during the fall and winter semesters: Mondays thru Thursdays from 2-5 and 6-10 pm and on Sundays from 7-10 pm. Hours are limited during exams week. To schedule an appointment, please stop by during the Center's open hours or visit www.alma.mywconline.com.

Tutoring

Tutoring is available for this course through the Center for Student Opportunity (CSO). Please stop by the CSO and complete a tutor request form (yellow) located by the front door. You will be matched with a faculty recommended tutor within a couple of days of your request. If you have any questions or concerns regarding tutoring, please contact Rhonda Linn (linnrm@alma.edu).

Career Development

Career development can do more than help you with the job application process. Our Career Coaches are equipped to help you figure out what academic pathways make the most sense given your goals for after graduation. If you have questions about how to prepare for life after college please make an appointment with Maddie Moeggenborg (moeggenborgmm@alma.edu).

Diversity and Inclusion Office

The Office of Diversity and Inclusion at Alma College strives to provide opportunities for students to learn about self and others while creating spaces for each of us to be our most authentic selves. The diversity programming should challenge and encourage us to move beyond our comfort zones. The Office of Diversity and Inclusion is a space and resource for all students, staff, faculty and administrators to learn about our differences and how to be intentionally inclusive. For more information, or to get involved, please contact the Director of Diversity and Inclusion, Dr. Donnesha Blake at blakeda@alma.edu.

Civil Rights and Title IX

Alma College complies with all relevant federal and state laws banning discrimination in private institutions of higher education. Titles VII and IX of the Civil Rights Act are designed to protect equality of educational opportunity for all students and of employment for all faculty and staff. The full set of policies and procedures that the college has established to protect these rights are consolidated into a single document available at this link: https://www.alma.edu/live/files/3195-civil-rights-policy-november-2018. For more information, please contact our Civil Rights and Title IX Coordinator Kevin Carmody at carmodykd@alma.edu.

Starfish

Alma cares about your success! This course utilizes the Starfish Student Success platform. Starfish is an online notification system used by faculty to communicate with students and support personnel regarding academic achievements and to identify areas for improvement. In addition to awarding kudos to acknowledge excellent performance, Starfish is also used by faculty and staff to raise early alerts and to direct students to free resources such as tutoring, supplemental instruction, or career services. Starfish referrals are designed to help students identify strategies to achieve their academic goals. Students are encouraged to take advantage of the many opportunities offered at Alma to promote academic success. To access Starfish, log into inside.alma.edu and click the Starfish link. To learn more about Starfish, contact Rhonda Linn (linnrm@alma.edu) in the CSO.