Course Information and Syllabus

Date and Time

CS 140: Algorithms
Spring 2025
Tuesday and Thursday
9:35 to 10:50
Edmunds 114
Google Sheet

Instructor and Teaching Assistant

Professor Anthony Clark (Research Website)

Here are some quick highlights about me:

Teaching Philosophy

I above all aim to be a thoughtful teacher. Here are a few thoughts on my teaching mindset:

  • Failure is an important step in learning.
  • I can teach you how to be a better learner.
  • Lessons are retained longer when learning is harder.
  • You will always be supported; you are never alone.
  • You are only competing with yourself; you’ve already “made-it”.
  • Diversity, equity, and inclusion are important.
  • Honest, kind critique is essential to learning (feedback).

Habits That Help

Here are a few habits that will help you:

  • Attending office hours. It helps us both.
  • Seeing failure as a source of useful information.
  • Focusing on learning not performance.
  • Reflecting on your learning habits.
  • Regularly self-reflecting and reflecting on materials.
  • Getting started early.
  • Sticking to a schedule.
  • Actively participating in class.
  • Have a growth-mindset (failures can be remedied).

See my advising page for additional information on CS and being a student at Pomona College.

Teaching Assistants And Office Hours

Day Time Person Location
Monday 10:00 to 11:30 AM Clark Edmunds 127
Tuesday 8:15 to 10:00 PM Taylor CS Lounge
Wednesday 10:00 to 11:30 AM Clark Edmunds 127
Friday 12:00 to 1:00 PM Clark Edmunds 127

About This Course

Catalog Description: Algorithm design, computer implementation and analysis of efficiency. Discrete structures, sorting and searching, parsing, pattern matching and data management. Reducibility and theoretical limitations.

Course Learning Objectives: Upon completion of this course, students will be able to:

  • Recognize the “language of algorithms” including how to specify an algorithm and compare amongst algorithms and data structures.

  • Formulate proofs of correctness and analyze running time characteristics.

  • Contrast different algorithm paradigms and choose a suitable paradigm given a new problem.

  • Recognize and select solutions to common graph theory problems.

  • Implement and compare different algorithms and data structures based on profiling data.

  • Classify the complexity of problems and their solutions.

Course Logistics

These plans are subject to change based on our experiences and your feedback.

Class periods will be used to discuss lecture materials, work on assignments, and complete checkpoints. Occasionally, I will have you watch lecture videos prior to class so that we can focus on problem solving in class. You can find more information about lecture topics and materials in the course schedule and more information about checkpoints below.

Resources

We will not have a book for this class. But our course structure if fairly close to that of the Algorithms Illuminated book series.

Some helpful links to algorithms tutorials, lessons, and visualizations:

Grading Procedures

Throughout this semester, I will ask you to complete seven assignments and seven checkpoints. Assignments include written and programming parts (14 parts total) and checkpoints include individual and group parts (14 parts total).

We are using specifications grading for this course. Here are highlights of the grading policy:

Grade Assignments Checkpoints
A 14/14 14/14
A- 14/14 13/14
B+ 13/14 13/14
B 12/14 12/14
B- 11/14 11/14
C 10/14 10/14
D 9/14 9/14
F <9/14 <9/14

You must have the minimum number of passed assignments and checkpoints to receive the corresponding grade. For example, to receive an B, you must pass 12 assignments and 12 checkpoints.

Specifications grading:

  1. gives you a chance to receive feedback and adjust your expectations without affecting your final grade (it gives you space to learn);
  2. should eliminate any compulsion to violate the department’s Academic Honesty Policy; and
  3. will make it easier to provide critical feedback without worrying about your grade (particularly for TAs that might be your acquaintances).

Think of it as having assignments as your practice (e.g., shooting the basketball by yourself in the gym or practicing your lines in front of a mirror) and having checkpoints serve as the performance (e.g., your basketball game or live performance). These ideas, in part, come from Grading for Equity (a nice summary here).

Assignment Grading

You will submit assignments to gradescope. You may work on assignments individually or with a partner of your choice. If you’d like to be assigned a partner, please send me a message on Slack and I will randomly assign partners when I have a pool of students.

Assignments will not be graded per se; instead, you will meet with a TA and walk them through your answers and code. They will then mark your assignment as “passed” or not. You should not walk-through your assignment with a TA until you have completed your assignment. Of course, you can still visit them during mentor sessions to ask for help.

If you do not pass an assignment on the first meeting, then you will need to work on your answers, resubmit, and then schedule a new time to meet with a TA. As a rule-of-thumb, you can think of a “pass” as at least a 90% on the assignment.

Checkpoint Grading

All checkpoints are on the course schedule. If you foresee a problem with this, please let me know as soon as you can. Each checkpoint will comprise two-stages:

  1. You will take the quiz individually.
  2. You will retake the quiz in groups.

During the group part, students receive immediate, targeted feedback on their solutions from their fellow students and see alternative approaches to the problems. This makes the exam itself a valuable learning experience. — Gilley and Clarkston

I will grade checkpoints as pass or no-pass using a similar scale to the assignments (90% for a pass). To pass an individual checkpoint part you must pass or correct all questions on the checkpoint. If you have a question marked as “No-pass,” then you may correct it by:

  1. Explaining why your answer was marked “No-pass” and how it should be corrected.
  2. Creating and then solving similar problem (not all questions will have this requirement–check your feedback on gradescope).
  3. Walking me through your problem and its solution.

You do not have any limit to the number of corrections you can make during the semester or on a single checkpoint, but you only have two weeks from the original due date to complete the correction.

Group checkpoints follow the same procedure except that your entire group will be involved in the correction process.

Course Policies

Accommodations

If you have a disability (for example, mental health, learning, chronic health, physical, hearing, vision, neurological, etc.) and expect barriers related to this course, it is important to request accommodations and establish a plan. I am happy to help you work through the process, and I encourage you to contact the Student Disability Resource Center (SDRC) as soon as possible.

I also encourage you to reach out to the SDRC if you are at all interested in having a conversation. (Upwards of 20% of students have reported a disability.)

Academic Honesty and Collaboration

I encourage you to study and work on exercises with your peers (unless otherwise specified). If you are ever unsure about what constitutes acceptable collaboration, please ask!

I recommend using Slack (text, audio, or video) for communication, and using the Visual Studio Code Live Share Extension for pair programming. We will spend some time in class getting this setup, but these instructions will also be of use.

For more information, see the Computer Science Department and the Pomona College policies.

I take violations of academic honesty seriously. I believe it is important to report all instances, as any leniency can reinforce (and even teach) the wrong mindset (“I can get away with cheating at least once in each class.”).

Academic Advisory Notice

I will do my best to update you if I think you are not performing at your best or if you are not on pace to pass the class. I will first reach out to you and then use the system built-in to my.pomona.edu that will notify your advisor so you are encouraged to work with a mentor or advisor on a plan.

Attendance

I expect you to attend every class, but I will not directly penalize you for missing class. Know that there is a strong correlation between attendance and grades, and you will almost certainly be indirectly penalized.

You are responsible for any discussions, announcements, or handouts that you miss, so please reach out to me. If you need to leave class early for any reason, please let me know before class begins so that I am not concerned when you leave.

Late Submissions

Late assignments will not be accepted. However, if you plan ahead you can ask for an extension prior to the assignment deadline (at least four days).

Unless requested ahead of time, some assessments (e.g., quizzes) cannot be completed after the class period in which they are scheduled.

Feedback

If you have any question for me, I would love for you to ask them on Slack. I will enable a bot that will allow you to make comments anonymously. The CS department also has an anonymous feedback form if you would like to provide feedback outside of class channels.