home

COMP 160C: Introduction to Algorithms (Summer 2021)

On this page:
Who is teaching?
When and where is class, and what is the format?
Textbook, prerequisites, topics.
Communication: Piazza and email.
Grading
Gradescope. Submitting homework. Taking exams.
Tips on doing well
Tufts policies, and the consequences of academic dishonesty.



Instructor:
  • Greg Aloupis
    • Gmail: comp160greg    (you will not get a quick reply if you try my general Tufts email)
    • A list of TAs, office hours, and Zoom links will be maintained in Piazza.


When and where is class, and what is the format?


Non-required textbook: Introduction to Algorithms, 3rd edition, by Cormen, Leiserson, Rivest and Stein.
This is commonly just referred to as ``CLRS". More info at
MIT press.
Note: my Resources page refers to this book so you can find relevant chapters if you wish. The course doesn't explicitly rely on the book though. Also, CLRS is massive. We will not cover everything in it. See "Topics" below.

Prerequisites: Discrete math is important. Basic understanding of some data structures and probability will matter too. Overall, you should possess mathematical maturity.
See the Resources page and search for the word "prerequisite" to see when you will need to know background material.
You will probably find this course difficult if you're not comfortable with induction, recursion and proofs, or if big-O seems like a challenging concept. It is assumed that you know the basics about arrays, linked lists and trees. Knowledge of basic probability will be helpful for two or three lectures but I will recap what you need to know.
If you have not done well in discrete math or have not passed data structures, you should contact me.

Topics: This is an introduction to the design and analysis of algorithms, which involves discussing a few basic data structures as well. Many topics could fit in such a course, and not all intro courses go over exactly the same material.
We will place all emphasis on theory instead of programming. This course is about figuring out how to solve a problem before you start coding.
To see what is taught in this course, please visit the Resources page.


Communication: Piazza and email


Grading (exams)


Excused absence:
If you have a serious reason for not taking an exam, you should notify your academic advisor and/or Health Services, and of course you may CC me as well.
I cannot arrange a makeup exam if you have a predictable conflict that could be reasonably avoided. Check the exam schedule before making plans.

Important note:
The way I have taught the course until now, exam scores are typically low. It is important that you understand that exam scores are just numbers. Getting a 40 in this course is not the same as getting a 40 in a course where the median is 80. I will provide feedback and distributions after exams, so that you know where you stand.
Don't bet on getting a low score and passing because of a curve. Even though it's not easy to obtain high scores on my exams, getting under 30% is usually a strong indication that you have not comprehended the material well enough to pass the course. You might still pass with a curve, but that will not be determined until the end of the course.

Warning:
If you need credit for this course in order to graduate or maintain a scholarship, it is your responsibility to do well. There will be no extra credit options.



Gradescope: How to submit homework. How to take exams.


Tips for doing well in this course, if you find it challenging:





Everyone involved in this course is to respect the following:

Don't cheat: