(rev. December 27, 2023)
[2023/12/27: initial edits]

Course Description
for Theory of Algorithms: CS 4440

TERM: Spring 2023

CLASS INFO FROM SCHEDULE:
🌸 20692 CS 4440 sec 002 Theory of Algorithms Lec 3.0 TuTh 11:00-12:15 B-210
🌺 20691 CS 4440 sec 001 Theory of Algorithms Lec 3.0 TuTh 14:00-15:15 B-103
INSTRUCTOR: John Sarraille, Professor of Computer Science

INSTRUCTIONAL MODE: My plan is to run the course face-to-face in the classroom as much as possible unless something, such as a quarantine, requires us to go online.

E-MAIL:john@ishi.csustan.edu

OFFICE: P-286, Professional Schools Building (also known as Demergasso-Bava Hall, DBH-286), Cal State Stanislaus

OFFICE HOURS: PROFESSOR SARRAILLE'S HOMEPAGE: http://www.cs.csustan.edu/~john/js.html

CS 4440 HOMEPAGE: http://www.cs.csustan.edu/~john/Classes/CS3750/

PREREQUISITES:

It is important that you be adequately prepared for taking this course, CS 4440.

Check with me if you have not passed both: COURSE OBJECTIVES:

The highest aims of this course are: 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: As the main course content: 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 homework assignments, a good attendance record in the face-to-face classes, evidence that you are staying current with the reading assignments, and satisfactory contributions to in-class discussions.

There will be class discussions of various problems. I will assign you to work on some of the problems in advance of the class discussions of the solutions. You will turn in notes that show your work on these problems. These problems are homework, but I grade them in a non-traditional way. You will get a pass or fail on each problem, depending on whether or not you followed the assignment directions and whether it appears to me that you made a serious effort to solve the problem. For each pass, you will receive some participation credit.

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 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.

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 don't turn in anything by the due date, you don't get credit for anything.

PARTICIPATION:

Life seldom offers us guarantees. Students don't always get good grades in all their classes. Sometimes they fail classes. They may decide they are better suited to do other things, and change majors. Some folks who start college don't finish.

College demands that the student learn actively and independently. Naturally, college makes demands on instructors too. I want my students to get as much as possible out of the course. I hope to be accessible and helpful to them.

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 traditionally graded, and normally you have my permission to team up with others to collectively figure out how to solve these problems. As part of that you may discuss the relative merits of various approaches to constructing a solution. When the time comes to actually write the solution that you have to turn in to me, you have to write it up yourself, not copy it or any part of it from someone else. It's cheating to copy from another CS 4440 student, present or past. It's also cheating to allow another student to copy from you. So don't let other students see your write-up of your homework until after the due date has passed.

On the other hand, there are certain things that are perfectly fine to use or even copy, if it helps get a solution to the problem. You may use ideas, algorithms, or program code from
  1. any printed material available for student check-out in our library,
  2. our course text, or
  3. 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 usually like it when students ask questions in class, so that everyone has a chance to benefit from the discussion, and so maybe I save some time not repeating things. However, if you want to ask something one-on-one, that's fine.

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 to me 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.

If and when we have to conduct a test online, students won't be able to communicate with me while taking the test. Instead, you'll have to 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/