(rev. February 02, 2021)
[2021/02/02: minor change to directions for office hours]
[2021/01/27: minor change to definition of satisfactory class participation]
[2021/01/26: initial edits]
Course Description
for Theory of Algorithms: CS 4440
TERM:
Spring 2021
CLASS INFO FROM SCHEDULE:
🌸 20629 CS 4440 sec 001 Theory of Algorithms Lec 3.0 TuTh 12:30-13:45
🌺 20630 CS 4440 sec 002 Theory of Algorithms Lec 3.0 TuTh 11:00-12:15
INSTRUCTOR: John Sarraille, Professor of Computer Science
INSTRUCTIONAL MODE: Mostly asynchronous but partially synchronous, you will follow a schedule for readings from the text book and listening to pre-recorded video screencasts. I will schedule some synchronous video conferencing sessions during class time for things like Q&A, discussion with the class, and providing answers to homework and quiz questions. As announced by e-mail earlier to most of you, I want you to take tests through Canvas, using Respondus Lockdown Browser and Respondus Monitor. Tests will be synchronous. In other words, you will take your quizzes and your final exam during the times scheduled by the University.
OFFICE:
P-286,
Professional Schools Building (also known as Demergasso-Bava Hall), Cal State Stanislaus
(E-Mail) OFFICE HOURS:
- MWF 15:00-16:00 (That's three o'clock to four o'clock)
- TuTh 09:30-10:30
- or ask me for an appointment at a time that works for you
- Please start your office visit by sending me an e-mail.
Please put "CS 4440" in your subject line to help me
find your message. If the need arises we can follow
up with a phone call or video meeting.
(The first day of scheduled office hours is Thursday, January 28, 2021, and
the last is Wednesday, May 19, 2021.)
E-MAIL:
john@ishi.csustan.edu
HOMEPAGE:
http://www.cs.csustan.edu/~john/js.html
PREREQUISITES:
It is important that you be adequately prepared for taking this
course, CS 4440.
Check with me if you have not passed both:
- CS 3100 (Data Structures + Algorithms), or the equivalent, and
- MATH 2300 (Discrete Structures), or the equivalent.
COURSE OBJECTIVES:
The highest aims of this course are:
- to learn how to make better algorithms,
- to know when it is not possible, or not practical, to make an algorithm any better, and
- to learn to choose an appropriate algorithm for a given problem.
One way to work toward those aims is to study algorithms and approaches to
algorithm design that are widely believed to be good for common programming
problems. At the same time, we should try to figure out what "good" means.
It is necessary that we know how to analyze the potential efficiency of an
algorithm using such tools as discrete mathematics, probability, and
statistics. We also need to study such abstractions as computational
complexity, reduction, non-determinism, and NP-completeness, in order to
better appreciate the limitations of computing machines.
It will be important that you read, write, and excecute algorithms, and
practice doing the steps involved in their analysis.
REQUIRED TEXT:
Kleinberg/Tardos
Algorithm Design
; written by Jon Kleinberg and Eva Tardos
; published by Addison Wesley
; ISBN 9780321295354 (subscr: 9780133072525)
PDFs OF TEXT SLIDES AVAILABLE HERE:
http://www.cs.princeton.edu/~wayne/kleinberg-tardos/
COURSE COVERAGE:
As background and review:
- Chapter 2 (Basics of Algorithm Analysis), and
- Chapter 3 (Graphs)
As the main course content:
- Chapter 1 (Representative Problems);
- Chapter 4 (Greedy Algorithms), sections 4.1, 4.2, 4.4, 4.5, & 4.6;
- Chapter 5 (Divide and Conquer), sections 5.1, 5.2, 5.3, & 5.4;
- Chapter 6 (Dynamic Programming), sections 6.1, 6.2, 6.3, 6.4,
6.6, 6.7, & 6.8;
- Chapter 7 (Network Flow), sections 7.1, 7.2, 7.3, 7.5, 7.7, 7.8, & 7.9;
- Chapter 8 (NP and Computational Complexity) sections 8.1, 8.2, 8.3,
8.4, & 8.5;
Possibly we'll make some adjustments to the list above.
TESTS & GRADING:
Your course grade will be based on a class participation component (=PC) and a
test component (=TC).
Satisfactory class participation means satisfactory work on assignments.
There will be class discussions of problems. I may sometimes require you to
work on problems in advance and turn in notes that "show your work."
(similar to homework assignments, but they will not be graded in
the traditional sense.) Some problems I assign may involve
programming, but not long programs.
There will be two in-term exams and a comprehensive final exam.
I'll calculate a test component of your course grade by counting your
grade on the final with a weight of 1/3. Your exam scores will be
included with a weight of 2/3, after 'adjustment'. The adjustment will
be to substitute your grade on the final in place of any exam scores that
are lower than your grade on the final.
As an example, if your scores are
80 and 70 on the exams, and 75 on the final, then
I'll average (80, 75) as your adjusted quiz average
(instead of averaging 80 and 70). That average works out to
77.5. I'll then compute your test component as
(2/3)(77.5) + (1/3)(75) = 76.67.
Your course grade will be
TC + PC/10
where TC is your test component, and PC is your participation component.
This means, to continue the example, if your test component
works out to be
76.67, but you get 100 as your participation
grade, your course grade will be
86.67,
which equates to a letter
grade of B.
For letter grades, I equate
- F with 0-60,
- D with 61-70,
- C with 71-80,
- B with 81-90, and
- A with 91-100 (or higher).
MISSED EXAMS AND LATE ASSIGNMENTS:
MY POLICY: no make-up, late, or early exams.
No acceptance of late assignments.
Rare exceptions are possible, in order to comply with university regulations and/or respond to very compelling circumstances. (Keep in mind that the final exam is designed to work as a make-up for the in-term exams.)
Get started early on your studies and/or assignments.
That way, if you run into difficulty, you
can seek help in class and/or office hours in a timely fashion.
To "survive" in a class like this, you may need to put aside "foolish pride,"
stubbornness, and/or shyness. If you find you are not making good progress in
the course, please seek help from me promptly.
It's OK to send me an e-mail. You
are entitled to get help this way. Please don't subvert your chances of
success by continuing to "spin your wheels" until it is too late.
I'll set up an online class discussion forum of some kind.
We can have class discussions about exam dates and whatever
due dates I may give you.
I may be willing to change
such dates. If you want a change in the schedule,
please bring this up (in a class discussion, preferably) as soon as possible, and not at
the last minute. (It's usually a good idea for class members to try to work
out some consensus among themselves before bringing the subject up with me.
I realize that may be more difficult during this Covid era.)
If I give you an assignment and you cannot finish it on time, please
turn in whatever you have done. Then it will be
possible to get some credit instead of
no credit. If you turn in nothing by the due date, I have to
assume you did nothing.
PARTICIPATION:
College is not for everyone. Students don't always get good grades in all their classes. Sometimes they fail classes. They may decide to change majors
to something for which they are better suited. Some who start college don't finish.
College demands that the student learn actively and independently.
Naturally, college makes demands on instructors too. I want you to get as much
as possible out of the course. I hope to be accessible and helpful to you.
Read and study everything I assign as soon as possible. Read difficult
material more than once! Attend all classes. Pay close attention. Take
notes to help you think about things and remember things. Hand write your
notes, because writing helps people learn better than typing notes (Yes!
See this article in Scientific American).
Review your notes before each class. Get started on assignments early.
Do a little work each day so that work never piles up.
When there are questions or problems related to an assignment,
you can bring them up with me in a timely manner.
Finish assignments and reading on time. Be an active learner.
Do what you can to keep class
discussion productive. Reply to questions. Ask questions and
make remarks if you feel you have something to add or if you want me to
explain something better.
RESPONSIBILITY FOR YOUR OWN WORK:
Sometimes it can be difficult for the student to figure out the difference
between cheating and using creativity to get work done more efficiently.
Here is some guidance:
Assignments: If I give you homework in this class, normally
it's not going to be graded, and normally you have my permission to team up
with others to solve these problems. You'll have to be your own judge
of whether you are working smart. I think that generally people learn more
from homework problems if they do as much as they can on their own before
starting to work with a team. Of course, if I specifically tell you
to work solo, then it's cheating if you don't.
What about cases in which I have told you to work solo on an assignment?
When your purpose is to clarify the
meaning of the directions I have given for the assignment you may
discuss those directions with other people, including your classmates,
as much as you like. You may also freely discuss the relative merits
of various general approaches to designing and engineering solutions
to an assignment.
You may use ideas, algorithms, or segments of program code from
- any printed material available for student check-out in our library,
- our course text, or
- any textbooks to which you have access.
You are permitted to share such material, as described in 1-3 above, with
other members of this class.
You may ask me for help and hints on assignments. I prefer that you ask
questions in class or a class forum, so that everyone has a chance to benefit from the
discussion.
On the other hand, if I have told you to work solo,
until the time comes for us to discuss solutions in class together,
- You must not give or accept any other kind of help.
- You may not allow any part of a solution you compose (make up) for
a homework assignment to be communicated to another member of the class
or allow such material to be communicated to you.
- A corollary to the point above is that one member of the class may
not look at the homework of another member of the class, whether
on paper or on a computer screen.
By the way, of course, it's always going to be cheating if you
avoid making an effort to solve a problem and just turn in something
you copied from someone else.
Exams: You must write your exams/tests with no discussion or help from
anyone.
The one exception is that, if you wish, you are allowed to come forward
and ask me to clarify the meaning of a test question. It will be up to me
to decide how to answer, or whether to answer at all. I will tell the class
any new information that arises from such an exchange.
That deleted part above won't work for the testing mode we will be using. Instead,
let me know if you had problems with the wording of questions when I go over the
answers with you.
Penalties: If there is compelling evidence that an assignment or exam
was not done according to the above criteria, I will withhold credit for the
assignment, lower your course grade, and/or refer the case for disciplinary
action, as I deem appropriate.
NETWORK AVAILABILITY OF COURSE MATERIALS:
I make course documents, assignments, supplements, and so on available via the
world wide web. To access the on-line CS 4440 materials, just open this URL:
https://www.cs.csustan.edu/~john/Classes/CS4440/
Also, there is a miscellaneous collection of information that you
may want to use from time to time. It is located here:
https://www.cs.csustan.edu/~john/Classes/General_Info/